From 8a6fb5f733206b15722af8f91a510b521fcf7325 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 29 Jul 2017 10:07:42 +0800 Subject: [PATCH 001/377] Library rewrite --- .babelrc | 3 + .eslintrc | 15 + .flowconfig | 6 + .gitignore | 1 + .gitmodules | 3 - .jshintrc | 19 - .travis.yml | 3 - Gruntfile.js | 216 -------- flow-typed/myLibDef.js | 1 + package.json | 49 +- src/BezierCurve.js | 36 ++ src/Bounds.js | 278 +++++++++++ src/CanvasRenderer.js | 364 ++++++++++++++ src/Color.js | 249 ++++++++++ src/Feature.js | 34 ++ src/ImageLoader.js | 100 ++++ src/Length.js | 36 ++ src/Logger.js | 19 + src/NodeContainer.js | 141 ++++++ src/NodeParser.js | 95 ++++ src/Size.js | 12 + src/StackingContext.js | 37 ++ src/TextBounds.js | 102 ++++ src/TextContainer.js | 43 ++ src/Util.js | 4 + src/Vector.js | 20 + src/clone.js | 104 ---- src/color.js | 272 ----------- src/core.js | 155 ------ src/dummyimagecontainer.js | 22 - src/fabric | 1 - src/font.js | 52 -- src/fontmetrics.js | 14 - src/framecontainer.js | 31 -- src/gradientcontainer.js | 21 - src/imagecontainer.js | 19 - src/imageloader.js | 157 ------ src/index.js | 49 ++ src/lineargradientcontainer.js | 102 ---- src/log.js | 8 - src/nodecontainer.js | 296 ----------- src/nodeparser.js | 869 --------------------------------- src/parsing/background.js | 366 ++++++++++++++ src/parsing/border.js | 49 ++ src/parsing/borderRadius.js | 15 + src/parsing/display.js | 111 +++++ src/parsing/float.js | 26 + src/parsing/font.js | 38 ++ src/parsing/letterSpacing.js | 10 + src/parsing/padding.js | 11 + src/parsing/position.js | 27 + src/parsing/textDecoration.js | 88 ++++ src/parsing/textTransform.js | 24 + src/parsing/transform.js | 49 ++ src/parsing/zIndex.js | 15 + src/proxy.js | 95 ---- src/proxyimagecontainer.js | 21 - src/pseudoelementcontainer.js | 38 -- src/renderer.js | 108 ---- src/renderers/canvas.js | 181 ------- src/stackingcontext.js | 18 - src/support.js | 51 -- src/svgcontainer.js | 52 -- src/svgnodecontainer.js | 25 - src/textcontainer.js | 33 -- src/utils.js | 169 ------- src/webkitgradientcontainer.js | 10 - src/xhr.js | 22 - tests/test.js | 9 +- webpack.config.js | 21 + 70 files changed, 2521 insertions(+), 3219 deletions(-) create mode 100644 .babelrc create mode 100644 .eslintrc create mode 100644 .flowconfig delete mode 100644 .gitmodules delete mode 100644 .jshintrc delete mode 100644 Gruntfile.js create mode 100644 flow-typed/myLibDef.js create mode 100644 src/BezierCurve.js create mode 100644 src/Bounds.js create mode 100644 src/CanvasRenderer.js create mode 100644 src/Color.js create mode 100644 src/Feature.js create mode 100644 src/ImageLoader.js create mode 100644 src/Length.js create mode 100644 src/Logger.js create mode 100644 src/NodeContainer.js create mode 100644 src/NodeParser.js create mode 100644 src/Size.js create mode 100644 src/StackingContext.js create mode 100644 src/TextBounds.js create mode 100644 src/TextContainer.js create mode 100644 src/Util.js create mode 100644 src/Vector.js delete mode 100644 src/clone.js delete mode 100644 src/color.js delete mode 100644 src/core.js delete mode 100644 src/dummyimagecontainer.js delete mode 160000 src/fabric delete mode 100644 src/font.js delete mode 100644 src/fontmetrics.js delete mode 100644 src/framecontainer.js delete mode 100644 src/gradientcontainer.js delete mode 100644 src/imagecontainer.js delete mode 100644 src/imageloader.js create mode 100644 src/index.js delete mode 100644 src/lineargradientcontainer.js delete mode 100644 src/log.js delete mode 100644 src/nodecontainer.js delete mode 100644 src/nodeparser.js create mode 100644 src/parsing/background.js create mode 100644 src/parsing/border.js create mode 100644 src/parsing/borderRadius.js create mode 100644 src/parsing/display.js create mode 100644 src/parsing/float.js create mode 100644 src/parsing/font.js create mode 100644 src/parsing/letterSpacing.js create mode 100644 src/parsing/padding.js create mode 100644 src/parsing/position.js create mode 100644 src/parsing/textDecoration.js create mode 100644 src/parsing/textTransform.js create mode 100644 src/parsing/transform.js create mode 100644 src/parsing/zIndex.js delete mode 100644 src/proxy.js delete mode 100644 src/proxyimagecontainer.js delete mode 100644 src/pseudoelementcontainer.js delete mode 100644 src/renderer.js delete mode 100644 src/renderers/canvas.js delete mode 100644 src/stackingcontext.js delete mode 100644 src/support.js delete mode 100644 src/svgcontainer.js delete mode 100644 src/svgnodecontainer.js delete mode 100644 src/textcontainer.js delete mode 100644 src/utils.js delete mode 100644 src/webkitgradientcontainer.js delete mode 100644 src/xhr.js create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..478397bf3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["es2015", "flow"] +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..024de94a0 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,15 @@ +{ + "parser": "babel-eslint", + "plugins": [ + "prettier" + ], + "rules": { + "prettier/prettier": ["error", { + "singleQuote": true, + "bracketSpacing": false, + "parser": "flow", + "tabWidth": 4, + "printWidth": 100 + }] + } +} diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 000000000..72d12a0bf --- /dev/null +++ b/.flowconfig @@ -0,0 +1,6 @@ +[ignore] +[include] +[libs] +./flow-typed +[options] +[lints] diff --git a/.gitignore b/.gitignore index d3905c481..a91bd1678 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/dist /nbproject/ image.jpg /.project diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index d630f8d01..000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/fabric"] - path = src/fabric - url = https://github.com/kangax/fabric.js.git diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 77ec1aff5..000000000 --- a/.jshintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": false, - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "boss": true, - "eqnull": true, - "browser": true, - "node": true, - "indent": 4, - "globals": { - "jQuery": true - }, - "predef": ["Promise", "define"] -} diff --git a/.travis.yml b/.travis.yml index a61f79529..1f576e28a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,9 +8,6 @@ env: - secure: YI+YbTOGf2x4fPMKW+KhJiZWswoXT6xOKGwLfsQsVwmFX1LerJouil5D5iYOQuL4FE3pNaoJSNakIsokJQuGKJMmnPc8rdhMZuBJBk6MRghurE2Xe9qBHfuUBPlfD61nARESm4WDcyMwM0QVYaOKeY6aIpZ91qbUbyc60EEx3C4= addons: sauce_connect: true -before_script: -- npm install -g grunt-cli -- npm install -g uglify-js notifications: webhooks: urls: diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index af9004605..000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,216 +0,0 @@ -/*global module:false*/ -var _ = require('lodash'), path = require('path'); -var proxy = require('html2canvas-proxy'); - -module.exports = function(grunt) { - - var meta = { - banner: '/*\n <%= pkg.title || pkg.name %> <%= pkg.version %>' + - '<%= pkg.homepage ? " <" + pkg.homepage + ">" : "" %>' + '\n' + - ' Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' + - '\n\n Released under <%= _.pluck(pkg.licenses, "type").join(", ") %> License\n*/\n' - }; - - var browsers = { - chrome: { - browserName: "chrome", - platform: "Windows 7", - version: "39" - }, - firefox: { - browserName: "firefox", - version: "15", - platform: "Windows 7" - }, - ie9: { - browserName: "internet explorer", - version: "9", - platform: "Windows 7" - }, - ie10: { - browserName: "internet explorer", - version: "10", - platform: "Windows 8" - }, - ie11: { - browserName: "internet explorer", - version: "11", - platform: "Windows 8.1" - }, - chromeOSX:{ - browserName: "chrome", - platform: "OS X 10.8", - version: "39" - } - }; - grunt.initConfig({ - - pkg: grunt.file.readJSON('package.json'), - - browserify: { - dist: { - src: ['src/core.js'], - dest: 'dist/<%= pkg.name %>.js', - options: { - browserifyOptions: { - standalone: 'html2canvas' - }, - banner: meta.banner, - plugin: [ - [ "browserify-derequire" ] - ] - } - }, - svg: { - src: [ - 'src/fabric/dist/fabric.js' - ], - dest: 'dist/<%= pkg.name %>.svg.js', - options:{ - browserifyOptions: { - standalone: 'html2canvas.svg' - }, - banner: meta.banner, - plugin: [ - [ "browserify-derequire" ] - ] - } - } - }, - connect: { - server: { - options: { - port: 8080, - base: './', - keepalive: true - } - }, - altServer: { - options: { - port: 8083, - base: './' - } - }, - cors: { - options: { - port: 8081, - base: './', - middleware: function(connect, options) { - return [ - function(req, res, next) { - if (req.url !== '/tests/assets/image2.jpg') { - next(); - return; - } - res.setHeader("Access-Control-Allow-Origin", "*"); - res.end(require("fs").readFileSync('tests/assets/image2.jpg')); - } - ]; - } - } - }, - proxy: { - options: { - port: 8082, - middleware: function(connect, options) { - return [ - function(req, res, next) { - res.jsonp = function(content) { - res.end(req.query.callback + "(" + JSON.stringify(content) + ")"); - }; - next(); - }, - proxy() - ]; - } - } - }, - ci: { - options: { - port: 8080, - base: './' - } - } - }, - execute: { - fabric: { - options: { - args: ['modules=' + ['text','serialization', - 'parser', 'gradient', 'pattern', 'shadow', 'freedrawing', - 'image_filters', 'serialization'].join(","), 'no-es5-compat', 'dest=' + path.resolve(__dirname, 'src/fabric/dist/') + '/'] - }, - src: ['src/fabric/build.js'] - } - }, - uglify: { - dist: { - src: ['<%= browserify.dist.dest %>'], - dest: 'dist/<%= pkg.name %>.min.js' - }, - svg: { - src: ['<%= browserify.svg.dest %>'], - dest: 'dist/<%= pkg.name %>.svg.min.js' - }, - options: { - banner: meta.banner - } - }, - watch: { - files: ['src/**/*', '!src/fabric/**/*'], - tasks: ['jshint', 'build'] - }, - jshint: { - all: ['src/*.js', 'src/renderers/*.js'], - options: grunt.file.readJSON('./.jshintrc') - }, - mochacli: { - options: { - reporter: 'spec' - }, - all: ['tests/node/*.js'] - }, - mocha_phantomjs: { - all: ['tests/mocha/**/*.html'] - }, - mocha_webdriver: browsers, - webdriver: browsers - }); - - grunt.registerTask('webdriver', 'Browser render tests', function(browser, test) { - var selenium = require("./tests/selenium.js"); - var done = this.async(); - var browsers = (browser) ? [grunt.config.get(this.name + "." + browser)] : _.values(grunt.config.get(this.name)); - selenium.tests(browsers, test).catch(function() { - done(false); - }).finally(function() { - console.log("Done"); - done(); - }); - }); - - grunt.registerTask('mocha_webdriver', 'Browser mocha tests', function(browser, test) { - var selenium = require("./tests/mocha/selenium.js"); - var done = this.async(); - var browsers = (browser) ? [grunt.config.get(this.name + "." + browser)] : _.values(grunt.config.get(this.name)); - selenium.tests(browsers, test).catch(function() { - done(false); - }).finally(function() { - done(); - }); - }); - - grunt.loadNpmTasks('grunt-browserify'); - grunt.loadNpmTasks('grunt-mocha-phantomjs'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-connect'); - grunt.loadNpmTasks('grunt-execute'); - grunt.loadNpmTasks('grunt-mocha-cli'); - - grunt.registerTask('server', ['connect:cors', 'connect:proxy', 'connect:altServer', 'connect:server']); - grunt.registerTask('build', ['execute', 'browserify', 'uglify']); - grunt.registerTask('default', ['jshint', 'build', 'mochacli', 'connect:altServer', 'mocha_phantomjs']); - grunt.registerTask('travis', ['jshint', 'build', 'connect:altServer', 'connect:ci', 'connect:proxy', 'connect:cors', 'mocha_phantomjs', 'webdriver']); - -}; diff --git a/flow-typed/myLibDef.js b/flow-typed/myLibDef.js new file mode 100644 index 000000000..7d9a15d49 --- /dev/null +++ b/flow-typed/myLibDef.js @@ -0,0 +1 @@ +declare var __DEV__: boolean; diff --git a/package.json b/package.json index abc62d4f6..4b1f543b3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "html2canvas", "description": "Screenshots with JavaScript", "main": "dist/html2canvas.js", - "version": "0.5.0-beta4", + "version": "1.0.0-alpha.1", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", @@ -20,32 +20,31 @@ "url": "https://github.com/niklasvh/html2canvas/issues" }, "devDependencies": { - "base64-arraybuffer": "^0.1.5", - "bluebird": "^3.0.6", - "browserify-derequire": "^0.9.4", - "grunt": "^0.4.5", - "grunt-browserify": "^4.0.1", - "grunt-cli": "^0.1.13", - "grunt-contrib-connect": "^0.11.2", - "grunt-contrib-jshint": "^0.11.3", - "grunt-contrib-uglify": "^0.11.0", - "grunt-contrib-watch": "^0.6.1", - "grunt-execute": "^0.2.2", - "grunt-mocha-cli": "^1.12.0", - "grunt-mocha-phantomjs": "^2.0.0", - "html2canvas-proxy": "0.0.5", - "humanize-duration": "^2.0.1", - "lodash": "^3.10.1", - "pngjs": "^2.2.0", - "requirejs": "^2.1.20", - "sauce-connect-launcher": "^0.13.0", - "wd": "^0.4.0" + "babel-cli": "6.24.1", + "babel-core": "6.25.0", + "babel-eslint": "7.2.3", + "babel-loader": "7.1.1", + "babel-preset-es2015": "6.24.1", + "babel-preset-flow": "6.23.0", + "base64-arraybuffer": "0.1.5", + "eslint": "4.2.0", + "eslint-plugin-prettier": "^2.1.2", + "flow-bin": "0.50.0", + "prettier": "1.5.3", + "rimraf": "2.6.1", + "webpack": "3.4.1" }, "scripts": { - "test": "grunt travis --verbose", - "start": "grunt server", - "sauceconnect": "tests/sauceconnect.js" + "build": "rimraf dist/ && babel src/ -d dist/npm/", + "build:browser": "webpack", + "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"src/**/*.js\"", + "flow": "flow", + "lint": "eslint src/**", + "test": "npm run flow && npm run lint" }, "homepage": "http://html2canvas.hertzen.com", - "license": "MIT" + "license": "MIT", + "dependencies": { + "punycode": "2.1.0" + } } diff --git a/src/BezierCurve.js b/src/BezierCurve.js new file mode 100644 index 000000000..458125d81 --- /dev/null +++ b/src/BezierCurve.js @@ -0,0 +1,36 @@ +import Vector from './Vector'; + +export default class BezierCurve { + start: Vector; + startControl: Vector; + endControl: Vector; + end: Vector; + + constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) { + this.start = start; + this.startControl = startControl; + this.endControl = endControl; + this.end = end; + } + + lerp(a: Vector, b: Vector, t: number): Vector { + return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t); + } + + subdivide(t: number): [BezierCurve, BezierCurve] { + const ab = this.lerp(this.start, this.startControl, t); + const bc = this.lerp(this.startControl, this.endControl, t); + const cd = this.lerp(this.endControl, this.end, t); + const abbc = this.lerp(ab, bc, t); + const bccd = this.lerp(bc, cd, t); + const dest = this.lerp(abbc, bccd, t); + return [ + new BezierCurve(this.start, ab, abbc, dest), + new BezierCurve(dest, bccd, cd, this.end) + ]; + } + + reverse(): BezierCurve { + return new BezierCurve(this.end, this.endControl, this.startControl, this.start); + } +} diff --git a/src/Bounds.js b/src/Bounds.js new file mode 100644 index 000000000..5bab812d3 --- /dev/null +++ b/src/Bounds.js @@ -0,0 +1,278 @@ +/* @flow */ +'use strict'; + +import type {Border, BorderSide} from './parsing/border'; +import type {BorderRadius} from './parsing/borderRadius'; +import type {Padding} from './parsing/padding'; + +import Vector from './Vector'; +import BezierCurve from './BezierCurve'; + +export type Path = Array; + +const TOP = 0; +const RIGHT = 1; +const BOTTOM = 2; +const LEFT = 3; + +export type BoundCurves = { + topLeftOuter: [BezierCurve, BezierCurve], + topLeftInner: [BezierCurve, BezierCurve], + topRightOuter: [BezierCurve, BezierCurve], + topRightInner: [BezierCurve, BezierCurve], + bottomRightOuter: [BezierCurve, BezierCurve], + bottomRightInner: [BezierCurve, BezierCurve], + bottomLeftOuter: [BezierCurve, BezierCurve], + bottomLeftInner: [BezierCurve, BezierCurve] +}; + +export class Bounds { + top: number; + left: number; + width: number; + height: number; + + constructor(x: number, y: number, w: number, h: number) { + this.left = x; + this.top = y; + this.width = w; + this.height = h; + } + + static fromClientRect(clientRect: ClientRect): Bounds { + return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height); + } +} + +export const parseBounds = (node: HTMLElement, isTransformed: boolean): Bounds => { + return isTransformed ? offsetBounds(node) : Bounds.fromClientRect(node.getBoundingClientRect()); +}; + +const offsetBounds = (node: HTMLElement): Bounds => { + const parent = + node.offsetParent instanceof HTMLElement + ? offsetBounds(node.offsetParent) + : {top: 0, left: 0}; + + return new Bounds( + node.offsetLeft + parent.left, + node.offsetTop + parent.top, + node.offsetWidth, + node.offsetHeight + ); +}; + +export const calculatePaddingBox = (bounds: Bounds, borders: Array): Bounds => { + return new Bounds( + bounds.left + borders[LEFT].borderWidth, + bounds.top + borders[TOP].borderWidth, + bounds.width - (borders[RIGHT].borderWidth + borders[LEFT].borderWidth), + bounds.height - (borders[TOP].borderWidth + borders[BOTTOM].borderWidth) + ); +}; + +export const calculateContentBox = ( + bounds: Bounds, + padding: Padding, + borders: Array +): Bounds => { + // TODO support percentage paddings + const paddingTop = padding[TOP].value; + const paddingRight = padding[RIGHT].value; + const paddingBottom = padding[BOTTOM].value; + const paddingLeft = padding[LEFT].value; + + return new Bounds( + bounds.left + paddingLeft + borders[LEFT].borderWidth, + bounds.top + paddingTop + borders[TOP].borderWidth, + bounds.width - + (borders[RIGHT].borderWidth + borders[LEFT].borderWidth + paddingLeft + paddingRight), + bounds.height - + (borders[TOP].borderWidth + borders[BOTTOM].borderWidth + paddingTop + paddingBottom) + ); +}; + +export const parsePathForBorder = (curves: BoundCurves, borderSide: BorderSide): Path => { + switch (borderSide) { + case TOP: + return createPathFromCurves( + curves.topLeftOuter, + curves.topLeftInner, + curves.topRightOuter, + curves.topRightInner + ); + case RIGHT: + return createPathFromCurves( + curves.topRightOuter, + curves.topRightInner, + curves.bottomRightOuter, + curves.bottomRightInner + ); + case BOTTOM: + return createPathFromCurves( + curves.bottomRightOuter, + curves.bottomRightInner, + curves.bottomLeftOuter, + curves.bottomLeftInner + ); + default: + return createPathFromCurves( + curves.bottomLeftOuter, + curves.bottomLeftInner, + curves.topLeftOuter, + curves.topLeftInner + ); + } +}; + +const createPathFromCurves = ( + outer1: [BezierCurve, BezierCurve], + inner1: [BezierCurve, BezierCurve], + outer2: [BezierCurve, BezierCurve], + inner2: [BezierCurve, BezierCurve] +): Path => { + const path = []; + path.push(outer1[1]); + path.push(outer2[0]); + path.push(inner2[0].reverse()); + path.push(inner1[1].reverse()); + + return path; +}; + +export const parseBoundCurves = ( + bounds: Bounds, + borders: Array, + borderRadius: Array +): BoundCurves => { + // TODO support percentage borderRadius + const tlh = + borderRadius[0][0].value < bounds.width / 2 ? borderRadius[0][0].value : bounds.width / 2; + const tlv = + borderRadius[0][1].value < bounds.height / 2 ? borderRadius[0][1].value : bounds.height / 2; + const trh = + borderRadius[1][0].value < bounds.width / 2 ? borderRadius[1][0].value : bounds.width / 2; + const trv = + borderRadius[1][1].value < bounds.height / 2 ? borderRadius[1][1].value : bounds.height / 2; + const brh = + borderRadius[2][0].value < bounds.width / 2 ? borderRadius[2][0].value : bounds.width / 2; + const brv = + borderRadius[2][1].value < bounds.height / 2 ? borderRadius[2][1].value : bounds.height / 2; + const blh = + borderRadius[3][0].value < bounds.width / 2 ? borderRadius[3][0].value : bounds.width / 2; + const blv = + borderRadius[3][1].value < bounds.height / 2 ? borderRadius[3][1].value : bounds.height / 2; + + const topWidth = bounds.width - trh; + const rightHeight = bounds.height - brv; + const bottomWidth = bounds.width - brh; + const leftHeight = bounds.height - blv; + + return { + topLeftOuter: getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT).subdivide( + 0.5 + ), + topLeftInner: getCurvePoints( + bounds.left + borders[3].borderWidth, + bounds.top + borders[0].borderWidth, + Math.max(0, tlh - borders[3].borderWidth), + Math.max(0, tlv - borders[0].borderWidth), + CORNER.TOP_LEFT + ).subdivide(0.5), + topRightOuter: getCurvePoints( + bounds.left + topWidth, + bounds.top, + trh, + trv, + CORNER.TOP_RIGHT + ).subdivide(0.5), + topRightInner: getCurvePoints( + bounds.left + Math.min(topWidth, bounds.width + borders[3].borderWidth), + bounds.top + borders[0].borderWidth, + topWidth > bounds.width + borders[3].borderWidth ? 0 : trh - borders[3].borderWidth, + trv - borders[0].borderWidth, + CORNER.TOP_RIGHT + ).subdivide(0.5), + bottomRightOuter: getCurvePoints( + bounds.left + bottomWidth, + bounds.top + rightHeight, + brh, + brv, + CORNER.BOTTOM_RIGHT + ).subdivide(0.5), + bottomRightInner: getCurvePoints( + bounds.left + Math.min(bottomWidth, bounds.width - borders[3].borderWidth), + bounds.top + Math.min(rightHeight, bounds.height + borders[0].borderWidth), + Math.max(0, brh - borders[1].borderWidth), + brv - borders[2].borderWidth, + CORNER.BOTTOM_RIGHT + ).subdivide(0.5), + bottomLeftOuter: getCurvePoints( + bounds.left, + bounds.top + leftHeight, + blh, + blv, + CORNER.BOTTOM_LEFT + ).subdivide(0.5), + bottomLeftInner: getCurvePoints( + bounds.left + borders[3].borderWidth, + bounds.top + leftHeight, + Math.max(0, blh - borders[3].borderWidth), + blv - borders[2].borderWidth, + CORNER.BOTTOM_LEFT + ).subdivide(0.5) + }; +}; + +const CORNER = { + TOP_LEFT: 0, + TOP_RIGHT: 1, + BOTTOM_RIGHT: 2, + BOTTOM_LEFT: 3 +}; + +type Corner = $Values; + +const getCurvePoints = ( + x: number, + y: number, + r1: number, + r2: number, + position: Corner +): BezierCurve => { + const kappa = 4 * ((Math.sqrt(2) - 1) / 3); + const ox = r1 * kappa; // control point offset horizontal + const oy = r2 * kappa; // control point offset vertical + const xm = x + r1; // x-middle + const ym = y + r2; // y-middle + + switch (position) { + case CORNER.TOP_LEFT: + return new BezierCurve( + new Vector(x, ym), + new Vector(x, ym - oy), + new Vector(xm - ox, y), + new Vector(xm, y) + ); + case CORNER.TOP_RIGHT: + return new BezierCurve( + new Vector(x, y), + new Vector(x + ox, y), + new Vector(xm, ym - oy), + new Vector(xm, ym) + ); + case CORNER.BOTTOM_RIGHT: + return new BezierCurve( + new Vector(xm, y), + new Vector(xm, y + oy), + new Vector(x + ox, ym), + new Vector(x, ym) + ); + } + return new BezierCurve( + new Vector(xm, ym), + new Vector(xm - ox, ym), + new Vector(x, y + oy), + new Vector(x, y) + ); +}; diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js new file mode 100644 index 000000000..ec3798852 --- /dev/null +++ b/src/CanvasRenderer.js @@ -0,0 +1,364 @@ +/* @flow */ +'use strict'; +import type Color from './Color'; +import type Size from './Size'; +import type {Path, BoundCurves} from './Bounds'; +import type {TextBounds} from './TextBounds'; +import type {BackgroundImage} from './parsing/background'; +import type {Border, BorderSide} from './parsing/border'; + +import Vector from './Vector'; +import BezierCurve from './BezierCurve'; + +import type NodeContainer from './NodeContainer'; +import type TextContainer from './TextContainer'; +import type {ImageStore} from './ImageLoader'; +import type StackingContext from './StackingContext'; + +import { + calculateBackgroundSize, + calculateBackgroundPosition, + calculateBackgroundRepeatPath +} from './parsing/background'; +import {BORDER_STYLE} from './parsing/border'; +import { + parseBoundCurves, + parsePathForBorder, + calculateContentBox, + calculatePaddingBox +} from './Bounds'; + +export type RenderOptions = { + scale: number, + backgroundColor: ?Color, + imageStore: ImageStore +}; + +export default class CanvasRenderer { + canvas: HTMLCanvasElement; + ctx: CanvasRenderingContext2D; + options: RenderOptions; + + constructor(canvas: HTMLCanvasElement, options: RenderOptions) { + this.canvas = canvas; + this.ctx = canvas.getContext('2d'); + this.options = options; + } + + renderNode(container: NodeContainer) { + this.renderNodeBackgroundAndBorders(container); + this.renderNodeContent(container); + } + + renderNodeContent(container: NodeContainer) { + if (container.textNodes.length) { + this.ctx.fillStyle = container.style.color.toString(); + this.ctx.font = [ + container.style.font.fontStyle, + container.style.font.fontVariant, + container.style.font.fontWeight, + container.style.font.fontSize, + container.style.font.fontFamily + ] + .join(' ') + .split(',')[0]; + container.textNodes.forEach(this.renderTextNode, this); + } + + if (container.image) { + const image = this.options.imageStore.get(container.image); + if (image) { + const contentBox = calculateContentBox( + container.bounds, + container.style.padding, + container.style.border + ); + const width = typeof image.width === 'number' ? image.width : contentBox.width; + const height = typeof image.height === 'number' ? image.height : contentBox.height; + + this.ctx.drawImage( + image, + 0, + 0, + width, + height, + contentBox.left, + contentBox.top, + contentBox.width, + contentBox.height + ); + } + } + } + + renderNodeBackgroundAndBorders(container: NodeContainer) { + const curvePoints = parseBoundCurves( + container.bounds, + container.style.border, + container.style.borderRadius + ); + + this.renderBackground(container); + container.style.border.forEach((border, side) => { + this.renderBorder(border, side, curvePoints); + }); + } + + renderTextNode(textContainer: TextContainer) { + textContainer.bounds.forEach(this.renderText, this); + } + + renderText(text: TextBounds) { + this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); + } + + renderBackground(container: NodeContainer) { + if (container.bounds.height > 0 && container.bounds.width > 0) { + this.renderBackgroundColor(container); + this.renderBackgroundImage(container); + } + } + + renderBackgroundColor(container: NodeContainer) { + if (!container.style.background.backgroundColor.isTransparent()) { + this.rectangle( + container.bounds.left, + container.bounds.top, + container.bounds.width, + container.bounds.height, + container.style.background.backgroundColor + ); + } + } + + renderBackgroundImage(container: NodeContainer) { + container.style.background.backgroundImage.forEach(backgroundImage => { + if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { + this.renderBackgroundRepeat(container, backgroundImage); + } + }); + } + + renderBackgroundRepeat(container: NodeContainer, background: BackgroundImage) { + const image = this.options.imageStore.get(background.source.args[0]); + if (image) { + const bounds = container.bounds; + const paddingBox = calculatePaddingBox(bounds, container.style.border); + const size = calculateBackgroundSize(background, image, bounds); + const position = calculateBackgroundPosition(background.position, size, bounds); + const path = calculateBackgroundRepeatPath(background, position, size, paddingBox); + this.path(path); + const offsetX = Math.round(paddingBox.left + position.x); + const offsetY = Math.round(paddingBox.top + position.y); + this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, size), 'repeat'); + this.ctx.translate(offsetX, offsetY); + this.ctx.fill(); + this.ctx.translate(-offsetX, -offsetY); + } + } + + resizeImage(image: HTMLImageElement, size: Size) { + if (image.width === size.width && image.height === size.height) { + return image; + } + + const canvas = document.createElement('canvas'); + canvas.width = size.width; + canvas.height = size.height; + const ctx = canvas.getContext('2d'); + ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height); + return canvas; + } + + renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) { + if (border.borderStyle !== BORDER_STYLE.NONE && !border.borderColor.isTransparent()) { + const path = parsePathForBorder(curvePoints, side); + this.path(path); + this.ctx.fillStyle = border.borderColor.toString(); + this.ctx.fill(); + } + } + + path(path: Path) { + this.ctx.beginPath(); + path.forEach((point, index) => { + const start = point instanceof Vector ? point : point.start; + if (index === 0) { + this.ctx.moveTo(start.x, start.y); + } else { + this.ctx.lineTo(start.x, start.y); + } + + if (point instanceof BezierCurve) { + this.ctx.bezierCurveTo( + point.startControl.x, + point.startControl.y, + point.endControl.x, + point.endControl.y, + point.end.x, + point.end.y + ); + } + }); + this.ctx.closePath(); + } + + rectangle(x: number, y: number, width: number, height: number, color: Color) { + this.ctx.fillStyle = color.toString(); + this.ctx.fillRect(x, y, width, height); + } + + renderStack(stack: StackingContext) { + this.ctx.globalAlpha = stack.getOpacity(); + const transform = stack.container.style.transform; + if (transform !== null) { + this.ctx.save(); + this.ctx.translate( + stack.container.bounds.left + transform.transformOrigin[0].value, + stack.container.bounds.top + transform.transformOrigin[1].value + ); + this.ctx.transform( + transform.transform[0], + transform.transform[1], + transform.transform[2], + transform.transform[3], + transform.transform[4], + transform.transform[5] + ); + this.ctx.translate( + -(stack.container.bounds.left + transform.transformOrigin[0].value), + -(stack.container.bounds.top + transform.transformOrigin[1].value) + ); + } + const [ + negativeZIndex, + zeroOrAutoZIndexOrTransformedOrOpacity, + positiveZIndex, + nonPositionedFloats, + nonPositionedInlineLevel + ] = splitStackingContexts(stack); + const [inlineLevel, nonInlineLevel] = splitDescendants(stack); + + // https://www.w3.org/TR/css-position-3/#painting-order + // 1. the background and borders of the element forming the stacking context. + this.renderNodeBackgroundAndBorders(stack.container); + // 2. the child stacking contexts with negative stack levels (most negative first). + negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this); + // 3. For all its in-flow, non-positioned, block-level descendants in tree order: + this.renderNodeContent(stack.container); + nonInlineLevel.forEach(this.renderNode, this); + // 4. All non-positioned floating descendants, in tree order. For each one of these, + // treat the element as if it created a new stacking context, but any positioned descendants and descendants + // which actually create a new stacking context should be considered part of the parent stacking context, + // not this new one. + nonPositionedFloats.forEach(this.renderStack, this); + // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks. + nonPositionedInlineLevel.forEach(this.renderStack, this); + inlineLevel.forEach(this.renderNode, this); + // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories: + // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order. + // For those with 'z-index: auto', treat the element as if it created a new stacking context, + // but any positioned descendants and descendants which actually create a new stacking context should be + // considered part of the parent stacking context, not this new one. For those with 'z-index: 0', + // treat the stacking context generated atomically. + // + // All opacity descendants with opacity less than 1 + // + // All transform descendants with transform other than none + zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this); + // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index + // order (smallest first) then tree order. + positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this); + + if (transform !== null) { + this.ctx.restore(); + } + } + + render(stack: StackingContext): Promise { + this.ctx.scale(this.options.scale, this.options.scale); + this.ctx.textBaseline = 'bottom'; + if (this.options.backgroundColor) { + this.rectangle( + 0, + 0, + this.canvas.width, + this.canvas.height, + this.options.backgroundColor + ); + } + this.renderStack(stack); + return Promise.resolve(this.canvas); + } +} + +const splitDescendants = (stack: StackingContext): [Array, Array] => { + const inlineLevel = []; + const nonInlineLevel = []; + + const length = stack.children.length; + for (let i = 0; i < length; i++) { + let child = stack.children[i]; + if (child.isInlineLevel()) { + inlineLevel.push(child); + } else { + nonInlineLevel.push(child); + } + } + return [inlineLevel, nonInlineLevel]; +}; + +const splitStackingContexts = ( + stack: StackingContext +): [ + Array, + Array, + Array, + Array, + Array +] => { + const negativeZIndex = []; + const zeroOrAutoZIndexOrTransformedOrOpacity = []; + const positiveZIndex = []; + const nonPositionedFloats = []; + const nonPositionedInlineLevel = []; + const length = stack.contexts.length; + for (let i = 0; i < length; i++) { + let child = stack.contexts[i]; + if ( + child.container.isPositioned() || + child.container.style.opacity < 1 || + child.container.isTransformed() + ) { + if (child.container.style.zIndex.order < 0) { + negativeZIndex.push(child); + } else if (child.container.style.zIndex.order > 0) { + positiveZIndex.push(child); + } else { + zeroOrAutoZIndexOrTransformedOrOpacity.push(child); + } + } else { + if (child.container.isFloating()) { + nonPositionedFloats.push(child); + } else { + nonPositionedInlineLevel.push(child); + } + } + } + return [ + negativeZIndex, + zeroOrAutoZIndexOrTransformedOrOpacity, + positiveZIndex, + nonPositionedFloats, + nonPositionedInlineLevel + ]; +}; + +const sortByZIndex = (a: StackingContext, b: StackingContext): number => { + if (a.container.style.zIndex.order > b.container.style.zIndex.order) { + return 1; + } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) { + return -1; + } + return 0; +}; diff --git a/src/Color.js b/src/Color.js new file mode 100644 index 000000000..506c5a60d --- /dev/null +++ b/src/Color.js @@ -0,0 +1,249 @@ +/* @flow */ +'use strict'; + +// http://dev.w3.org/csswg/css-color/ + +type ColorArray = [number, number, number, number | null]; + +const HEX3 = /^#([a-f0-9]{3})$/i; +const hex3 = (value: string): ColorArray | false => { + const match = value.match(HEX3); + if (match) { + return [ + parseInt(match[1][0] + match[1][0], 16), + parseInt(match[1][1] + match[1][1], 16), + parseInt(match[1][2] + match[1][2], 16), + null + ]; + } + return false; +}; + +const HEX6 = /^#([a-f0-9]{6})$/i; +const hex6 = (value: string): ColorArray | false => { + const match = value.match(HEX6); + if (match) { + return [ + parseInt(match[1].substring(0, 2), 16), + parseInt(match[1].substring(2, 4), 16), + parseInt(match[1].substring(4, 6), 16), + null + ]; + } + return false; +}; + +const RGB = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/; +const rgb = (value: string): ColorArray | false => { + const match = value.match(RGB); + if (match) { + return [Number(match[1]), Number(match[2]), Number(match[3]), null]; + } + return false; +}; + +const RGBA = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/; +const rgba = (value: string): ColorArray | false => { + const match = value.match(RGBA); + if (match && match.length > 4) { + return [Number(match[1]), Number(match[2]), Number(match[3]), Number(match[4])]; + } + return false; +}; + +const fromArray = (array: Array): ColorArray => { + return [ + Math.min(array[0], 255), + Math.min(array[1], 255), + Math.min(array[2], 255), + array.length > 3 ? array[3] : null + ]; +}; + +const namedColor = (name: string): ColorArray | false => { + const color: ColorArray | void = NAMED_COLORS[name.toLowerCase()]; + return color ? color : false; +}; + +export default class Color { + r: number; + g: number; + b: number; + a: number | null; + + constructor(value: string | Array) { + const [r, g, b, a] = Array.isArray(value) + ? fromArray(value) + : hex3(value) || + rgb(value) || + rgba(value) || + namedColor(value) || + hex6(value) || [0, 0, 0, null]; + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + isTransparent(): boolean { + return this.a === 0; + } + + toString(): string { + return this.a !== null && this.a !== 1 + ? `rgba(${this.r},${this.g},${this.b},${this.a})` + : `rgb(${this.r},${this.g},${this.b})`; + } +} + +const NAMED_COLORS = { + transparent: [0, 0, 0, 0], + aliceblue: [240, 248, 255, null], + antiquewhite: [250, 235, 215, null], + aqua: [0, 255, 255, null], + aquamarine: [127, 255, 212, null], + azure: [240, 255, 255, null], + beige: [245, 245, 220, null], + bisque: [255, 228, 196, null], + black: [0, 0, 0, null], + blanchedalmond: [255, 235, 205, null], + blue: [0, 0, 255, null], + blueviolet: [138, 43, 226, null], + brown: [165, 42, 42, null], + burlywood: [222, 184, 135, null], + cadetblue: [95, 158, 160, null], + chartreuse: [127, 255, 0, null], + chocolate: [210, 105, 30, null], + coral: [255, 127, 80, null], + cornflowerblue: [100, 149, 237, null], + cornsilk: [255, 248, 220, null], + crimson: [220, 20, 60, null], + cyan: [0, 255, 255, null], + darkblue: [0, 0, 139, null], + darkcyan: [0, 139, 139, null], + darkgoldenrod: [184, 134, 11, null], + darkgray: [169, 169, 169, null], + darkgreen: [0, 100, 0, null], + darkgrey: [169, 169, 169, null], + darkkhaki: [189, 183, 107, null], + darkmagenta: [139, 0, 139, null], + darkolivegreen: [85, 107, 47, null], + darkorange: [255, 140, 0, null], + darkorchid: [153, 50, 204, null], + darkred: [139, 0, 0, null], + darksalmon: [233, 150, 122, null], + darkseagreen: [143, 188, 143, null], + darkslateblue: [72, 61, 139, null], + darkslategray: [47, 79, 79, null], + darkslategrey: [47, 79, 79, null], + darkturquoise: [0, 206, 209, null], + darkviolet: [148, 0, 211, null], + deeppink: [255, 20, 147, null], + deepskyblue: [0, 191, 255, null], + dimgray: [105, 105, 105, null], + dimgrey: [105, 105, 105, null], + dodgerblue: [30, 144, 255, null], + firebrick: [178, 34, 34, null], + floralwhite: [255, 250, 240, null], + forestgreen: [34, 139, 34, null], + fuchsia: [255, 0, 255, null], + gainsboro: [220, 220, 220, null], + ghostwhite: [248, 248, 255, null], + gold: [255, 215, 0, null], + goldenrod: [218, 165, 32, null], + gray: [128, 128, 128, null], + green: [0, 128, 0, null], + greenyellow: [173, 255, 47, null], + grey: [128, 128, 128, null], + honeydew: [240, 255, 240, null], + hotpink: [255, 105, 180, null], + indianred: [205, 92, 92, null], + indigo: [75, 0, 130, null], + ivory: [255, 255, 240, null], + khaki: [240, 230, 140, null], + lavender: [230, 230, 250, null], + lavenderblush: [255, 240, 245, null], + lawngreen: [124, 252, 0, null], + lemonchiffon: [255, 250, 205, null], + lightblue: [173, 216, 230, null], + lightcoral: [240, 128, 128, null], + lightcyan: [224, 255, 255, null], + lightgoldenrodyellow: [250, 250, 210, null], + lightgray: [211, 211, 211, null], + lightgreen: [144, 238, 144, null], + lightgrey: [211, 211, 211, null], + lightpink: [255, 182, 193, null], + lightsalmon: [255, 160, 122, null], + lightseagreen: [32, 178, 170, null], + lightskyblue: [135, 206, 250, null], + lightslategray: [119, 136, 153, null], + lightslategrey: [119, 136, 153, null], + lightsteelblue: [176, 196, 222, null], + lightyellow: [255, 255, 224, null], + lime: [0, 255, 0, null], + limegreen: [50, 205, 50, null], + linen: [250, 240, 230, null], + magenta: [255, 0, 255, null], + maroon: [128, 0, 0, null], + mediumaquamarine: [102, 205, 170, null], + mediumblue: [0, 0, 205, null], + mediumorchid: [186, 85, 211, null], + mediumpurple: [147, 112, 219, null], + mediumseagreen: [60, 179, 113, null], + mediumslateblue: [123, 104, 238, null], + mediumspringgreen: [0, 250, 154, null], + mediumturquoise: [72, 209, 204, null], + mediumvioletred: [199, 21, 133, null], + midnightblue: [25, 25, 112, null], + mintcream: [245, 255, 250, null], + mistyrose: [255, 228, 225, null], + moccasin: [255, 228, 181, null], + navajowhite: [255, 222, 173, null], + navy: [0, 0, 128, null], + oldlace: [253, 245, 230, null], + olive: [128, 128, 0, null], + olivedrab: [107, 142, 35, null], + orange: [255, 165, 0, null], + orangered: [255, 69, 0, null], + orchid: [218, 112, 214, null], + palegoldenrod: [238, 232, 170, null], + palegreen: [152, 251, 152, null], + paleturquoise: [175, 238, 238, null], + palevioletred: [219, 112, 147, null], + papayawhip: [255, 239, 213, null], + peachpuff: [255, 218, 185, null], + peru: [205, 133, 63, null], + pink: [255, 192, 203, null], + plum: [221, 160, 221, null], + powderblue: [176, 224, 230, null], + purple: [128, 0, 128, null], + rebeccapurple: [102, 51, 153, null], + red: [255, 0, 0, null], + rosybrown: [188, 143, 143, null], + royalblue: [65, 105, 225, null], + saddlebrown: [139, 69, 19, null], + salmon: [250, 128, 114, null], + sandybrown: [244, 164, 96, null], + seagreen: [46, 139, 87, null], + seashell: [255, 245, 238, null], + sienna: [160, 82, 45, null], + silver: [192, 192, 192, null], + skyblue: [135, 206, 235, null], + slateblue: [106, 90, 205, null], + slategray: [112, 128, 144, null], + slategrey: [112, 128, 144, null], + snow: [255, 250, 250, null], + springgreen: [0, 255, 127, null], + steelblue: [70, 130, 180, null], + tan: [210, 180, 140, null], + teal: [0, 128, 128, null], + thistle: [216, 191, 216, null], + tomato: [255, 99, 71, null], + turquoise: [64, 224, 208, null], + violet: [238, 130, 238, null], + wheat: [245, 222, 179, null], + white: [255, 255, 255, null], + whitesmoke: [245, 245, 245, null], + yellow: [255, 255, 0, null], + yellowgreen: [154, 205, 50, null] +}; diff --git a/src/Feature.js b/src/Feature.js new file mode 100644 index 000000000..b85a36b3b --- /dev/null +++ b/src/Feature.js @@ -0,0 +1,34 @@ +const testRangeBounds = document => { + const TEST_HEIGHT = 123; + + if (document.createRange) { + const range = document.createRange(); + if (range.getBoundingClientRect) { + const testElement = document.createElement('boundtest'); + testElement.style.height = `${TEST_HEIGHT}px`; + testElement.style.display = 'block'; + document.body.appendChild(testElement); + + range.selectNode(testElement); + const rangeBounds = range.getBoundingClientRect(); + const rangeHeight = Math.round(rangeBounds.height); + document.body.removeChild(testElement); + if (rangeHeight === TEST_HEIGHT) { + return true; + } + } + } + + return false; +}; + +const FEATURES = { + get SUPPORT_RANGE_BOUNDS() { + 'use strict'; + const value = testRangeBounds(document); + Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value}); + return value; + } +}; + +export default FEATURES; diff --git a/src/ImageLoader.js b/src/ImageLoader.js new file mode 100644 index 000000000..2d844e2e4 --- /dev/null +++ b/src/ImageLoader.js @@ -0,0 +1,100 @@ +/* @flow */ +'use strict'; + +import type NodeContainer from './NodeContainer'; +import type Options from './index'; +import type Logger from './Logger'; + +type ImageCache = {[string]: Promise}; + +export default class ImageLoader { + origin: string; + options: Options; + _link: HTMLAnchorElement; + cache: ImageCache; + logger: Logger; + + constructor(options: Options, logger: Logger) { + this.options = options; + this.origin = this.getOrigin(window.location.href); + this.cache = {}; + this.logger = logger; + } + + loadImage(src: string): ?string { + if (this.hasImageInCache(src)) { + return src; + } + + if (this.options.allowTaint === true || this.isInlineImage(src) || this.isSameOrigin(src)) { + return this.addImage(src, src); + } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { + // TODO proxy + } + } + + isInlineImage(src: string): boolean { + return /data:image\/.*;base64,/i.test(src); + } + + hasImageInCache(key: string): boolean { + return typeof this.cache[key] !== 'undefined'; + } + + addImage(key: string, src: string): string { + if (__DEV__) { + this.logger.log(`Added image ${key.substring(0, 256)}`); + } + this.cache[key] = new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = reject; + /* + if (cors) { + img.crossOrigin = 'anonymous'; + } + */ + img.src = src; + if (img.complete === true) { + resolve(img); + } + }); + return key; + } + + isSameOrigin(url: string): boolean { + return this.getOrigin(url) === this.origin; + } + + getOrigin(url: string): string { + const link = this._link || (this._link = document.createElement('a')); + link.href = url; + link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/ + return link.protocol + link.hostname + link.port; + } + + ready(): Promise { + const keys = Object.keys(this.cache); + return Promise.all(keys.map(str => this.cache[str])).then(images => { + if (__DEV__) { + this.logger.log('Finished loading images', images); + } + return new ImageStore(keys, images); + }); + } +} + +export class ImageStore { + _keys: Array; + _images: Array; + + constructor(keys: Array, images: Array) { + this._keys = keys; + this._images = images; + } + + get(key: string): ?HTMLImageElement { + const index = this._keys.indexOf(key); + return index === -1 ? null : this._images[index]; + } +} diff --git a/src/Length.js b/src/Length.js new file mode 100644 index 000000000..6eb9e80e6 --- /dev/null +++ b/src/Length.js @@ -0,0 +1,36 @@ +/* @flow */ +'use strict'; + +export const LENGTH_TYPE = { + PX: 0, + PERCENTAGE: 1 +}; + +export type LengthType = $Values; + +export default class Length { + type: LengthType; + value: number; + + constructor(value: string) { + this.type = + value.substr(value.length - 1) === '%' ? LENGTH_TYPE.PERCENTAGE : LENGTH_TYPE.PX; + const parsedValue = parseFloat(value); + if (__DEV__ && isNaN(parsedValue)) { + console.error(`Invalid value given for Length: "${value}"`); + } + this.value = isNaN(parsedValue) ? 0 : parsedValue; + } + + isPercentage(): boolean { + return this.type === LENGTH_TYPE.PERCENTAGE; + } + + getAbsoluteValue(parentLength: number): number { + return this.isPercentage() ? parentLength * (this.value / 100) : this.value; + } + + static create(v): Length { + return new Length(v); + } +} diff --git a/src/Logger.js b/src/Logger.js new file mode 100644 index 000000000..18d48a731 --- /dev/null +++ b/src/Logger.js @@ -0,0 +1,19 @@ +/* @flow */ +'use strict'; + +export default class Logger { + start: number; + + constructor() { + this.start = Date.now(); + } + + log(...args: any) { + Function.prototype.bind + .call(window.console.log, window.console) + .apply( + window.console, + [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) + ); + } +} diff --git a/src/NodeContainer.js b/src/NodeContainer.js new file mode 100644 index 000000000..6ae84fae9 --- /dev/null +++ b/src/NodeContainer.js @@ -0,0 +1,141 @@ +/* @flow */ +'use strict'; + +import type {Background} from './parsing/background'; +import type {Border} from './parsing/border'; +import type {BorderRadius} from './parsing/borderRadius'; +import type {DisplayBit} from './parsing/display'; +import type {Float} from './parsing/float'; +import type {Font} from './parsing/font'; +import type {Padding} from './parsing/padding'; +import type {Position} from './parsing/position'; +import type {TextTransform} from './parsing/textTransform'; +import type {TextDecoration} from './parsing/textDecoration'; +import type {Transform} from './parsing/transform'; +import type {zIndex} from './parsing/zIndex'; + +import type {Bounds} from './Bounds'; +import type ImageLoader from './ImageLoader'; + +import type TextContainer from './TextContainer'; + +import Color from './Color'; + +import {contains} from './Util'; +import {parseBackground} from './parsing/background'; +import {parseBorder} from './parsing/border'; +import {parseBorderRadius} from './parsing/borderRadius'; +import {parseDisplay, DISPLAY} from './parsing/display'; +import {parseCSSFloat, FLOAT} from './parsing/float'; +import {parseFont} from './parsing/font'; +import {parseLetterSpacing} from './parsing/letterSpacing'; +import {parsePadding} from './parsing/padding'; +import {parsePosition, POSITION} from './parsing/position'; +import {parseTextDecoration} from './parsing/textDecoration'; +import {parseTextTransform} from './parsing/textTransform'; +import {parseTransform} from './parsing/transform'; +import {parseZIndex} from './parsing/zIndex'; + +import {parseBounds} from './Bounds'; + +type StyleDeclaration = { + background: Background, + border: Array, + borderRadius: Array, + color: Color, + display: DisplayBit, + float: Float, + font: Font, + letterSpacing: number, + opacity: number, + padding: Padding, + position: Position, + textDecoration: TextDecoration, + textTransform: TextTransform, + transform: Transform, + zIndex: zIndex +}; + +export default class NodeContainer { + name: ?string; + parent: ?NodeContainer; + style: StyleDeclaration; + textNodes: Array; + bounds: Bounds; + image: ?string; + + constructor(node: HTMLElement, parent: ?NodeContainer, imageLoader: ImageLoader) { + this.parent = parent; + this.textNodes = []; + const style = node.ownerDocument.defaultView.getComputedStyle(node, null); + const display = parseDisplay(style.display); + + this.style = { + background: parseBackground(style, imageLoader), + border: parseBorder(style), + borderRadius: parseBorderRadius(style), + color: new Color(style.color), + display: display, + float: parseCSSFloat(style.float), + font: parseFont(style), + letterSpacing: parseLetterSpacing(style.letterSpacing), + opacity: parseFloat(style.opacity), + padding: parsePadding(style), + position: parsePosition(style.position), + textDecoration: parseTextDecoration(style), + textTransform: parseTextTransform(style.textTransform), + transform: parseTransform(style), + zIndex: parseZIndex(style.zIndex) + }; + this.image = + node instanceof HTMLImageElement + ? imageLoader.loadImage(node.currentSrc || node.src) + : null; + this.bounds = parseBounds(node, this.isTransformed()); + if (__DEV__) { + this.name = `${node.tagName.toLowerCase()}${node.id + ? `#${node.id}` + : ''}${node.className.split(' ').map(s => (s.length ? `.${s}` : '')).join('')}`; + } + } + isInFlow(): boolean { + return this.isRootElement() && !this.isFloating() && !this.isAbsolutelyPositioned(); + } + isVisible(): boolean { + return !contains(this.style.display, DISPLAY.NONE) && this.style.opacity > 0; + } + isAbsolutelyPositioned(): boolean { + return this.style.position !== POSITION.STATIC && this.style.position !== POSITION.RELATIVE; + } + isPositioned(): boolean { + return this.style.position !== POSITION.STATIC; + } + isFloating(): boolean { + return this.style.float !== FLOAT.NONE; + } + isRootElement(): boolean { + return this.parent === null; + } + isTransformed(): boolean { + return this.style.transform !== null; + } + isPositionedWithZIndex(): boolean { + return this.isPositioned() && !this.style.zIndex.auto; + } + isInlineLevel(): boolean { + return ( + contains(this.style.display, DISPLAY.INLINE) || + contains(this.style.display, DISPLAY.INLINE_BLOCK) || + contains(this.style.display, DISPLAY.INLINE_FLEX) || + contains(this.style.display, DISPLAY.INLINE_GRID) || + contains(this.style.display, DISPLAY.INLINE_LIST_ITEM) || + contains(this.style.display, DISPLAY.INLINE_TABLE) + ); + } + isInlineBlockOrInlineTable(): boolean { + return ( + contains(this.style.display, DISPLAY.INLINE_BLOCK) || + contains(this.style.display, DISPLAY.INLINE_TABLE) + ); + } +} diff --git a/src/NodeParser.js b/src/NodeParser.js new file mode 100644 index 000000000..16c5faf5b --- /dev/null +++ b/src/NodeParser.js @@ -0,0 +1,95 @@ +/* @flow */ +'use strict'; +import type ImageLoader from './ImageLoader'; +import type Logger from './Logger'; +import StackingContext from './StackingContext'; +import NodeContainer from './NodeContainer'; +import TextContainer from './TextContainer'; + +export const NodeParser = ( + node: HTMLElement, + imageLoader: ImageLoader, + logger: Logger +): StackingContext => { + const container = new NodeContainer(node, null, imageLoader); + const stack = new StackingContext(container, null, true); + + if (__DEV__) { + logger.log(`Starting node parsing`); + } + + parseNodeTree(node, container, stack, imageLoader); + + if (__DEV__) { + logger.log(`Finished parsing node tree`); + } + + return stack; +}; + +const IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION']; + +const parseNodeTree = ( + node: HTMLElement, + parent: NodeContainer, + stack: StackingContext, + imageLoader: ImageLoader +): void => { + node.childNodes.forEach((childNode: Node) => { + if (childNode instanceof Text) { + if (childNode.data.trim().length > 0) { + parent.textNodes.push(new TextContainer(childNode, parent)); + } + } else if (childNode instanceof HTMLElement) { + if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { + const container = new NodeContainer(childNode, parent, imageLoader); + if (container.isVisible()) { + const treatAsRealStackingContext = createsRealStackingContext( + container, + childNode + ); + if (treatAsRealStackingContext || createsStackingContext(container)) { + // for treatAsRealStackingContext:false, any positioned descendants and descendants + // which actually create a new stacking context should be considered part of the parent stacking context + const parentStack = + treatAsRealStackingContext || container.isPositioned() + ? stack.getRealParentStackingContext() + : stack; + const childStack = new StackingContext( + container, + parentStack, + treatAsRealStackingContext + ); + parentStack.contexts.push(childStack); + parseNodeTree(childNode, container, childStack, imageLoader); + } else { + stack.children.push(container); + parseNodeTree(childNode, container, stack, imageLoader); + } + } + } + } + }); +}; + +const createsRealStackingContext = (container: NodeContainer, node: HTMLElement): boolean => { + return ( + container.isRootElement() || + container.isPositionedWithZIndex() || + container.style.opacity < 1 || + container.isTransformed() || + isBodyWithTransparentRoot(container, node) + ); +}; + +const createsStackingContext = (container: NodeContainer): boolean => { + return container.isPositioned() || container.isFloating(); +}; + +const isBodyWithTransparentRoot = (container: NodeContainer, node: HTMLElement): boolean => { + return ( + node.nodeName === 'BODY' && + container.parent instanceof NodeContainer && + container.parent.style.background.backgroundColor.isTransparent() + ); +}; diff --git a/src/Size.js b/src/Size.js new file mode 100644 index 000000000..1611430e8 --- /dev/null +++ b/src/Size.js @@ -0,0 +1,12 @@ +/* @flow */ +'use strict'; + +export default class Size { + width: number; + height: number; + + constructor(width: number, height: number) { + this.width = width; + this.height = height; + } +} diff --git a/src/StackingContext.js b/src/StackingContext.js new file mode 100644 index 000000000..65cfe3720 --- /dev/null +++ b/src/StackingContext.js @@ -0,0 +1,37 @@ +/* @flow */ +'use strict'; + +import NodeContainer from './NodeContainer'; +import {POSITION} from './parsing/position'; + +export default class StackingContext { + container: NodeContainer; + parent: ?StackingContext; + contexts: Array; + children: Array; + treatAsRealStackingContext: boolean; + + constructor( + container: NodeContainer, + parent: ?StackingContext, + treatAsRealStackingContext: boolean + ) { + this.container = container; + this.parent = parent; + this.contexts = []; + this.children = []; + this.treatAsRealStackingContext = treatAsRealStackingContext; + } + + getOpacity(): number { + return this.parent + ? this.container.style.opacity * this.parent.getOpacity() + : this.container.style.opacity; + } + + getRealParentStackingContext(): StackingContext { + return !this.parent || this.treatAsRealStackingContext + ? this + : this.parent.getRealParentStackingContext(); + } +} diff --git a/src/TextBounds.js b/src/TextBounds.js new file mode 100644 index 000000000..05e9acfba --- /dev/null +++ b/src/TextBounds.js @@ -0,0 +1,102 @@ +/* @flow */ +'use strict'; + +import {ucs2} from 'punycode'; +import type TextContainer from './TextContainer'; +import {Bounds} from './Bounds'; +import {TEXT_DECORATION} from './parsing/textDecoration'; + +import FEATURES from './Feature'; + +const UNICODE = /[^\u0000-\u00ff]/; + +const hasUnicodeCharacters = (text: string): boolean => UNICODE.test(text); + +const encodeCodePoint = (codePoint: number): string => ucs2.encode([codePoint]); + +export class TextBounds { + text: string; + bounds: Bounds; + + constructor(text: string, bounds: Bounds) { + this.text = text; + this.bounds = bounds; + } +} + +export const parseTextBounds = (textContainer: TextContainer, node: Text): Array => { + const codePoints = ucs2.decode(textContainer.text); + const letterRendering = + textContainer.parent.style.letterSpacing !== 0 || hasUnicodeCharacters(textContainer.text); + const textList = letterRendering ? codePoints.map(encodeCodePoint) : splitWords(codePoints); + const length = textList.length; + const textBounds = []; + let offset = 0; + for (let i = 0; i < length; i++) { + let text = textList[i]; + if ( + textContainer.parent.style.textDecoration !== TEXT_DECORATION.NONE || + text.trim().length > 0 + ) { + if (FEATURES.SUPPORT_RANGE_BOUNDS) { + textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length))); + } + } + offset += text.length; + } + return textBounds; + + /* + else if (container.node && typeof container.node.data === 'string') { + var replacementNode = container.node.splitText(text.length); + var bounds = this.getWrapperBounds(container.node, container.parent.hasTransform()); + container.node = replacementNode; + return bounds; + }*/ +}; + +const getRangeBounds = (node: Text, offset: number, length: number): Bounds => { + const range = node.ownerDocument.createRange(); + range.setStart(node, offset); + range.setEnd(node, offset + length); + return Bounds.fromClientRect(range.getBoundingClientRect()); +}; + +const splitWords = (codePoints: Array): Array => { + const words = []; + let i = 0; + let onWordBoundary = false; + let word; + while (codePoints.length) { + if (isWordBoundary(codePoints[i]) === onWordBoundary) { + word = codePoints.splice(0, i); + if (word.length) { + words.push(ucs2.encode(word)); + } + onWordBoundary = !onWordBoundary; + i = 0; + } else { + i++; + } + + if (i >= codePoints.length) { + word = codePoints.splice(0, i); + if (word.length) { + words.push(ucs2.encode(word)); + } + } + } + return words; +}; + +const isWordBoundary = (characterCode: number): boolean => { + return ( + [ + 32, // + 13, // \r + 10, // \n + 9, // \t + 45 // - + ].indexOf(characterCode) !== -1 + ); +}; diff --git a/src/TextContainer.js b/src/TextContainer.js new file mode 100644 index 000000000..2e16d2ad0 --- /dev/null +++ b/src/TextContainer.js @@ -0,0 +1,43 @@ +/* @flow */ +'use strict'; + +import type NodeContainer from './NodeContainer'; +import type {TextTransform} from './parsing/textTransform'; +import type {TextBounds} from './TextBounds'; +import {TEXT_TRANSFORM} from './parsing/textTransform'; +import {parseTextBounds} from './TextBounds'; + +export default class TextContainer { + text: string; + parent: NodeContainer; + bounds: Array; + + constructor(node: Text, parent: NodeContainer) { + this.text = transform(node.data, parent.style.textTransform); + this.parent = parent; + this.bounds = parseTextBounds(this, node); + } +} + +const CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g; + +const transform = (text: string, transform: TextTransform) => { + switch (transform) { + case TEXT_TRANSFORM.LOWERCASE: + return text.toLowerCase(); + case TEXT_TRANSFORM.CAPITALIZE: + return text.replace(CAPITALIZE, capitalize); + case TEXT_TRANSFORM.UPPERCASE: + return text.toUpperCase(); + default: + return text; + } +}; + +function capitalize(m, p1, p2) { + if (m.length > 0) { + return p1 + p2.toUpperCase(); + } + + return m; +} diff --git a/src/Util.js b/src/Util.js new file mode 100644 index 000000000..cfbc179cb --- /dev/null +++ b/src/Util.js @@ -0,0 +1,4 @@ +/* @flow */ +'use strict'; + +export const contains = (bit: number, value: number): boolean => (bit & value) !== 0; diff --git a/src/Vector.js b/src/Vector.js new file mode 100644 index 000000000..5f97473aa --- /dev/null +++ b/src/Vector.js @@ -0,0 +1,20 @@ +/* @flow */ +'use strict'; + +export default class Vector { + x: number; + y: number; + + constructor(x: number, y: number) { + this.x = x; + this.y = y; + if (__DEV__) { + if (isNaN(x)) { + console.error(`Invalid x value given for Vector`); + } + if (isNaN(y)) { + console.error(`Invalid y value given for Vector`); + } + } + } +} diff --git a/src/clone.js b/src/clone.js deleted file mode 100644 index bafaa09b6..000000000 --- a/src/clone.js +++ /dev/null @@ -1,104 +0,0 @@ -var log = require('./log'); - -function restoreOwnerScroll(ownerDocument, x, y) { - if (ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) { - ownerDocument.defaultView.scrollTo(x, y); - } -} - -function cloneCanvasContents(canvas, clonedCanvas) { - try { - if (clonedCanvas) { - clonedCanvas.width = canvas.width; - clonedCanvas.height = canvas.height; - clonedCanvas.getContext("2d").putImageData(canvas.getContext("2d").getImageData(0, 0, canvas.width, canvas.height), 0, 0); - } - } catch(e) { - log("Unable to copy canvas content from", canvas, e); - } -} - -function cloneNode(node, javascriptEnabled) { - var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false); - - var child = node.firstChild; - while(child) { - if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') { - clone.appendChild(cloneNode(child, javascriptEnabled)); - } - child = child.nextSibling; - } - - if (node.nodeType === 1) { - clone._scrollTop = node.scrollTop; - clone._scrollLeft = node.scrollLeft; - if (node.nodeName === "CANVAS") { - cloneCanvasContents(node, clone); - } else if (node.nodeName === "TEXTAREA" || node.nodeName === "SELECT") { - clone.value = node.value; - } - } - - return clone; -} - -function initNode(node) { - if (node.nodeType === 1) { - node.scrollTop = node._scrollTop; - node.scrollLeft = node._scrollLeft; - - var child = node.firstChild; - while(child) { - initNode(child); - child = child.nextSibling; - } - } -} - -module.exports = function(ownerDocument, containerDocument, width, height, options, x ,y) { - var documentElement = cloneNode(ownerDocument.documentElement, options.javascriptEnabled); - var container = containerDocument.createElement("iframe"); - - container.className = "html2canvas-container"; - container.style.visibility = "hidden"; - container.style.position = "fixed"; - container.style.left = "-10000px"; - container.style.top = "0px"; - container.style.border = "0"; - container.width = width; - container.height = height; - container.scrolling = "no"; // ios won't scroll without it - containerDocument.body.appendChild(container); - - return new Promise(function(resolve) { - var documentClone = container.contentWindow.document; - - /* Chrome doesn't detect relative background-images assigned in inline '); - - function getFontSizeInPixels(el, value) { - return getSizeInPixels(el, /(?:em|ex|%)$/i.test(value) ? '1em' : value); - } - - // Original by Dead Edwards. - // Combined with getFontSizeInPixels it also works with relative units. - function getSizeInPixels(el, value) { - if (/px$/i.test(value)) return parseFloat(value); - var style = el.style.left, runtimeStyle = el.runtimeStyle.left; - el.runtimeStyle.left = el.currentStyle.left; - el.style.left = value; - var result = el.style.pixelLeft; - el.style.left = style; - el.runtimeStyle.left = runtimeStyle; - return result; - } - - return function(font, text, style, options, node, el, hasNext) { - var redraw = (text === null); - - if (redraw) text = node.alt; - - // @todo word-spacing, text-decoration - - var viewBox = font.viewBox; - - var size = style.computedFontSize || - (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize)); - - var letterSpacing = style.computedLSpacing; - - if (letterSpacing == undefined) { - letterSpacing = style.get('letterSpacing'); - style.computedLSpacing = letterSpacing = - (letterSpacing == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, letterSpacing)); - } - - var wrapper, canvas; - - if (redraw) { - wrapper = node; - canvas = node.firstChild; - } - else { - wrapper = fabric.document.createElement('span'); - wrapper.className = 'cufon cufon-vml'; - wrapper.alt = text; - - canvas = fabric.document.createElement('span'); - canvas.className = 'cufon-vml-canvas'; - wrapper.appendChild(canvas); - - if (options.printable) { - var print = fabric.document.createElement('span'); - print.className = 'cufon-alt'; - print.appendChild(fabric.document.createTextNode(text)); - wrapper.appendChild(print); - } - - // ie6, for some reason, has trouble rendering the last VML element in the document. - // we can work around this by injecting a dummy element where needed. - // @todo find a better solution - if (!hasNext) wrapper.appendChild(fabric.document.createElement('cvml:shape')); - } - - var wStyle = wrapper.style; - var cStyle = canvas.style; - - var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height); - var roundingFactor = roundedHeight / height; - var minX = viewBox.minX, minY = viewBox.minY; - - cStyle.height = roundedHeight; - cStyle.top = Math.round(size.convert(minY - font.ascent)); - cStyle.left = Math.round(size.convert(minX)); - - wStyle.height = size.convert(font.height) + 'px'; - - var textDecoration = Cufon.getTextDecoration(options); - - var color = style.get('color'); - - var chars = Cufon.CSS.textTransform(text, style).split(''); - - var width = 0, offsetX = 0, advance = null; - - var glyph, shape, shadows = options.textShadow; - - // pre-calculate width - for (var i = 0, k = 0, l = chars.length; i < l; ++i) { - glyph = font.glyphs[chars[i]] || font.missingGlyph; - if (glyph) width += advance = ~~(glyph.w || font.w) + letterSpacing; - } - - if (advance === null) return null; - - var fullWidth = -minX + width + (viewBox.width - advance); - - var shapeWidth = size.convert(fullWidth * roundingFactor), roundedShapeWidth = Math.round(shapeWidth); - - var coordSize = fullWidth + ',' + viewBox.height, coordOrigin; - var stretch = 'r' + coordSize + 'nsnf'; - - for (i = 0; i < l; ++i) { - - glyph = font.glyphs[chars[i]] || font.missingGlyph; - if (!glyph) continue; - - if (redraw) { - // some glyphs may be missing so we can't use i - shape = canvas.childNodes[k]; - if (shape.firstChild) shape.removeChild(shape.firstChild); // shadow - } - else { - shape = fabric.document.createElement('cvml:shape'); - canvas.appendChild(shape); - } - - shape.stroked = 'f'; - shape.coordsize = coordSize; - shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY; - shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch; - shape.fillcolor = color; - - // it's important to not set top/left or IE8 will grind to a halt - var sStyle = shape.style; - sStyle.width = roundedShapeWidth; - sStyle.height = roundedHeight; - - if (shadows) { - // due to the limitations of the VML shadow element there - // can only be two visible shadows. opacity is shared - // for all shadows. - var shadow1 = shadows[0], shadow2 = shadows[1]; - var color1 = Cufon.CSS.color(shadow1.color), color2; - var shadow = fabric.document.createElement('cvml:shadow'); - shadow.on = 't'; - shadow.color = color1.color; - shadow.offset = shadow1.offX + ',' + shadow1.offY; - if (shadow2) { - color2 = Cufon.CSS.color(shadow2.color); - shadow.type = 'double'; - shadow.color2 = color2.color; - shadow.offset2 = shadow2.offX + ',' + shadow2.offY; - } - shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1; - shape.appendChild(shadow); - } - - offsetX += ~~(glyph.w || font.w) + letterSpacing; - - ++k; - - } - - wStyle.width = Math.max(Math.ceil(size.convert(width * roundingFactor)), 0); - - return wrapper; - - }; - -})()); - -Cufon.getTextDecoration = function(options) { - return { - underline: options.textDecoration === 'underline', - overline: options.textDecoration === 'overline', - 'line-through': options.textDecoration === 'line-through' - }; -}; - -if (typeof exports != 'undefined') { - exports.Cufon = Cufon; -} - - -/* - json2.js - 2014-02-04 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, regexp: true */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -if (typeof JSON !== 'object') { - JSON = {}; -} - -(function () { - 'use strict'; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function () { - - return isFinite(this.valueOf()) - ? this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' - : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function () { - return this.valueOf(); - }; - } - - var cx, - escapable, - gap, - indent, - meta, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' - ? c - : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 - ? '[]' - : gap - ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' - : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 - ? '{}' - : gap - ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' - : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }; - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' - ? walk({'': j}, '') - : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); - - -(function(){ - - /** - * @private - * @param {String} eventName - * @param {Function} handler - */ - function _removeEventListener(eventName, handler) { - if (!this.__eventListeners[eventName]) { - return; - } - - if (handler) { - fabric.util.removeFromArray(this.__eventListeners[eventName], handler); - } - else { - this.__eventListeners[eventName].length = 0; - } - } - - /** - * Observes specified event - * @deprecated `observe` deprecated since 0.8.34 (use `on` instead) - * @memberOf fabric.Observable - * @alias on - * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) - * @param {Function} handler Function that receives a notification when an event of the specified type occurs - * @return {Self} thisArg - * @chainable - */ - function observe(eventName, handler) { - if (!this.__eventListeners) { - this.__eventListeners = { }; - } - // one object with key/value pairs was passed - if (arguments.length === 1) { - for (var prop in eventName) { - this.on(prop, eventName[prop]); - } - } - else { - if (!this.__eventListeners[eventName]) { - this.__eventListeners[eventName] = [ ]; - } - this.__eventListeners[eventName].push(handler); - } - return this; - } - - /** - * Stops event observing for a particular event handler. Calling this method - * without arguments removes all handlers for all events - * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead) - * @memberOf fabric.Observable - * @alias off - * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler}) - * @param {Function} handler Function to be deleted from EventListeners - * @return {Self} thisArg - * @chainable - */ - function stopObserving(eventName, handler) { - if (!this.__eventListeners) { - return; - } - - // remove all key/value pairs (event name -> event handler) - if (arguments.length === 0) { - this.__eventListeners = { }; - } - // one object with key/value pairs was passed - else if (arguments.length === 1 && typeof arguments[0] === 'object') { - for (var prop in eventName) { - _removeEventListener.call(this, prop, eventName[prop]); - } - } - else { - _removeEventListener.call(this, eventName, handler); - } - return this; - } - - /** - * Fires event with an optional options object - * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead) - * @memberOf fabric.Observable - * @alias trigger - * @param {String} eventName Event name to fire - * @param {Object} [options] Options object - * @return {Self} thisArg - * @chainable - */ - function fire(eventName, options) { - if (!this.__eventListeners) { - return; - } - - var listenersForEvent = this.__eventListeners[eventName]; - if (!listenersForEvent) { - return; - } - - for (var i = 0, len = listenersForEvent.length; i < len; i++) { - // avoiding try/catch for perf. reasons - listenersForEvent[i].call(this, options || { }); - } - return this; - } - - /** - * @namespace fabric.Observable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#events} - * @see {@link http://fabricjs.com/events/|Events demo} - */ - fabric.Observable = { - observe: observe, - stopObserving: stopObserving, - fire: fire, - - on: observe, - off: stopObserving, - trigger: fire - }; -})(); - - -/** - * @namespace fabric.Collection - */ -fabric.Collection = { - - /** - * Adds objects to collection, then renders canvas (if `renderOnAddRemove` is not `false`) - * Objects should be instances of (or inherit from) fabric.Object - * @param {...fabric.Object} object Zero or more fabric instances - * @return {Self} thisArg - */ - add: function () { - this._objects.push.apply(this._objects, arguments); - for (var i = 0, length = arguments.length; i < length; i++) { - this._onObjectAdded(arguments[i]); - } - this.renderOnAddRemove && this.renderAll(); - return this; - }, - - /** - * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`) - * An object should be an instance of (or inherit from) fabric.Object - * @param {Object} object Object to insert - * @param {Number} index Index to insert object at - * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs - * @return {Self} thisArg - * @chainable - */ - insertAt: function (object, index, nonSplicing) { - var objects = this.getObjects(); - if (nonSplicing) { - objects[index] = object; - } - else { - objects.splice(index, 0, object); - } - this._onObjectAdded(object); - this.renderOnAddRemove && this.renderAll(); - return this; - }, - - /** - * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`) - * @param {...fabric.Object} object Zero or more fabric instances - * @return {Self} thisArg - * @chainable - */ - remove: function() { - var objects = this.getObjects(), - index; - - for (var i = 0, length = arguments.length; i < length; i++) { - index = objects.indexOf(arguments[i]); - - // only call onObjectRemoved if an object was actually removed - if (index !== -1) { - objects.splice(index, 1); - this._onObjectRemoved(arguments[i]); - } - } - - this.renderOnAddRemove && this.renderAll(); - return this; - }, - - /** - * Executes given function for each object in this group - * @param {Function} callback - * Callback invoked with current object as first argument, - * index - as second and an array of all objects - as third. - * Iteration happens in reverse order (for performance reasons). - * Callback is invoked in a context of Global Object (e.g. `window`) - * when no `context` argument is given - * - * @param {Object} context Context (aka thisObject) - * @return {Self} thisArg - */ - forEachObject: function(callback, context) { - var objects = this.getObjects(), - i = objects.length; - while (i--) { - callback.call(context, objects[i], i, objects); - } - return this; - }, - - /** - * Returns an array of children objects of this instance - * Type parameter introduced in 1.3.10 - * @param {String} [type] When specified, only objects of this type are returned - * @return {Array} - */ - getObjects: function(type) { - if (typeof type === 'undefined') { - return this._objects; - } - return this._objects.filter(function(o) { - return o.type === type; - }); - }, - - /** - * Returns object at specified index - * @param {Number} index - * @return {Self} thisArg - */ - item: function (index) { - return this.getObjects()[index]; - }, - - /** - * Returns true if collection contains no objects - * @return {Boolean} true if collection is empty - */ - isEmpty: function () { - return this.getObjects().length === 0; - }, - - /** - * Returns a size of a collection (i.e: length of an array containing its objects) - * @return {Number} Collection size - */ - size: function() { - return this.getObjects().length; - }, - - /** - * Returns true if collection contains an object - * @param {Object} object Object to check against - * @return {Boolean} `true` if collection contains an object - */ - contains: function(object) { - return this.getObjects().indexOf(object) > -1; - }, - - /** - * Returns number representation of a collection complexity - * @return {Number} complexity - */ - complexity: function () { - return this.getObjects().reduce(function (memo, current) { - memo += current.complexity ? current.complexity() : 0; - return memo; - }, 0); - } -}; - - -(function(global) { - - var sqrt = Math.sqrt, - atan2 = Math.atan2, - PiBy180 = Math.PI / 180; - - /** - * @namespace fabric.util - */ - fabric.util = { - - /** - * Removes value from an array. - * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf` - * @static - * @memberOf fabric.util - * @param {Array} array - * @param {Any} value - * @return {Array} original array - */ - removeFromArray: function(array, value) { - var idx = array.indexOf(value); - if (idx !== -1) { - array.splice(idx, 1); - } - return array; - }, - - /** - * Returns random number between 2 specified ones. - * @static - * @memberOf fabric.util - * @param {Number} min lower limit - * @param {Number} max upper limit - * @return {Number} random value (between min and max) - */ - getRandomInt: function(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; - }, - - /** - * Transforms degrees to radians. - * @static - * @memberOf fabric.util - * @param {Number} degrees value in degrees - * @return {Number} value in radians - */ - degreesToRadians: function(degrees) { - return degrees * PiBy180; - }, - - /** - * Transforms radians to degrees. - * @static - * @memberOf fabric.util - * @param {Number} radians value in radians - * @return {Number} value in degrees - */ - radiansToDegrees: function(radians) { - return radians / PiBy180; - }, - - /** - * Rotates `point` around `origin` with `radians` - * @static - * @memberOf fabric.util - * @param {fabric.Point} point The point to rotate - * @param {fabric.Point} origin The origin of the rotation - * @param {Number} radians The radians of the angle for the rotation - * @return {fabric.Point} The new rotated point - */ - rotatePoint: function(point, origin, radians) { - var sin = Math.sin(radians), - cos = Math.cos(radians); - - point.subtractEquals(origin); - - var rx = point.x * cos - point.y * sin, - ry = point.x * sin + point.y * cos; - - return new fabric.Point(rx, ry).addEquals(origin); - }, - - /** - * Apply transform t to point p - * @static - * @memberOf fabric.util - * @param {fabric.Point} p The point to transform - * @param {Array} t The transform - * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied - * @return {fabric.Point} The transformed point - */ - transformPoint: function(p, t, ignoreOffset) { - if (ignoreOffset) { - return new fabric.Point( - t[0] * p.x + t[1] * p.y, - t[2] * p.x + t[3] * p.y - ); - } - return new fabric.Point( - t[0] * p.x + t[1] * p.y + t[4], - t[2] * p.x + t[3] * p.y + t[5] - ); - }, - - /** - * Invert transformation t - * @static - * @memberOf fabric.util - * @param {Array} t The transform - * @return {Array} The inverted transform - */ - invertTransform: function(t) { - var r = t.slice(), - a = 1 / (t[0] * t[3] - t[1] * t[2]); - r = [a * t[3], -a * t[1], -a * t[2], a * t[0], 0, 0]; - var o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r); - r[4] = -o.x; - r[5] = -o.y; - return r; - }, - - /** - * A wrapper around Number#toFixed, which contrary to native method returns number, not string. - * @static - * @memberOf fabric.util - * @param {Number|String} number number to operate on - * @param {Number} fractionDigits number of fraction digits to "leave" - * @return {Number} - */ - toFixed: function(number, fractionDigits) { - return parseFloat(Number(number).toFixed(fractionDigits)); - }, - - /** - * Converts from attribute value to pixel value if applicable. - * Returns converted pixels or original value not converted. - * @param {Number|String} value number to operate on - * @return {Number|String} - */ - parseUnit: function(value) { - var unit = /\D{0,2}$/.exec(value), - number = parseFloat(value); - - switch (unit[0]) { - case 'mm': - return number * fabric.DPI / 25.4; - - case 'cm': - return number * fabric.DPI / 2.54; - - case 'in': - return number * fabric.DPI; - - case 'pt': - return number * fabric.DPI / 72; // or * 4 / 3 - - case 'pc': - return number * fabric.DPI / 72 * 12; // or * 16 - - default: - return number; - } - }, - - /** - * Function which always returns `false`. - * @static - * @memberOf fabric.util - * @return {Boolean} - */ - falseFunction: function() { - return false; - }, - - /** - * Returns klass "Class" object of given namespace - * @memberOf fabric.util - * @param {String} type Type of object (eg. 'circle') - * @param {String} namespace Namespace to get klass "Class" object from - * @return {Object} klass "Class" - */ - getKlass: function(type, namespace) { - // capitalize first letter only - type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1)); - return fabric.util.resolveNamespace(namespace)[type]; - }, - - /** - * Returns object of given namespace - * @memberOf fabric.util - * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric' - * @return {Object} Object for given namespace (default fabric) - */ - resolveNamespace: function(namespace) { - if (!namespace) { - return fabric; - } - - var parts = namespace.split('.'), - len = parts.length, - obj = global || fabric.window; - - for (var i = 0; i < len; ++i) { - obj = obj[parts[i]]; - } - - return obj; - }, - - /** - * Loads image element from given url and passes it to a callback - * @memberOf fabric.util - * @param {String} url URL representing an image - * @param {Function} callback Callback; invoked with loaded image - * @param {Any} [context] Context to invoke callback in - * @param {Object} [crossOrigin] crossOrigin value to set image element to - */ - loadImage: function(url, callback, context, crossOrigin) { - if (!url) { - callback && callback.call(context, url); - return; - } - - var img = fabric.util.createImage(); - - /** @ignore */ - img.onload = function () { - callback && callback.call(context, img); - img = img.onload = img.onerror = null; - }; - - /** @ignore */ - img.onerror = function() { - fabric.log('Error loading ' + img.src); - callback && callback.call(context, null, true); - img = img.onload = img.onerror = null; - }; - - // data-urls appear to be buggy with crossOrigin - // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 - // see https://code.google.com/p/chromium/issues/detail?id=315152 - // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 - if (url.indexOf('data') !== 0 && typeof crossOrigin !== 'undefined') { - img.crossOrigin = crossOrigin; - } - - img.src = url; - }, - - /** - * Creates corresponding fabric instances from their object representations - * @static - * @memberOf fabric.util - * @param {Array} objects Objects to enliven - * @param {Function} callback Callback to invoke when all objects are created - * @param {String} namespace Namespace to get klass "Class" object from - * @param {Function} reviver Method for further parsing of object elements, - * called after each fabric object created. - */ - enlivenObjects: function(objects, callback, namespace, reviver) { - objects = objects || [ ]; - - function onLoaded() { - if (++numLoadedObjects === numTotalObjects) { - callback && callback(enlivenedObjects); - } - } - - var enlivenedObjects = [ ], - numLoadedObjects = 0, - numTotalObjects = objects.length; - - if (!numTotalObjects) { - callback && callback(enlivenedObjects); - return; - } - - objects.forEach(function (o, index) { - // if sparse array - if (!o || !o.type) { - onLoaded(); - return; - } - var klass = fabric.util.getKlass(o.type, namespace); - if (klass.async) { - klass.fromObject(o, function (obj, error) { - if (!error) { - enlivenedObjects[index] = obj; - reviver && reviver(o, enlivenedObjects[index]); - } - onLoaded(); - }); - } - else { - enlivenedObjects[index] = klass.fromObject(o); - reviver && reviver(o, enlivenedObjects[index]); - onLoaded(); - } - }); - }, - - /** - * Groups SVG elements (usually those retrieved from SVG document) - * @static - * @memberOf fabric.util - * @param {Array} elements SVG elements to group - * @param {Object} [options] Options object - * @return {fabric.Object|fabric.PathGroup} - */ - groupSVGElements: function(elements, options, path) { - var object; - - object = new fabric.PathGroup(elements, options); - - if (typeof path !== 'undefined') { - object.setSourcePath(path); - } - return object; - }, - - /** - * Populates an object with properties of another object - * @static - * @memberOf fabric.util - * @param {Object} source Source object - * @param {Object} destination Destination object - * @return {Array} properties Propertie names to include - */ - populateWithProperties: function(source, destination, properties) { - if (properties && Object.prototype.toString.call(properties) === '[object Array]') { - for (var i = 0, len = properties.length; i < len; i++) { - if (properties[i] in source) { - destination[properties[i]] = source[properties[i]]; - } - } - } - }, - - /** - * Draws a dashed line between two points - * - * This method is used to draw dashed line around selection area. - * See dotted stroke in canvas - * - * @param {CanvasRenderingContext2D} ctx context - * @param {Number} x start x coordinate - * @param {Number} y start y coordinate - * @param {Number} x2 end x coordinate - * @param {Number} y2 end y coordinate - * @param {Array} da dash array pattern - */ - drawDashedLine: function(ctx, x, y, x2, y2, da) { - var dx = x2 - x, - dy = y2 - y, - len = sqrt(dx * dx + dy * dy), - rot = atan2(dy, dx), - dc = da.length, - di = 0, - draw = true; - - ctx.save(); - ctx.translate(x, y); - ctx.moveTo(0, 0); - ctx.rotate(rot); - - x = 0; - while (len > x) { - x += da[di++ % dc]; - if (x > len) { - x = len; - } - ctx[draw ? 'lineTo' : 'moveTo'](x, 0); - draw = !draw; - } - - ctx.restore(); - }, - - /** - * Creates canvas element and initializes it via excanvas if necessary - * @static - * @memberOf fabric.util - * @param {CanvasElement} [canvasEl] optional canvas element to initialize; - * when not given, element is created implicitly - * @return {CanvasElement} initialized canvas element - */ - createCanvasElement: function(canvasEl) { - canvasEl || (canvasEl = fabric.document.createElement('canvas')); - //jscs:disable requireCamelCaseOrUpperCaseIdentifiers - if (!canvasEl.getContext && typeof G_vmlCanvasManager !== 'undefined') { - G_vmlCanvasManager.initElement(canvasEl); - } - //jscs:enable requireCamelCaseOrUpperCaseIdentifiers - return canvasEl; - }, - - /** - * Creates image element (works on client and node) - * @static - * @memberOf fabric.util - * @return {HTMLImageElement} HTML image element - */ - createImage: function() { - return fabric.isLikelyNode - ? new (_dereq_('canvas').Image)() - : fabric.document.createElement('img'); - }, - - /** - * Creates accessors (getXXX, setXXX) for a "class", based on "stateProperties" array - * @static - * @memberOf fabric.util - * @param {Object} klass "Class" to create accessors for - */ - createAccessors: function(klass) { - var proto = klass.prototype; - - for (var i = proto.stateProperties.length; i--; ) { - - var propName = proto.stateProperties[i], - capitalizedPropName = propName.charAt(0).toUpperCase() + propName.slice(1), - setterName = 'set' + capitalizedPropName, - getterName = 'get' + capitalizedPropName; - - // using `new Function` for better introspection - if (!proto[getterName]) { - proto[getterName] = (function(property) { - return new Function('return this.get("' + property + '")'); - })(propName); - } - if (!proto[setterName]) { - proto[setterName] = (function(property) { - return new Function('value', 'return this.set("' + property + '", value)'); - })(propName); - } - } - }, - - /** - * @static - * @memberOf fabric.util - * @param {fabric.Object} receiver Object implementing `clipTo` method - * @param {CanvasRenderingContext2D} ctx Context to clip - */ - clipContext: function(receiver, ctx) { - ctx.save(); - ctx.beginPath(); - receiver.clipTo(ctx); - ctx.clip(); - }, - - /** - * Multiply matrix A by matrix B to nest transformations - * @static - * @memberOf fabric.util - * @param {Array} matrixA First transformMatrix - * @param {Array} matrixB Second transformMatrix - * @return {Array} The product of the two transform matrices - */ - multiplyTransformMatrices: function(matrixA, matrixB) { - // Matrix multiply matrixA * matrixB - var a = [ - [matrixA[0], matrixA[2], matrixA[4]], - [matrixA[1], matrixA[3], matrixA[5]], - [0, 0, 1 ] - ], - - b = [ - [matrixB[0], matrixB[2], matrixB[4]], - [matrixB[1], matrixB[3], matrixB[5]], - [0, 0, 1 ] - ], - - result = []; - - for (var r = 0; r < 3; r++) { - result[r] = []; - for (var c = 0; c < 3; c++) { - var sum = 0; - for (var k = 0; k < 3; k++) { - sum += a[r][k] * b[k][c]; - } - - result[r][c] = sum; - } - } - - return [ - result[0][0], - result[1][0], - result[0][1], - result[1][1], - result[0][2], - result[1][2] - ]; - }, - - /** - * Returns string representation of function body - * @param {Function} fn Function to get body of - * @return {String} Function body - */ - getFunctionBody: function(fn) { - return (String(fn).match(/function[^{]*\{([\s\S]*)\}/) || {})[1]; - }, - - /** - * Returns true if context has transparent pixel - * at specified location (taking tolerance into account) - * @param {CanvasRenderingContext2D} ctx context - * @param {Number} x x coordinate - * @param {Number} y y coordinate - * @param {Number} tolerance Tolerance - */ - isTransparent: function(ctx, x, y, tolerance) { - - // If tolerance is > 0 adjust start coords to take into account. - // If moves off Canvas fix to 0 - if (tolerance > 0) { - if (x > tolerance) { - x -= tolerance; - } - else { - x = 0; - } - if (y > tolerance) { - y -= tolerance; - } - else { - y = 0; - } - } - - var _isTransparent = true, - imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1); - - // Split image data - for tolerance > 1, pixelDataSize = 4; - for (var i = 3, l = imageData.data.length; i < l; i += 4) { - var temp = imageData.data[i]; - _isTransparent = temp <= 0; - if (_isTransparent === false) { - break; // Stop if colour found - } - } - - imageData = null; - - return _isTransparent; - } - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - var arcToSegmentsCache = { }, - segmentToBezierCache = { }, - _join = Array.prototype.join; - - /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp - * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here - * http://mozilla.org/MPL/2.0/ - */ - function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) { - var argsString = _join.call(arguments); - if (arcToSegmentsCache[argsString]) { - return arcToSegmentsCache[argsString]; - } - - var PI = Math.PI, th = rotateX * (PI / 180), - sinTh = Math.sin(th), - cosTh = Math.cos(th), - fromX = 0, fromY = 0; - - rx = Math.abs(rx); - ry = Math.abs(ry); - - var px = -cosTh * toX - sinTh * toY, - py = -cosTh * toY + sinTh * toX, - rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px, - pl = 4 * rx2 * ry2 - rx2 * py2 - ry2 * px2, - root = 0; - - if (pl < 0) { - var s = Math.sqrt(1 - 0.25 * pl/(rx2 * ry2)); - rx *= s; - ry *= s; - } - else { - root = (large === sweep ? -0.5 : 0.5) * - Math.sqrt( pl /(rx2 * py2 + ry2 * px2)); - } - - var cx = root * rx * py / ry, - cy = -root * ry * px / rx, - cx1 = cosTh * cx - sinTh * cy + toX / 2, - cy1 = sinTh * cx + cosTh * cy + toY / 2, - mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry), - dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry); - - if (sweep === 0 && dtheta > 0) { - dtheta -= 2 * PI; - } - else if (sweep === 1 && dtheta < 0) { - dtheta += 2 * PI; - } - - // Convert into cubic bezier segments <= 90deg - var segments = Math.ceil(Math.abs(dtheta / (PI * 0.5))), - result = [], mDelta = dtheta / segments, - mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2), - th3 = mTheta + mDelta; - - for (var i = 0; i < segments; i++) { - result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY); - fromX = result[i][4]; - fromY = result[i][5]; - mTheta += mDelta; - th3 += mDelta; - } - arcToSegmentsCache[argsString] = result; - return result; - } - - function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) { - var argsString2 = _join.call(arguments); - if (segmentToBezierCache[argsString2]) { - return segmentToBezierCache[argsString2]; - } - - var costh2 = Math.cos(th2), - sinth2 = Math.sin(th2), - costh3 = Math.cos(th3), - sinth3 = Math.sin(th3), - toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1, - toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1, - cp1X = fromX + mT * ( - cosTh * rx * sinth2 - sinTh * ry * costh2), - cp1Y = fromY + mT * ( - sinTh * rx * sinth2 + cosTh * ry * costh2), - cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3), - cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3); - - segmentToBezierCache[argsString2] = [ - cp1X, cp1Y, - cp2X, cp2Y, - toX, toY - ]; - return segmentToBezierCache[argsString2]; - } - - /* - * Private - */ - function calcVectorAngle(ux, uy, vx, vy) { - var ta = Math.atan2(uy, ux), - tb = Math.atan2(vy, vx); - if (tb >= ta) { - return tb - ta; - } - else { - return 2 * Math.PI - (ta - tb); - } - } - - /** - * Draws arc - * @param {CanvasRenderingContext2D} ctx - * @param {Number} fx - * @param {Number} fy - * @param {Array} coords - */ - fabric.util.drawArc = function(ctx, fx, fy, coords) { - var rx = coords[0], - ry = coords[1], - rot = coords[2], - large = coords[3], - sweep = coords[4], - tx = coords[5], - ty = coords[6], - segs = [[ ], [ ], [ ], [ ]], - segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot); - - for (var i = 0, len = segsNorm.length; i < len; i++) { - segs[i][0] = segsNorm[i][0] + fx; - segs[i][1] = segsNorm[i][1] + fy; - segs[i][2] = segsNorm[i][2] + fx; - segs[i][3] = segsNorm[i][3] + fy; - segs[i][4] = segsNorm[i][4] + fx; - segs[i][5] = segsNorm[i][5] + fy; - ctx.bezierCurveTo.apply(ctx, segs[i]); - } - }; -})(); - - -(function() { - - var slice = Array.prototype.slice; - - - - /** - * Invokes method on all items in a given array - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} method Name of a method to invoke - * @return {Array} - */ - function invoke(array, method) { - var args = slice.call(arguments, 2), result = [ ]; - for (var i = 0, len = array.length; i < len; i++) { - result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]); - } - return result; - } - - /** - * Finds maximum value in array (not necessarily "first" one) - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} byProperty - * @return {Any} - */ - function max(array, byProperty) { - return find(array, byProperty, function(value1, value2) { - return value1 >= value2; - }); - } - - /** - * Finds minimum value in array (not necessarily "first" one) - * @memberOf fabric.util.array - * @param {Array} array Array to iterate over - * @param {String} byProperty - * @return {Any} - */ - function min(array, byProperty) { - return find(array, byProperty, function(value1, value2) { - return value1 < value2; - }); - } - - /** - * @private - */ - function find(array, byProperty, condition) { - if (!array || array.length === 0) { - return; - } - - var i = array.length - 1, - result = byProperty ? array[i][byProperty] : array[i]; - if (byProperty) { - while (i--) { - if (condition(array[i][byProperty], result)) { - result = array[i][byProperty]; - } - } - } - else { - while (i--) { - if (condition(array[i], result)) { - result = array[i]; - } - } - } - return result; - } - - /** - * @namespace fabric.util.array - */ - fabric.util.array = { - invoke: invoke, - min: min, - max: max - }; - -})(); - - -(function(){ - - /** - * Copies all enumerable properties of one object to another - * @memberOf fabric.util.object - * @param {Object} destination Where to copy to - * @param {Object} source Where to copy from - * @return {Object} - */ - function extend(destination, source) { - // JScript DontEnum bug is not taken care of - for (var property in source) { - destination[property] = source[property]; - } - return destination; - } - - /** - * Creates an empty object and copies all enumerable properties of another object to it - * @memberOf fabric.util.object - * @param {Object} object Object to clone - * @return {Object} - */ - function clone(object) { - return extend({ }, object); - } - - /** @namespace fabric.util.object */ - fabric.util.object = { - extend: extend, - clone: clone - }; - -})(); - - -(function() { - - - - /** - * Camelizes a string - * @memberOf fabric.util.string - * @param {String} string String to camelize - * @return {String} Camelized version of a string - */ - function camelize(string) { - return string.replace(/-+(.)?/g, function(match, character) { - return character ? character.toUpperCase() : ''; - }); - } - - /** - * Capitalizes a string - * @memberOf fabric.util.string - * @param {String} string String to capitalize - * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized - * and other letters stay untouched, if false first letter is capitalized - * and other letters are converted to lowercase. - * @return {String} Capitalized version of a string - */ - function capitalize(string, firstLetterOnly) { - return string.charAt(0).toUpperCase() + - (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase()); - } - - /** - * Escapes XML in a string - * @memberOf fabric.util.string - * @param {String} string String to escape - * @return {String} Escaped version of a string - */ - function escapeXml(string) { - return string.replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>'); - } - - /** - * String utilities - * @namespace fabric.util.string - */ - fabric.util.string = { - camelize: camelize, - capitalize: capitalize, - escapeXml: escapeXml - }; -}()); - - - - - -(function() { - - var slice = Array.prototype.slice, emptyFunction = function() { }, - - IS_DONTENUM_BUGGY = (function(){ - for (var p in { toString: 1 }) { - if (p === 'toString') { - return false; - } - } - return true; - })(), - - /** @ignore */ - addMethods = function(klass, source, parent) { - for (var property in source) { - - if (property in klass.prototype && - typeof klass.prototype[property] === 'function' && - (source[property] + '').indexOf('callSuper') > -1) { - - klass.prototype[property] = (function(property) { - return function() { - - var superclass = this.constructor.superclass; - this.constructor.superclass = parent; - var returnValue = source[property].apply(this, arguments); - this.constructor.superclass = superclass; - - if (property !== 'initialize') { - return returnValue; - } - }; - })(property); - } - else { - klass.prototype[property] = source[property]; - } - - if (IS_DONTENUM_BUGGY) { - if (source.toString !== Object.prototype.toString) { - klass.prototype.toString = source.toString; - } - if (source.valueOf !== Object.prototype.valueOf) { - klass.prototype.valueOf = source.valueOf; - } - } - } - }; - - function Subclass() { } - - function callSuper(methodName) { - var fn = this.constructor.superclass.prototype[methodName]; - return (arguments.length > 1) - ? fn.apply(this, slice.call(arguments, 1)) - : fn.call(this); - } - - /** - * Helper for creation of "classes". - * @memberOf fabric.util - * @param {Function} [parent] optional "Class" to inherit from - * @param {Object} [properties] Properties shared by all instances of this class - * (be careful modifying objects defined here as this would affect all instances) - */ - function createClass() { - var parent = null, - properties = slice.call(arguments, 0); - - if (typeof properties[0] === 'function') { - parent = properties.shift(); - } - function klass() { - this.initialize.apply(this, arguments); - } - - klass.superclass = parent; - klass.subclasses = [ ]; - - if (parent) { - Subclass.prototype = parent.prototype; - klass.prototype = new Subclass(); - parent.subclasses.push(klass); - } - for (var i = 0, length = properties.length; i < length; i++) { - addMethods(klass, properties[i], parent); - } - if (!klass.prototype.initialize) { - klass.prototype.initialize = emptyFunction; - } - klass.prototype.constructor = klass; - klass.prototype.callSuper = callSuper; - return klass; - } - - fabric.util.createClass = createClass; -})(); - - -(function () { - - var unknown = 'unknown'; - - /* EVENT HANDLING */ - - function areHostMethods(object) { - var methodNames = Array.prototype.slice.call(arguments, 1), - t, i, len = methodNames.length; - for (i = 0; i < len; i++) { - t = typeof object[methodNames[i]]; - if (!(/^(?:function|object|unknown)$/).test(t)) { - return false; - } - } - return true; - } - - /** @ignore */ - var getElement, - setElement, - getUniqueId = (function () { - var uid = 0; - return function (element) { - return element.__uniqueID || (element.__uniqueID = 'uniqueID__' + uid++); - }; - })(); - - (function () { - var elements = { }; - /** @ignore */ - getElement = function (uid) { - return elements[uid]; - }; - /** @ignore */ - setElement = function (uid, element) { - elements[uid] = element; - }; - })(); - - function createListener(uid, handler) { - return { - handler: handler, - wrappedHandler: createWrappedHandler(uid, handler) - }; - } - - function createWrappedHandler(uid, handler) { - return function (e) { - handler.call(getElement(uid), e || fabric.window.event); - }; - } - - function createDispatcher(uid, eventName) { - return function (e) { - if (handlers[uid] && handlers[uid][eventName]) { - var handlersForEvent = handlers[uid][eventName]; - for (var i = 0, len = handlersForEvent.length; i < len; i++) { - handlersForEvent[i].call(this, e || fabric.window.event); - } - } - }; - } - - var shouldUseAddListenerRemoveListener = ( - areHostMethods(fabric.document.documentElement, 'addEventListener', 'removeEventListener') && - areHostMethods(fabric.window, 'addEventListener', 'removeEventListener')), - - shouldUseAttachEventDetachEvent = ( - areHostMethods(fabric.document.documentElement, 'attachEvent', 'detachEvent') && - areHostMethods(fabric.window, 'attachEvent', 'detachEvent')), - - // IE branch - listeners = { }, - - // DOM L0 branch - handlers = { }, - - addListener, removeListener; - - if (shouldUseAddListenerRemoveListener) { - /** @ignore */ - addListener = function (element, eventName, handler) { - element.addEventListener(eventName, handler, false); - }; - /** @ignore */ - removeListener = function (element, eventName, handler) { - element.removeEventListener(eventName, handler, false); - }; - } - - else if (shouldUseAttachEventDetachEvent) { - /** @ignore */ - addListener = function (element, eventName, handler) { - var uid = getUniqueId(element); - setElement(uid, element); - if (!listeners[uid]) { - listeners[uid] = { }; - } - if (!listeners[uid][eventName]) { - listeners[uid][eventName] = [ ]; - - } - var listener = createListener(uid, handler); - listeners[uid][eventName].push(listener); - element.attachEvent('on' + eventName, listener.wrappedHandler); - }; - /** @ignore */ - removeListener = function (element, eventName, handler) { - var uid = getUniqueId(element), listener; - if (listeners[uid] && listeners[uid][eventName]) { - for (var i = 0, len = listeners[uid][eventName].length; i < len; i++) { - listener = listeners[uid][eventName][i]; - if (listener && listener.handler === handler) { - element.detachEvent('on' + eventName, listener.wrappedHandler); - listeners[uid][eventName][i] = null; - } - } - } - }; - } - else { - /** @ignore */ - addListener = function (element, eventName, handler) { - var uid = getUniqueId(element); - if (!handlers[uid]) { - handlers[uid] = { }; - } - if (!handlers[uid][eventName]) { - handlers[uid][eventName] = [ ]; - var existingHandler = element['on' + eventName]; - if (existingHandler) { - handlers[uid][eventName].push(existingHandler); - } - element['on' + eventName] = createDispatcher(uid, eventName); - } - handlers[uid][eventName].push(handler); - }; - /** @ignore */ - removeListener = function (element, eventName, handler) { - var uid = getUniqueId(element); - if (handlers[uid] && handlers[uid][eventName]) { - var handlersForEvent = handlers[uid][eventName]; - for (var i = 0, len = handlersForEvent.length; i < len; i++) { - if (handlersForEvent[i] === handler) { - handlersForEvent.splice(i, 1); - } - } - } - }; - } - - /** - * Adds an event listener to an element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {String} eventName - * @param {Function} handler - */ - fabric.util.addListener = addListener; - - /** - * Removes an event listener from an element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {String} eventName - * @param {Function} handler - */ - fabric.util.removeListener = removeListener; - - /** - * Cross-browser wrapper for getting event's coordinates - * @memberOf fabric.util - * @param {Event} event Event object - * @param {HTMLCanvasElement} upperCanvasEl <canvas> element on which object selection is drawn - */ - function getPointer(event, upperCanvasEl) { - event || (event = fabric.window.event); - - var element = event.target || - (typeof event.srcElement !== unknown ? event.srcElement : null), - - scroll = fabric.util.getScrollLeftTop(element, upperCanvasEl); - - return { - x: pointerX(event) + scroll.left, - y: pointerY(event) + scroll.top - }; - } - - var pointerX = function(event) { - // looks like in IE (<9) clientX at certain point (apparently when mouseup fires on VML element) - // is represented as COM object, with all the consequences, like "unknown" type and error on [[Get]] - // need to investigate later - return (typeof event.clientX !== unknown ? event.clientX : 0); - }, - - pointerY = function(event) { - return (typeof event.clientY !== unknown ? event.clientY : 0); - }; - - function _getPointer(event, pageProp, clientProp) { - var touchProp = event.type === 'touchend' ? 'changedTouches' : 'touches'; - - return (event[touchProp] && event[touchProp][0] - ? (event[touchProp][0][pageProp] - (event[touchProp][0][pageProp] - event[touchProp][0][clientProp])) - || event[clientProp] - : event[clientProp]); - } - - if (fabric.isTouchSupported) { - pointerX = function(event) { - return _getPointer(event, 'pageX', 'clientX'); - }; - pointerY = function(event) { - return _getPointer(event, 'pageY', 'clientY'); - }; - } - - fabric.util.getPointer = getPointer; - - fabric.util.object.extend(fabric.util, fabric.Observable); - -})(); - - -(function () { - - /** - * Cross-browser wrapper for setting element's style - * @memberOf fabric.util - * @param {HTMLElement} element - * @param {Object} styles - * @return {HTMLElement} Element that was passed as a first argument - */ - function setStyle(element, styles) { - var elementStyle = element.style; - if (!elementStyle) { - return element; - } - if (typeof styles === 'string') { - element.style.cssText += ';' + styles; - return styles.indexOf('opacity') > -1 - ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) - : element; - } - for (var property in styles) { - if (property === 'opacity') { - setOpacity(element, styles[property]); - } - else { - var normalizedProperty = (property === 'float' || property === 'cssFloat') - ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') - : property; - elementStyle[normalizedProperty] = styles[property]; - } - } - return element; - } - - var parseEl = fabric.document.createElement('div'), - supportsOpacity = typeof parseEl.style.opacity === 'string', - supportsFilters = typeof parseEl.style.filter === 'string', - reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, - - /** @ignore */ - setOpacity = function (element) { return element; }; - - if (supportsOpacity) { - /** @ignore */ - setOpacity = function(element, value) { - element.style.opacity = value; - return element; - }; - } - else if (supportsFilters) { - /** @ignore */ - setOpacity = function(element, value) { - var es = element.style; - if (element.currentStyle && !element.currentStyle.hasLayout) { - es.zoom = 1; - } - if (reOpacity.test(es.filter)) { - value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')'); - es.filter = es.filter.replace(reOpacity, value); - } - else { - es.filter += ' alpha(opacity=' + (value * 100) + ')'; - } - return element; - }; - } - - fabric.util.setStyle = setStyle; - -})(); - - -(function() { - - var _slice = Array.prototype.slice; - - /** - * Takes id and returns an element with that id (if one exists in a document) - * @memberOf fabric.util - * @param {String|HTMLElement} id - * @return {HTMLElement|null} - */ - function getById(id) { - return typeof id === 'string' ? fabric.document.getElementById(id) : id; - } - - var sliceCanConvertNodelists, - /** - * Converts an array-like object (e.g. arguments or NodeList) to an array - * @memberOf fabric.util - * @param {Object} arrayLike - * @return {Array} - */ - toArray = function(arrayLike) { - return _slice.call(arrayLike, 0); - }; - - try { - sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array; - } - catch (err) { } - - if (!sliceCanConvertNodelists) { - toArray = function(arrayLike) { - var arr = new Array(arrayLike.length), i = arrayLike.length; - while (i--) { - arr[i] = arrayLike[i]; - } - return arr; - }; - } - - /** - * Creates specified element with specified attributes - * @memberOf fabric.util - * @param {String} tagName Type of an element to create - * @param {Object} [attributes] Attributes to set on an element - * @return {HTMLElement} Newly created element - */ - function makeElement(tagName, attributes) { - var el = fabric.document.createElement(tagName); - for (var prop in attributes) { - if (prop === 'class') { - el.className = attributes[prop]; - } - else if (prop === 'for') { - el.htmlFor = attributes[prop]; - } - else { - el.setAttribute(prop, attributes[prop]); - } - } - return el; - } - - /** - * Adds class to an element - * @memberOf fabric.util - * @param {HTMLElement} element Element to add class to - * @param {String} className Class to add to an element - */ - function addClass(element, className) { - if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) { - element.className += (element.className ? ' ' : '') + className; - } - } - - /** - * Wraps element with another element - * @memberOf fabric.util - * @param {HTMLElement} element Element to wrap - * @param {HTMLElement|String} wrapper Element to wrap with - * @param {Object} [attributes] Attributes to set on a wrapper - * @return {HTMLElement} wrapper - */ - function wrapElement(element, wrapper, attributes) { - if (typeof wrapper === 'string') { - wrapper = makeElement(wrapper, attributes); - } - if (element.parentNode) { - element.parentNode.replaceChild(wrapper, element); - } - wrapper.appendChild(element); - return wrapper; - } - - /** - * Returns element scroll offsets - * @memberOf fabric.util - * @param {HTMLElement} element Element to operate on - * @param {HTMLElement} upperCanvasEl Upper canvas element - * @return {Object} Object with left/top values - */ - function getScrollLeftTop(element, upperCanvasEl) { - - var firstFixedAncestor, - origElement, - left = 0, - top = 0, - docElement = fabric.document.documentElement, - body = fabric.document.body || { - scrollLeft: 0, scrollTop: 0 - }; - - origElement = element; - - while (element && element.parentNode && !firstFixedAncestor) { - - element = element.parentNode; - - if (element !== fabric.document && - fabric.util.getElementStyle(element, 'position') === 'fixed') { - firstFixedAncestor = element; - } - - if (element !== fabric.document && - origElement !== upperCanvasEl && - fabric.util.getElementStyle(element, 'position') === 'absolute') { - left = 0; - top = 0; - } - else if (element === fabric.document) { - left = body.scrollLeft || docElement.scrollLeft || 0; - top = body.scrollTop || docElement.scrollTop || 0; - } - else { - left += element.scrollLeft || 0; - top += element.scrollTop || 0; - } - } - - return { left: left, top: top }; - } - - /** - * Returns offset for a given element - * @function - * @memberOf fabric.util - * @param {HTMLElement} element Element to get offset for - * @return {Object} Object with "left" and "top" properties - */ - function getElementOffset(element) { - var docElem, - doc = element && element.ownerDocument, - box = { left: 0, top: 0 }, - offset = { left: 0, top: 0 }, - scrollLeftTop, - offsetAttributes = { - borderLeftWidth: 'left', - borderTopWidth: 'top', - paddingLeft: 'left', - paddingTop: 'top' - }; - - if (!doc) { - return { left: 0, top: 0 }; - } - - for (var attr in offsetAttributes) { - offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0; - } - - docElem = doc.documentElement; - if ( typeof element.getBoundingClientRect !== 'undefined' ) { - box = element.getBoundingClientRect(); - } - - scrollLeftTop = fabric.util.getScrollLeftTop(element, null); - - return { - left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left, - top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top - }; - } - - /** - * Returns style attribute value of a given element - * @memberOf fabric.util - * @param {HTMLElement} element Element to get style attribute for - * @param {String} attr Style attribute to get for element - * @return {String} Style attribute value of the given element. - */ - var getElementStyle; - if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) { - getElementStyle = function(element, attr) { - return fabric.document.defaultView.getComputedStyle(element, null)[attr]; - }; - } - else { - getElementStyle = function(element, attr) { - var value = element.style[attr]; - if (!value && element.currentStyle) { - value = element.currentStyle[attr]; - } - return value; - }; - } - - (function () { - var style = fabric.document.documentElement.style, - selectProp = 'userSelect' in style - ? 'userSelect' - : 'MozUserSelect' in style - ? 'MozUserSelect' - : 'WebkitUserSelect' in style - ? 'WebkitUserSelect' - : 'KhtmlUserSelect' in style - ? 'KhtmlUserSelect' - : ''; - - /** - * Makes element unselectable - * @memberOf fabric.util - * @param {HTMLElement} element Element to make unselectable - * @return {HTMLElement} Element that was passed in - */ - function makeElementUnselectable(element) { - if (typeof element.onselectstart !== 'undefined') { - element.onselectstart = fabric.util.falseFunction; - } - if (selectProp) { - element.style[selectProp] = 'none'; - } - else if (typeof element.unselectable === 'string') { - element.unselectable = 'on'; - } - return element; - } - - /** - * Makes element selectable - * @memberOf fabric.util - * @param {HTMLElement} element Element to make selectable - * @return {HTMLElement} Element that was passed in - */ - function makeElementSelectable(element) { - if (typeof element.onselectstart !== 'undefined') { - element.onselectstart = null; - } - if (selectProp) { - element.style[selectProp] = ''; - } - else if (typeof element.unselectable === 'string') { - element.unselectable = ''; - } - return element; - } - - fabric.util.makeElementUnselectable = makeElementUnselectable; - fabric.util.makeElementSelectable = makeElementSelectable; - })(); - - (function() { - - /** - * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading - * @memberOf fabric.util - * @param {String} url URL of a script to load - * @param {Function} callback Callback to execute when script is finished loading - */ - function getScript(url, callback) { - var headEl = fabric.document.getElementsByTagName('head')[0], - scriptEl = fabric.document.createElement('script'), - loading = true; - - /** @ignore */ - scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) { - if (loading) { - if (typeof this.readyState === 'string' && - this.readyState !== 'loaded' && - this.readyState !== 'complete') { - return; - } - loading = false; - callback(e || fabric.window.event); - scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null; - } - }; - scriptEl.src = url; - headEl.appendChild(scriptEl); - // causes issue in Opera - // headEl.removeChild(scriptEl); - } - - fabric.util.getScript = getScript; - })(); - - fabric.util.getById = getById; - fabric.util.toArray = toArray; - fabric.util.makeElement = makeElement; - fabric.util.addClass = addClass; - fabric.util.wrapElement = wrapElement; - fabric.util.getScrollLeftTop = getScrollLeftTop; - fabric.util.getElementOffset = getElementOffset; - fabric.util.getElementStyle = getElementStyle; - -})(); - - -(function(){ - - function addParamToUrl(url, param) { - return url + (/\?/.test(url) ? '&' : '?') + param; - } - - var makeXHR = (function() { - var factories = [ - function() { return new ActiveXObject('Microsoft.XMLHTTP'); }, - function() { return new ActiveXObject('Msxml2.XMLHTTP'); }, - function() { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); }, - function() { return new XMLHttpRequest(); } - ]; - for (var i = factories.length; i--; ) { - try { - var req = factories[i](); - if (req) { - return factories[i]; - } - } - catch (err) { } - } - })(); - - function emptyFn() { } - - /** - * Cross-browser abstraction for sending XMLHttpRequest - * @memberOf fabric.util - * @param {String} url URL to send XMLHttpRequest to - * @param {Object} [options] Options object - * @param {String} [options.method="GET"] - * @param {Function} options.onComplete Callback to invoke when request is completed - * @return {XMLHttpRequest} request - */ - function request(url, options) { - - options || (options = { }); - - var method = options.method ? options.method.toUpperCase() : 'GET', - onComplete = options.onComplete || function() { }, - xhr = makeXHR(), - body; - - /** @ignore */ - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - onComplete(xhr); - xhr.onreadystatechange = emptyFn; - } - }; - - if (method === 'GET') { - body = null; - if (typeof options.parameters === 'string') { - url = addParamToUrl(url, options.parameters); - } - } - - xhr.open(method, url, true); - - if (method === 'POST' || method === 'PUT') { - xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - - xhr.send(body); - return xhr; - } - - fabric.util.request = request; -})(); - - -/** - * Wrapper around `console.log` (when available) - * @param {Any} [values] Values to log - */ -fabric.log = function() { }; - -/** - * Wrapper around `console.warn` (when available) - * @param {Any} [values] Values to log as a warning - */ -fabric.warn = function() { }; - -if (typeof console !== 'undefined') { - ['log', 'warn'].forEach(function(methodName) { - if (typeof console[methodName] !== 'undefined' && console[methodName].apply) { - fabric[methodName] = function() { - return console[methodName].apply(console, arguments); - }; - } - }); -} - - -(function(global) { - - 'use strict'; - - /** - * @name fabric - * @namespace - */ - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - capitalize = fabric.util.string.capitalize, - clone = fabric.util.object.clone, - toFixed = fabric.util.toFixed, - parseUnit = fabric.util.parseUnit, - multiplyTransformMatrices = fabric.util.multiplyTransformMatrices, - - attributesMap = { - cx: 'left', - x: 'left', - r: 'radius', - cy: 'top', - y: 'top', - display: 'visible', - visibility: 'visible', - transform: 'transformMatrix', - 'fill-opacity': 'fillOpacity', - 'fill-rule': 'fillRule', - 'font-family': 'fontFamily', - 'font-size': 'fontSize', - 'font-style': 'fontStyle', - 'font-weight': 'fontWeight', - 'stroke-dasharray': 'strokeDashArray', - 'stroke-linecap': 'strokeLineCap', - 'stroke-linejoin': 'strokeLineJoin', - 'stroke-miterlimit': 'strokeMiterLimit', - 'stroke-opacity': 'strokeOpacity', - 'stroke-width': 'strokeWidth', - 'text-decoration': 'textDecoration', - 'text-anchor': 'originX' - }, - - colorAttributes = { - stroke: 'strokeOpacity', - fill: 'fillOpacity' - }; - - function normalizeAttr(attr) { - // transform attribute names - if (attr in attributesMap) { - return attributesMap[attr]; - } - return attr; - } - - function normalizeValue(attr, value, parentAttributes) { - var isArray = Object.prototype.toString.call(value) === '[object Array]', - parsed; - - if ((attr === 'fill' || attr === 'stroke') && value === 'none') { - value = ''; - } - else if (attr === 'fillRule') { - value = (value === 'evenodd') ? 'destination-over' : value; - } - else if (attr === 'strokeDashArray') { - value = value.replace(/,/g, ' ').split(/\s+/).map(function(n) { - return parseInt(n); - }); - } - else if (attr === 'transformMatrix') { - if (parentAttributes && parentAttributes.transformMatrix) { - value = multiplyTransformMatrices( - parentAttributes.transformMatrix, fabric.parseTransformAttribute(value)); - } - else { - value = fabric.parseTransformAttribute(value); - } - } - else if (attr === 'visible') { - value = (value === 'none' || value === 'hidden') ? false : true; - // display=none on parent element always takes precedence over child element - if (parentAttributes && parentAttributes.visible === false) { - value = false; - } - } - else if (attr === 'originX' /* text-anchor */) { - value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center'; - } - else { - parsed = isArray ? value.map(parseUnit) : parseUnit(value); - } - - return (!isArray && isNaN(parsed) ? value : parsed); - } - - /** - * @private - * @param {Object} attributes Array of attributes to parse - */ - function _setStrokeFillOpacity(attributes) { - for (var attr in colorAttributes) { - - if (!attributes[attr] || typeof attributes[colorAttributes[attr]] === 'undefined') { - continue; - } - - if (attributes[attr].indexOf('url(') === 0) { - continue; - } - - var color = new fabric.Color(attributes[attr]); - attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba(); - } - return attributes; - } - - /** - * Parses "transform" attribute, returning an array of values - * @static - * @function - * @memberOf fabric - * @param {String} attributeValue String containing attribute value - * @return {Array} Array of 6 elements representing transformation matrix - */ - fabric.parseTransformAttribute = (function() { - function rotateMatrix(matrix, args) { - var angle = args[0]; - - matrix[0] = Math.cos(angle); - matrix[1] = Math.sin(angle); - matrix[2] = -Math.sin(angle); - matrix[3] = Math.cos(angle); - } - - function scaleMatrix(matrix, args) { - var multiplierX = args[0], - multiplierY = (args.length === 2) ? args[1] : args[0]; - - matrix[0] = multiplierX; - matrix[3] = multiplierY; - } - - function skewXMatrix(matrix, args) { - matrix[2] = args[0]; - } - - function skewYMatrix(matrix, args) { - matrix[1] = args[0]; - } - - function translateMatrix(matrix, args) { - matrix[4] = args[0]; - if (args.length === 2) { - matrix[5] = args[1]; - } - } - - // identity matrix - var iMatrix = [ - 1, // a - 0, // b - 0, // c - 1, // d - 0, // e - 0 // f - ], - - // == begin transform regexp - number = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', - - commaWsp = '(?:\\s+,?\\s*|,\\s*)', - - skewX = '(?:(skewX)\\s*\\(\\s*(' + number + ')\\s*\\))', - - skewY = '(?:(skewY)\\s*\\(\\s*(' + number + ')\\s*\\))', - - rotate = '(?:(rotate)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + ')' + - commaWsp + '(' + number + '))?\\s*\\))', - - scale = '(?:(scale)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + '))?\\s*\\))', - - translate = '(?:(translate)\\s*\\(\\s*(' + number + ')(?:' + - commaWsp + '(' + number + '))?\\s*\\))', - - matrix = '(?:(matrix)\\s*\\(\\s*' + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + commaWsp + - '(' + number + ')' + - '\\s*\\))', - - transform = '(?:' + - matrix + '|' + - translate + '|' + - scale + '|' + - rotate + '|' + - skewX + '|' + - skewY + - ')', - - transforms = '(?:' + transform + '(?:' + commaWsp + transform + ')*' + ')', - - transformList = '^\\s*(?:' + transforms + '?)\\s*$', - - // http://www.w3.org/TR/SVG/coords.html#TransformAttribute - reTransformList = new RegExp(transformList), - // == end transform regexp - - reTransform = new RegExp(transform, 'g'); - - return function(attributeValue) { - - // start with identity matrix - var matrix = iMatrix.concat(), - matrices = [ ]; - - // return if no argument was given or - // an argument does not match transform attribute regexp - if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) { - return matrix; - } - - attributeValue.replace(reTransform, function(match) { - - var m = new RegExp(transform).exec(match).filter(function (match) { - return (match !== '' && match != null); - }), - operation = m[1], - args = m.slice(2).map(parseFloat); - - switch (operation) { - case 'translate': - translateMatrix(matrix, args); - break; - case 'rotate': - args[0] = fabric.util.degreesToRadians(args[0]); - rotateMatrix(matrix, args); - break; - case 'scale': - scaleMatrix(matrix, args); - break; - case 'skewX': - skewXMatrix(matrix, args); - break; - case 'skewY': - skewYMatrix(matrix, args); - break; - case 'matrix': - matrix = args; - break; - } - - // snapshot current matrix into matrices array - matrices.push(matrix.concat()); - // reset - matrix = iMatrix.concat(); - }); - - var combinedMatrix = matrices[0]; - while (matrices.length > 1) { - matrices.shift(); - combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]); - } - return combinedMatrix; - }; - })(); - - function parseFontDeclaration(value, oStyle) { - - // TODO: support non-px font size - var match = value.match(/(normal|italic)?\s*(normal|small-caps)?\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\s*(\d+)px(?:\/(normal|[\d\.]+))?\s+(.*)/); - - if (!match) { - return; - } - - var fontStyle = match[1], - // font variant is not used - // fontVariant = match[2], - fontWeight = match[3], - fontSize = match[4], - lineHeight = match[5], - fontFamily = match[6]; - - if (fontStyle) { - oStyle.fontStyle = fontStyle; - } - if (fontWeight) { - oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight); - } - if (fontSize) { - oStyle.fontSize = parseFloat(fontSize); - } - if (fontFamily) { - oStyle.fontFamily = fontFamily; - } - if (lineHeight) { - oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight; - } - } - - /** - * @private - */ - function parseStyleString(style, oStyle) { - var attr, value; - style.replace(/;$/, '').split(';').forEach(function (chunk) { - var pair = chunk.split(':'); - - attr = normalizeAttr(pair[0].trim().toLowerCase()); - value = normalizeValue(attr, pair[1].trim()); - - if (attr === 'font') { - parseFontDeclaration(value, oStyle); - } - else { - oStyle[attr] = value; - } - }); - } - - /** - * @private - */ - function parseStyleObject(style, oStyle) { - var attr, value; - for (var prop in style) { - if (typeof style[prop] === 'undefined') { - continue; - } - - attr = normalizeAttr(prop.toLowerCase()); - value = normalizeValue(attr, style[prop]); - - if (attr === 'font') { - parseFontDeclaration(value, oStyle); - } - else { - oStyle[attr] = value; - } - } - } - - /** - * @private - */ - function getGlobalStylesForElement(element) { - var styles = { }; - - for (var rule in fabric.cssRules) { - if (elementMatchesRule(element, rule.split(' '))) { - for (var property in fabric.cssRules[rule]) { - styles[property] = fabric.cssRules[rule][property]; - } - } - } - return styles; - } - - /** - * @private - */ - function elementMatchesRule(element, selectors) { - var firstMatching, parentMatching = true; - //start from rightmost selector. - firstMatching = selectorMatches(element, selectors.pop()); - if (firstMatching && selectors.length) { - parentMatching = doesSomeParentMatch(element, selectors); - } - return firstMatching && parentMatching && (selectors.length === 0); - } - - function doesSomeParentMatch(element, selectors) { - var selector, parentMatching = true; - while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) { - if (parentMatching) { - selector = selectors.pop(); - } - element = element.parentNode; - parentMatching = selectorMatches(element, selector); - } - return selectors.length === 0; - } - /** - * @private - */ - function selectorMatches(element, selector) { - var nodeName = element.nodeName, - classNames = element.getAttribute('class'), - id = element.getAttribute('id'), matcher; - // i check if a selector matches slicing away part from it. - // if i get empty string i should match - matcher = new RegExp('^' + nodeName, 'i'); - selector = selector.replace(matcher, ''); - if (id && selector.length) { - matcher = new RegExp('#' + id + '(?![a-zA-Z\\-]+)', 'i'); - selector = selector.replace(matcher, ''); - } - if (classNames && selector.length) { - classNames = classNames.split(' '); - for (var i = classNames.length; i--;) { - matcher = new RegExp('\\.' + classNames[i] + '(?![a-zA-Z\\-]+)', 'i'); - selector = selector.replace(matcher, ''); - } - } - return selector.length === 0; - } - - /** - * @private - */ - function parseUseDirectives(doc) { - var nodelist = doc.getElementsByTagName('use'); - while (nodelist.length) { - var el = nodelist[0], - xlink = el.getAttribute('xlink:href').substr(1), - x = el.getAttribute('x') || 0, - y = el.getAttribute('y') || 0, - el2 = doc.getElementById(xlink).cloneNode(true), - currentTrans = (el.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')', - parentNode; - - for (var j = 0, attrs = el.attributes, l = attrs.length; j < l; j++) { - var attr = attrs.item(j); - if (attr.nodeName === 'x' || attr.nodeName === 'y' || attr.nodeName === 'xlink:href') { - continue; - } - - if (attr.nodeName === 'transform') { - currentTrans = currentTrans + ' ' + attr.nodeValue; - } - else { - el2.setAttribute(attr.nodeName, attr.nodeValue); - } - } - - el2.setAttribute('transform', currentTrans); - el2.removeAttribute('id'); - parentNode = el.parentNode; - parentNode.replaceChild(el2, el); - } - } - - /** - * Add a element that envelop all SCG elements and makes the viewbox transformMatrix descend on all elements - */ - function addSvgTransform(doc, matrix) { - matrix[3] = matrix[0] = (matrix[0] > matrix[3] ? matrix[3] : matrix[0]); - if (!(matrix[0] !== 1 || matrix[3] !== 1 || matrix[4] !== 0 || matrix[5] !== 0)) { - return; - } - // default is to preserve aspect ratio - // preserveAspectRatio attribute to be implemented - var el = doc.ownerDocument.createElement('g'); - while (doc.firstChild != null) { - el.appendChild(doc.firstChild); - } - el.setAttribute('transform','matrix(' + matrix[0] + ' ' + matrix[1] + ' ' + matrix[2] + ' ' + matrix[3] + ' ' + matrix[4] + ' ' + matrix[5] + ')'); - doc.appendChild(el); - } - - /** - * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @param {Function} callback Callback to call when parsing is finished; It's being passed an array of elements (parsed from a document). - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - */ - fabric.parseSVGDocument = (function() { - - var reAllowedSVGTagNames = /^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/, - - // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute - // \d doesn't quite cut it (as we need to match an actual float number) - - // matches, e.g.: +14.56e-12, etc. - reNum = '(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)', - - reViewBoxAttrValue = new RegExp( - '^' + - '\\s*(' + reNum + '+)\\s*,?' + - '\\s*(' + reNum + '+)\\s*,?' + - '\\s*(' + reNum + '+)\\s*,?' + - '\\s*(' + reNum + '+)\\s*' + - '$' - ); - - function hasAncestorWithNodeName(element, nodeName) { - while (element && (element = element.parentNode)) { - if (nodeName.test(element.nodeName)) { - return true; - } - } - return false; - } - - return function(doc, callback, reviver) { - if (!doc) { - return; - } - var startTime = new Date(); - - parseUseDirectives(doc); - /* http://www.w3.org/TR/SVG/struct.html#SVGElementWidthAttribute - * as per spec, width and height attributes are to be considered - * 100% if no value is specified. - */ - var viewBoxAttr = doc.getAttribute('viewBox'), - widthAttr = parseUnit(doc.getAttribute('width') || '100%'), - heightAttr = parseUnit(doc.getAttribute('height') || '100%'), - viewBoxWidth, - viewBoxHeight; - - if (viewBoxAttr && (viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))) { - var minX = parseFloat(viewBoxAttr[1]), - minY = parseFloat(viewBoxAttr[2]), - scaleX = 1, scaleY = 1; - viewBoxWidth = parseFloat(viewBoxAttr[3]); - viewBoxHeight = parseFloat(viewBoxAttr[4]); - if (widthAttr && widthAttr !== viewBoxWidth ) { - scaleX = widthAttr / viewBoxWidth; - } - if (heightAttr && heightAttr !== viewBoxHeight) { - scaleY = heightAttr / viewBoxHeight; - } - addSvgTransform(doc, [scaleX, 0, 0, scaleY, scaleX * -minX, scaleY * -minY]); - } - - var descendants = fabric.util.toArray(doc.getElementsByTagName('*')); - - if (descendants.length === 0 && fabric.isLikelyNode) { - // we're likely in node, where "o3-xml" library fails to gEBTN("*") - // https://github.com/ajaxorg/node-o3-xml/issues/21 - descendants = doc.selectNodes('//*[name(.)!="svg"]'); - var arr = [ ]; - for (var i = 0, len = descendants.length; i < len; i++) { - arr[i] = descendants[i]; - } - descendants = arr; - } - - var elements = descendants.filter(function(el) { - return reAllowedSVGTagNames.test(el.tagName) && - !hasAncestorWithNodeName(el, /^(?:pattern|defs)$/); // http://www.w3.org/TR/SVG/struct.html#DefsElement - }); - - if (!elements || (elements && !elements.length)) { - callback && callback([], {}); - return; - } - - var options = { - width: widthAttr ? widthAttr : viewBoxWidth, - height: heightAttr ? heightAttr : viewBoxHeight, - widthAttr: widthAttr, - heightAttr: heightAttr - }; - - fabric.gradientDefs = fabric.getGradientDefs(doc); - fabric.cssRules = fabric.getCSSRules(doc); - // Precedence of rules: style > class > attribute - - fabric.parseElements(elements, function(instances) { - fabric.documentParsingTime = new Date() - startTime; - if (callback) { - callback(instances, options); - } - }, clone(options), reviver); - }; - })(); - - /** - * Used for caching SVG documents (loaded via `fabric.Canvas#loadSVGFromURL`) - * @namespace - */ - var svgCache = { - - /** - * @param {String} name - * @param {Function} callback - */ - has: function (name, callback) { - callback(false); - }, - - get: function () { - /* NOOP */ - }, - - set: function () { - /* NOOP */ - } - }; - - /** - * @private - */ - function _enlivenCachedObject(cachedObject) { - - var objects = cachedObject.objects, - options = cachedObject.options; - - objects = objects.map(function (o) { - return fabric[capitalize(o.type)].fromObject(o); - }); - - return ({ objects: objects, options: options }); - } - - /** - * @private - */ - function _createSVGPattern(markup, canvas, property) { - if (canvas[property] && canvas[property].toSVG) { - markup.push( - '', - '' - ); - } - } - - extend(fabric, { - - /** - * Parses an SVG document, returning all of the gradient declarations found in it - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element - */ - getGradientDefs: function(doc) { - var linearGradientEls = doc.getElementsByTagName('linearGradient'), - radialGradientEls = doc.getElementsByTagName('radialGradient'), - el, i, j = 0, id, xlink, elList = [ ], - gradientDefs = { }, idsToXlinkMap = { }; - - elList.length = linearGradientEls.length + radialGradientEls.length; - i = linearGradientEls.length; - while (i--) { - elList[j++] = linearGradientEls[i]; - } - i = radialGradientEls.length; - while (i--) { - elList[j++] = radialGradientEls[i]; - } - - while (j--) { - el = elList[j]; - xlink = el.getAttribute('xlink:href'); - id = el.getAttribute('id'); - if (xlink) { - idsToXlinkMap[id] = xlink.substr(1); - } - gradientDefs[id] = el; - } - - for (id in idsToXlinkMap) { - var el2 = gradientDefs[idsToXlinkMap[id]].cloneNode(true); - el = gradientDefs[id]; - while (el2.firstChild) { - el.appendChild(el2.firstChild); - } - } - return gradientDefs; - }, - - /** - * Returns an object of attributes' name/value, given element and an array of attribute names; - * Parses parent "g" nodes recursively upwards. - * @static - * @memberOf fabric - * @param {DOMElement} element Element to parse - * @param {Array} attributes Array of attributes to parse - * @return {Object} object containing parsed attributes' names/values - */ - parseAttributes: function(element, attributes) { - - if (!element) { - return; - } - - var value, - parentAttributes = { }; - - // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards - if (element.parentNode && /^symbol|[g|a]$/i.test(element.parentNode.nodeName)) { - parentAttributes = fabric.parseAttributes(element.parentNode, attributes); - } - - var ownAttributes = attributes.reduce(function(memo, attr) { - value = element.getAttribute(attr); - if (value) { - attr = normalizeAttr(attr); - value = normalizeValue(attr, value, parentAttributes); - - memo[attr] = value; - } - return memo; - }, { }); - - // add values parsed from style, which take precedence over attributes - // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes) - ownAttributes = extend(ownAttributes, - extend(getGlobalStylesForElement(element), fabric.parseStyleAttribute(element))); - - return _setStrokeFillOpacity(extend(parentAttributes, ownAttributes)); - }, - - /** - * Transforms an array of svg elements to corresponding fabric.* instances - * @static - * @memberOf fabric - * @param {Array} elements Array of elements to parse - * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements) - * @param {Object} [options] Options object - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - */ - parseElements: function(elements, callback, options, reviver) { - new fabric.ElementsParser(elements, callback, options, reviver).parse(); - }, - - /** - * Parses "style" attribute, retuning an object with values - * @static - * @memberOf fabric - * @param {SVGElement} element Element to parse - * @return {Object} Objects with values parsed from style attribute of an element - */ - parseStyleAttribute: function(element) { - var oStyle = { }, - style = element.getAttribute('style'); - - if (!style) { - return oStyle; - } - - if (typeof style === 'string') { - parseStyleString(style, oStyle); - } - else { - parseStyleObject(style, oStyle); - } - - return oStyle; - }, - - /** - * Parses "points" attribute, returning an array of values - * @static - * @memberOf fabric - * @param {String} points points attribute string - * @return {Array} array of points - */ - parsePointsAttribute: function(points) { - - // points attribute is required and must not be empty - if (!points) { - return null; - } - - // replace commas with whitespace and remove bookending whitespace - points = points.replace(/,/g, ' ').trim(); - - points = points.split(/\s+/); - var parsedPoints = [ ], i, len; - - i = 0; - len = points.length; - for (; i < len; i+=2) { - parsedPoints.push({ - x: parseFloat(points[i]), - y: parseFloat(points[i + 1]) - }); - } - - // odd number of points is an error - // if (parsedPoints.length % 2 !== 0) { - // return null; - // } - - return parsedPoints; - }, - - /** - * Returns CSS rules for a given SVG document - * @static - * @function - * @memberOf fabric - * @param {SVGDocument} doc SVG document to parse - * @return {Object} CSS rules of this document - */ - getCSSRules: function(doc) { - var styles = doc.getElementsByTagName('style'), - allRules = { }, rules; - - // very crude parsing of style contents - for (var i = 0, len = styles.length; i < len; i++) { - var styleContents = styles[0].textContent; - - // remove comments - styleContents = styleContents.replace(/\/\*[\s\S]*?\*\//g, ''); - - rules = styleContents.match(/[^{]*\{[\s\S]*?\}/g); - rules = rules.map(function(rule) { return rule.trim(); }); - - rules.forEach(function(rule) { - - var match = rule.match(/([\s\S]*?)\s*\{([^}]*)\}/), - ruleObj = { }, declaration = match[2].trim(), - propertyValuePairs = declaration.replace(/;$/, '').split(/\s*;\s*/); - - for (var i = 0, len = propertyValuePairs.length; i < len; i++) { - var pair = propertyValuePairs[i].split(/\s*:\s*/), - property = normalizeAttr(pair[0]), - value = normalizeValue(property,pair[1],pair[0]); - ruleObj[property] = value; - } - rule = match[1]; - rule.split(',').forEach(function(_rule) { - allRules[_rule.trim()] = fabric.util.object.clone(ruleObj); - }); - }); - } - return allRules; - }, - - /** - * Takes url corresponding to an SVG document, and parses it into a set of fabric objects. Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy) - * @memberof fabric - * @param {String} url - * @param {Function} callback - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - */ - loadSVGFromURL: function(url, callback, reviver) { - - url = url.replace(/^\n\s*/, '').trim(); - svgCache.has(url, function (hasUrl) { - if (hasUrl) { - svgCache.get(url, function (value) { - var enlivedRecord = _enlivenCachedObject(value); - callback(enlivedRecord.objects, enlivedRecord.options); - }); - } - else { - new fabric.util.request(url, { - method: 'get', - onComplete: onComplete - }); - } - }); - - function onComplete(r) { - - var xml = r.responseXML; - if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) { - xml = new ActiveXObject('Microsoft.XMLDOM'); - xml.async = 'false'; - //IE chokes on DOCTYPE - xml.loadXML(r.responseText.replace(//i,'')); - } - if (!xml || !xml.documentElement) { - return; - } - - fabric.parseSVGDocument(xml.documentElement, function (results, options) { - svgCache.set(url, { - objects: fabric.util.array.invoke(results, 'toObject'), - options: options - }); - callback(results, options); - }, reviver); - } - }, - - /** - * Takes string corresponding to an SVG document, and parses it into a set of fabric objects - * @memberof fabric - * @param {String} string - * @param {Function} callback - * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created. - */ - loadSVGFromString: function(string, callback, reviver) { - string = string.trim(); - var doc; - if (typeof DOMParser !== 'undefined') { - var parser = new DOMParser(); - if (parser && parser.parseFromString) { - doc = parser.parseFromString(string, 'text/xml'); - } - } - else if (fabric.window.ActiveXObject) { - doc = new ActiveXObject('Microsoft.XMLDOM'); - doc.async = 'false'; - //IE chokes on DOCTYPE - doc.loadXML(string.replace(//i,'')); - } - - fabric.parseSVGDocument(doc.documentElement, function (results, options) { - callback(results, options); - }, reviver); - }, - - /** - * Creates markup containing SVG font faces - * @param {Array} objects Array of fabric objects - * @return {String} - */ - createSVGFontFacesMarkup: function(objects) { - var markup = ''; - - for (var i = 0, len = objects.length; i < len; i++) { - if (objects[i].type !== 'text' || !objects[i].path) { - continue; - } - - markup += [ - //jscs:disable validateIndentation - '@font-face {', - 'font-family: ', objects[i].fontFamily, '; ', - 'src: url(\'', objects[i].path, '\')', - '}' - //jscs:enable validateIndentation - ].join(''); - } - - if (markup) { - markup = [ - //jscs:disable validateIndentation - '' - //jscs:enable validateIndentation - ].join(''); - } - - return markup; - }, - - /** - * Creates markup containing SVG referenced elements like patterns, gradients etc. - * @param {fabric.Canvas} canvas instance of fabric.Canvas - * @return {String} - */ - createSVGRefElementsMarkup: function(canvas) { - var markup = [ ]; - - _createSVGPattern(markup, canvas, 'backgroundColor'); - _createSVGPattern(markup, canvas, 'overlayColor'); - - return markup.join(''); - } - }); - -})(typeof exports !== 'undefined' ? exports : this); - - -fabric.ElementsParser = function(elements, callback, options, reviver) { - this.elements = elements; - this.callback = callback; - this.options = options; - this.reviver = reviver; -}; - -fabric.ElementsParser.prototype.parse = function() { - this.instances = new Array(this.elements.length); - this.numElements = this.elements.length; - - this.createObjects(); -}; - -fabric.ElementsParser.prototype.createObjects = function() { - for (var i = 0, len = this.elements.length; i < len; i++) { - (function(_this, i) { - setTimeout(function() { - _this.createObject(_this.elements[i], i); - }, 0); - })(this, i); - } -}; - -fabric.ElementsParser.prototype.createObject = function(el, index) { - var klass = fabric[fabric.util.string.capitalize(el.tagName)]; - if (klass && klass.fromElement) { - try { - this._createObject(klass, el, index); - } - catch (err) { - fabric.log(err); - } - } - else { - this.checkIfDone(); - } -}; - -fabric.ElementsParser.prototype._createObject = function(klass, el, index) { - if (klass.async) { - klass.fromElement(el, this.createCallback(index, el), this.options); - } - else { - var obj = klass.fromElement(el, this.options); - this.resolveGradient(obj, 'fill'); - this.resolveGradient(obj, 'stroke'); - this.reviver && this.reviver(el, obj); - this.instances[index] = obj; - this.checkIfDone(); - } -}; - -fabric.ElementsParser.prototype.createCallback = function(index, el) { - var _this = this; - return function(obj) { - _this.resolveGradient(obj, 'fill'); - _this.resolveGradient(obj, 'stroke'); - _this.reviver && _this.reviver(el, obj); - _this.instances[index] = obj; - _this.checkIfDone(); - }; -}; - -fabric.ElementsParser.prototype.resolveGradient = function(obj, property) { - - var instanceFillValue = obj.get(property); - if (!(/^url\(/).test(instanceFillValue)) { - return; - } - var gradientId = instanceFillValue.slice(5, instanceFillValue.length - 1); - if (fabric.gradientDefs[gradientId]) { - obj.set(property, - fabric.Gradient.fromElement(fabric.gradientDefs[gradientId], obj)); - } -}; - -fabric.ElementsParser.prototype.checkIfDone = function() { - if (--this.numElements === 0) { - this.instances = this.instances.filter(function(el) { - return el != null; - }); - this.callback(this.instances); - } -}; - - -(function(global) { - - 'use strict'; - - /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Point) { - fabric.warn('fabric.Point is already defined'); - return; - } - - fabric.Point = Point; - - /** - * Point class - * @class fabric.Point - * @memberOf fabric - * @constructor - * @param {Number} x - * @param {Number} y - * @return {fabric.Point} thisArg - */ - function Point(x, y) { - this.x = x; - this.y = y; - } - - Point.prototype = /** @lends fabric.Point.prototype */ { - - constructor: Point, - - /** - * Adds another point to this one and returns another one - * @param {fabric.Point} that - * @return {fabric.Point} new Point instance with added values - */ - add: function (that) { - return new Point(this.x + that.x, this.y + that.y); - }, - - /** - * Adds another point to this one - * @param {fabric.Point} that - * @return {fabric.Point} thisArg - */ - addEquals: function (that) { - this.x += that.x; - this.y += that.y; - return this; - }, - - /** - * Adds value to this point and returns a new one - * @param {Number} scalar - * @return {fabric.Point} new Point with added value - */ - scalarAdd: function (scalar) { - return new Point(this.x + scalar, this.y + scalar); - }, - - /** - * Adds value to this point - * @param {Number} scalar - * @return {fabric.Point} thisArg - */ - scalarAddEquals: function (scalar) { - this.x += scalar; - this.y += scalar; - return this; - }, - - /** - * Subtracts another point from this point and returns a new one - * @param {fabric.Point} that - * @return {fabric.Point} new Point object with subtracted values - */ - subtract: function (that) { - return new Point(this.x - that.x, this.y - that.y); - }, - - /** - * Subtracts another point from this point - * @param {fabric.Point} that - * @return {fabric.Point} thisArg - */ - subtractEquals: function (that) { - this.x -= that.x; - this.y -= that.y; - return this; - }, - - /** - * Subtracts value from this point and returns a new one - * @param {Number} scalar - * @return {fabric.Point} - */ - scalarSubtract: function (scalar) { - return new Point(this.x - scalar, this.y - scalar); - }, - - /** - * Subtracts value from this point - * @param {Number} scalar - * @return {fabric.Point} thisArg - */ - scalarSubtractEquals: function (scalar) { - this.x -= scalar; - this.y -= scalar; - return this; - }, - - /** - * Miltiplies this point by a value and returns a new one - * @param {Number} scalar - * @return {fabric.Point} - */ - multiply: function (scalar) { - return new Point(this.x * scalar, this.y * scalar); - }, - - /** - * Miltiplies this point by a value - * @param {Number} scalar - * @return {fabric.Point} thisArg - */ - multiplyEquals: function (scalar) { - this.x *= scalar; - this.y *= scalar; - return this; - }, - - /** - * Divides this point by a value and returns a new one - * @param {Number} scalar - * @return {fabric.Point} - */ - divide: function (scalar) { - return new Point(this.x / scalar, this.y / scalar); - }, - - /** - * Divides this point by a value - * @param {Number} scalar - * @return {fabric.Point} thisArg - */ - divideEquals: function (scalar) { - this.x /= scalar; - this.y /= scalar; - return this; - }, - - /** - * Returns true if this point is equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - eq: function (that) { - return (this.x === that.x && this.y === that.y); - }, - - /** - * Returns true if this point is less than another one - * @param {fabric.Point} that - * @return {Boolean} - */ - lt: function (that) { - return (this.x < that.x && this.y < that.y); - }, - - /** - * Returns true if this point is less than or equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - lte: function (that) { - return (this.x <= that.x && this.y <= that.y); - }, - - /** - - * Returns true if this point is greater another one - * @param {fabric.Point} that - * @return {Boolean} - */ - gt: function (that) { - return (this.x > that.x && this.y > that.y); - }, - - /** - * Returns true if this point is greater than or equal to another one - * @param {fabric.Point} that - * @return {Boolean} - */ - gte: function (that) { - return (this.x >= that.x && this.y >= that.y); - }, - - /** - * Returns new point which is the result of linear interpolation with this one and another one - * @param {fabric.Point} that - * @param {Number} t - * @return {fabric.Point} - */ - lerp: function (that, t) { - return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t); - }, - - /** - * Returns distance from this point and another one - * @param {fabric.Point} that - * @return {Number} - */ - distanceFrom: function (that) { - var dx = this.x - that.x, - dy = this.y - that.y; - return Math.sqrt(dx * dx + dy * dy); - }, - - /** - * Returns the point between this point and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - midPointFrom: function (that) { - return new Point(this.x + (that.x - this.x)/2, this.y + (that.y - this.y)/2); - }, - - /** - * Returns a new point which is the min of this and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - min: function (that) { - return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y)); - }, - - /** - * Returns a new point which is the max of this and another one - * @param {fabric.Point} that - * @return {fabric.Point} - */ - max: function (that) { - return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y)); - }, - - /** - * Returns string representation of this point - * @return {String} - */ - toString: function () { - return this.x + ',' + this.y; - }, - - /** - * Sets x/y of this point - * @param {Number} x - * @return {Number} y - */ - setXY: function (x, y) { - this.x = x; - this.y = y; - }, - - /** - * Sets x/y of this point from another point - * @param {fabric.Point} that - */ - setFromPoint: function (that) { - this.x = that.x; - this.y = that.y; - }, - - /** - * Swaps x/y of this point and another point - * @param {fabric.Point} that - */ - swap: function (that) { - var x = this.x, - y = this.y; - this.x = that.x; - this.y = that.y; - that.x = x; - that.y = y; - } - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */ - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Intersection) { - fabric.warn('fabric.Intersection is already defined'); - return; - } - - /** - * Intersection class - * @class fabric.Intersection - * @memberOf fabric - * @constructor - */ - function Intersection(status) { - this.status = status; - this.points = []; - } - - fabric.Intersection = Intersection; - - fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ { - - /** - * Appends a point to intersection - * @param {fabric.Point} point - */ - appendPoint: function (point) { - this.points.push(point); - }, - - /** - * Appends points to intersection - * @param {Array} points - */ - appendPoints: function (points) { - this.points = this.points.concat(points); - } - }; - - /** - * Checks if one line intersects another - * @static - * @param {fabric.Point} a1 - * @param {fabric.Point} a2 - * @param {fabric.Point} b1 - * @param {fabric.Point} b2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) { - var result, - uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x), - ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x), - uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y); - if (uB !== 0) { - var ua = uaT / uB, - ub = ubT / uB; - if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) { - result = new Intersection('Intersection'); - result.points.push(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y))); - } - else { - result = new Intersection(); - } - } - else { - if (uaT === 0 || ubT === 0) { - result = new Intersection('Coincident'); - } - else { - result = new Intersection('Parallel'); - } - } - return result; - }; - - /** - * Checks if line intersects polygon - * @static - * @param {fabric.Point} a1 - * @param {fabric.Point} a2 - * @param {Array} points - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectLinePolygon = function(a1,a2,points){ - var result = new Intersection(), - length = points.length; - - for (var i = 0; i < length; i++) { - var b1 = points[i], - b2 = points[(i + 1) % length], - inter = Intersection.intersectLineLine(a1, a2, b1, b2); - - result.appendPoints(inter.points); - } - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - - /** - * Checks if polygon intersects another polygon - * @static - * @param {Array} points1 - * @param {Array} points2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectPolygonPolygon = function (points1, points2) { - var result = new Intersection(), - length = points1.length; - - for (var i = 0; i < length; i++) { - var a1 = points1[i], - a2 = points1[(i + 1) % length], - inter = Intersection.intersectLinePolygon(a1, a2, points2); - - result.appendPoints(inter.points); - } - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - - /** - * Checks if polygon intersects rectangle - * @static - * @param {Array} points - * @param {Number} r1 - * @param {Number} r2 - * @return {fabric.Intersection} - */ - fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) { - var min = r1.min(r2), - max = r1.max(r2), - topRight = new fabric.Point(max.x, min.y), - bottomLeft = new fabric.Point(min.x, max.y), - inter1 = Intersection.intersectLinePolygon(min, topRight, points), - inter2 = Intersection.intersectLinePolygon(topRight, max, points), - inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points), - inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points), - result = new Intersection(); - - result.appendPoints(inter1.points); - result.appendPoints(inter2.points); - result.appendPoints(inter3.points); - result.appendPoints(inter4.points); - - if (result.points.length > 0) { - result.status = 'Intersection'; - } - return result; - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Color) { - fabric.warn('fabric.Color is already defined.'); - return; - } - - /** - * Color class - * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations; - * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects. - * - * @class fabric.Color - * @param {String} color optional in hex or rgb(a) format - * @return {fabric.Color} thisArg - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors} - */ - function Color(color) { - if (!color) { - this.setSource([0, 0, 0, 1]); - } - else { - this._tryParsingColor(color); - } - } - - fabric.Color = Color; - - fabric.Color.prototype = /** @lends fabric.Color.prototype */ { - - /** - * @private - * @param {String|Array} color Color value to parse - */ - _tryParsingColor: function(color) { - var source; - - if (color in Color.colorNameMap) { - color = Color.colorNameMap[color]; - } - - if (color === 'transparent') { - this.setSource([255,255,255,0]); - return; - } - - source = Color.sourceFromHex(color); - - if (!source) { - source = Color.sourceFromRgb(color); - } - if (!source) { - source = Color.sourceFromHsl(color); - } - if (source) { - this.setSource(source); - } - }, - - /** - * Adapted from https://github.com/mjijackson - * @private - * @param {Number} r Red color value - * @param {Number} g Green color value - * @param {Number} b Blue color value - * @return {Array} Hsl color - */ - _rgbToHsl: function(r, g, b) { - r /= 255, g /= 255, b /= 255; - - var h, s, l, - max = fabric.util.array.max([r, g, b]), - min = fabric.util.array.min([r, g, b]); - - l = (max + min) / 2; - - if (max === min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - } - h /= 6; - } - - return [ - Math.round(h * 360), - Math.round(s * 100), - Math.round(l * 100) - ]; - }, - - /** - * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1]) - * @return {Array} - */ - getSource: function() { - return this._source; - }, - - /** - * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1]) - * @param {Array} source - */ - setSource: function(source) { - this._source = source; - }, - - /** - * Returns color represenation in RGB format - * @return {String} ex: rgb(0-255,0-255,0-255) - */ - toRgb: function() { - var source = this.getSource(); - return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')'; - }, - - /** - * Returns color represenation in RGBA format - * @return {String} ex: rgba(0-255,0-255,0-255,0-1) - */ - toRgba: function() { - var source = this.getSource(); - return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')'; - }, - - /** - * Returns color represenation in HSL format - * @return {String} ex: hsl(0-360,0%-100%,0%-100%) - */ - toHsl: function() { - var source = this.getSource(), - hsl = this._rgbToHsl(source[0], source[1], source[2]); - - return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)'; - }, - - /** - * Returns color represenation in HSLA format - * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1) - */ - toHsla: function() { - var source = this.getSource(), - hsl = this._rgbToHsl(source[0], source[1], source[2]); - - return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')'; - }, - - /** - * Returns color represenation in HEX format - * @return {String} ex: FF5555 - */ - toHex: function() { - var source = this.getSource(), r, g, b; - - r = source[0].toString(16); - r = (r.length === 1) ? ('0' + r) : r; - - g = source[1].toString(16); - g = (g.length === 1) ? ('0' + g) : g; - - b = source[2].toString(16); - b = (b.length === 1) ? ('0' + b) : b; - - return r.toUpperCase() + g.toUpperCase() + b.toUpperCase(); - }, - - /** - * Gets value of alpha channel for this color - * @return {Number} 0-1 - */ - getAlpha: function() { - return this.getSource()[3]; - }, - - /** - * Sets value of alpha channel for this color - * @param {Number} alpha Alpha value 0-1 - * @return {fabric.Color} thisArg - */ - setAlpha: function(alpha) { - var source = this.getSource(); - source[3] = alpha; - this.setSource(source); - return this; - }, - - /** - * Transforms color to its grayscale representation - * @return {fabric.Color} thisArg - */ - toGrayscale: function() { - var source = this.getSource(), - average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10), - currentAlpha = source[3]; - this.setSource([average, average, average, currentAlpha]); - return this; - }, - - /** - * Transforms color to its black and white representation - * @param {Number} threshold - * @return {fabric.Color} thisArg - */ - toBlackWhite: function(threshold) { - var source = this.getSource(), - average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), - currentAlpha = source[3]; - - threshold = threshold || 127; - - average = (Number(average) < Number(threshold)) ? 0 : 255; - this.setSource([average, average, average, currentAlpha]); - return this; - }, - - /** - * Overlays color with another color - * @param {String|fabric.Color} otherColor - * @return {fabric.Color} thisArg - */ - overlayWith: function(otherColor) { - if (!(otherColor instanceof Color)) { - otherColor = new Color(otherColor); - } - - var result = [], - alpha = this.getAlpha(), - otherAlpha = 0.5, - source = this.getSource(), - otherSource = otherColor.getSource(); - - for (var i = 0; i < 3; i++) { - result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha))); - } - - result[3] = alpha; - this.setSource(result); - return this; - } - }; - - /** - * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5)) - * @static - * @field - * @memberOf fabric.Color - */ - fabric.Color.reRGBa = /^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/; - - /** - * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 )) - * @static - * @field - * @memberOf fabric.Color - */ - fabric.Color.reHSLa = /^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/; - - /** - * Regex matching color in HEX format (ex: #FF5555, 010155, aff) - * @static - * @field - * @memberOf fabric.Color - */ - fabric.Color.reHex = /^#?([0-9a-f]{6}|[0-9a-f]{3})$/i; - - /** - * Map of the 17 basic color names with HEX code - * @static - * @field - * @memberOf fabric.Color - * @see: http://www.w3.org/TR/CSS2/syndata.html#color-units - */ - fabric.Color.colorNameMap = { - aqua: '#00FFFF', - black: '#000000', - blue: '#0000FF', - fuchsia: '#FF00FF', - gray: '#808080', - green: '#008000', - lime: '#00FF00', - maroon: '#800000', - navy: '#000080', - olive: '#808000', - orange: '#FFA500', - purple: '#800080', - red: '#FF0000', - silver: '#C0C0C0', - teal: '#008080', - white: '#FFFFFF', - yellow: '#FFFF00' - }; - - /** - * @private - * @param {Number} p - * @param {Number} q - * @param {Number} t - * @return {Number} - */ - function hue2rgb(p, q, t){ - if (t < 0) { - t += 1; - } - if (t > 1) { - t -= 1; - } - if (t < 1/6) { - return p + (q - p) * 6 * t; - } - if (t < 1/2) { - return q; - } - if (t < 2/3) { - return p + (q - p) * (2/3 - t) * 6; - } - return p; - } - - /** - * Returns new color object, when given a color in RGB format - * @memberOf fabric.Color - * @param {String} color Color value ex: rgb(0-255,0-255,0-255) - * @return {fabric.Color} - */ - fabric.Color.fromRgb = function(color) { - return Color.fromSource(Color.sourceFromRgb(color)); - }; - - /** - * Returns array represenatation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format - * @memberOf fabric.Color - * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%) - * @return {Array} source - */ - fabric.Color.sourceFromRgb = function(color) { - var match = color.match(Color.reRGBa); - if (match) { - var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1), - g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1), - b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1); - - return [ - parseInt(r, 10), - parseInt(g, 10), - parseInt(b, 10), - match[4] ? parseFloat(match[4]) : 1 - ]; - } - }; - - /** - * Returns new color object, when given a color in RGBA format - * @static - * @function - * @memberOf fabric.Color - * @param {String} color - * @return {fabric.Color} - */ - fabric.Color.fromRgba = Color.fromRgb; - - /** - * Returns new color object, when given a color in HSL format - * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%) - * @memberOf fabric.Color - * @return {fabric.Color} - */ - fabric.Color.fromHsl = function(color) { - return Color.fromSource(Color.sourceFromHsl(color)); - }; - - /** - * Returns array represenatation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format. - * Adapted from https://github.com/mjijackson - * @memberOf fabric.Color - * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1) - * @return {Array} source - * @see http://http://www.w3.org/TR/css3-color/#hsl-color - */ - fabric.Color.sourceFromHsl = function(color) { - var match = color.match(Color.reHSLa); - if (!match) { - return; - } - - var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360, - s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1), - l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1), - r, g, b; - - if (s === 0) { - r = g = b = l; - } - else { - var q = l <= 0.5 ? l * (s + 1) : l + s - l * s, - p = l * 2 - q; - - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return [ - Math.round(r * 255), - Math.round(g * 255), - Math.round(b * 255), - match[4] ? parseFloat(match[4]) : 1 - ]; - }; - - /** - * Returns new color object, when given a color in HSLA format - * @static - * @function - * @memberOf fabric.Color - * @param {String} color - * @return {fabric.Color} - */ - fabric.Color.fromHsla = Color.fromHsl; - - /** - * Returns new color object, when given a color in HEX format - * @static - * @memberOf fabric.Color - * @param {String} color Color value ex: FF5555 - * @return {fabric.Color} - */ - fabric.Color.fromHex = function(color) { - return Color.fromSource(Color.sourceFromHex(color)); - }; - - /** - * Returns array represenatation (ex: [100, 100, 200, 1]) of a color that's in HEX format - * @static - * @memberOf fabric.Color - * @param {String} color ex: FF5555 - * @return {Array} source - */ - fabric.Color.sourceFromHex = function(color) { - if (color.match(Color.reHex)) { - var value = color.slice(color.indexOf('#') + 1), - isShortNotation = (value.length === 3), - r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2), - g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4), - b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6); - - return [ - parseInt(r, 16), - parseInt(g, 16), - parseInt(b, 16), - 1 - ]; - } - }; - - /** - * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5]) - * @static - * @memberOf fabric.Color - * @param {Array} source - * @return {fabric.Color} - */ - fabric.Color.fromSource = function(source) { - var oColor = new Color(); - oColor.setSource(source); - return oColor; - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - /* _FROM_SVG_START_ */ - function getColorStop(el) { - var style = el.getAttribute('style'), - offset = el.getAttribute('offset'), - color, colorAlpha, opacity; - - // convert percents to absolute values - offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1); - offset = offset < 0 ? 0 : offset > 1 ? 1 : offset; - if (style) { - var keyValuePairs = style.split(/\s*;\s*/); - - if (keyValuePairs[keyValuePairs.length - 1] === '') { - keyValuePairs.pop(); - } - - for (var i = keyValuePairs.length; i--; ) { - - var split = keyValuePairs[i].split(/\s*:\s*/), - key = split[0].trim(), - value = split[1].trim(); - - if (key === 'stop-color') { - color = value; - } - else if (key === 'stop-opacity') { - opacity = value; - } - } - } - - if (!color) { - color = el.getAttribute('stop-color') || 'rgb(0,0,0)'; - } - if (!opacity) { - opacity = el.getAttribute('stop-opacity'); - } - - color = new fabric.Color(color); - colorAlpha = color.getAlpha(); - opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity); - opacity *= colorAlpha; - - return { - offset: offset, - color: color.toRgb(), - opacity: opacity - }; - } - - function getLinearCoords(el) { - return { - x1: el.getAttribute('x1') || 0, - y1: el.getAttribute('y1') || 0, - x2: el.getAttribute('x2') || '100%', - y2: el.getAttribute('y2') || 0 - }; - } - - function getRadialCoords(el) { - return { - x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%', - y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%', - r1: 0, - x2: el.getAttribute('cx') || '50%', - y2: el.getAttribute('cy') || '50%', - r2: el.getAttribute('r') || '50%' - }; - } - /* _FROM_SVG_END_ */ - - /** - * Gradient class - * @class fabric.Gradient - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#gradients} - * @see {@link fabric.Gradient#initialize} for constructor definition - */ - fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ { - - /** - * Horizontal offset for aligning gradients coming from SVG when outside pathgroups - * @type Number - * @default 0 - */ - offsetX: 0, - - /** - * Vertical offset for aligning gradients coming from SVG when outside pathgroups - * @type Number - * @default 0 - */ - offsetY: 0, - - /** - * Constructor - * @param {Object} [options] Options object with type, coords, gradientUnits and colorStops - * @return {fabric.Gradient} thisArg - */ - initialize: function(options) { - options || (options = { }); - - var coords = { }; - - this.id = fabric.Object.__uid++; - this.type = options.type || 'linear'; - - coords = { - x1: options.coords.x1 || 0, - y1: options.coords.y1 || 0, - x2: options.coords.x2 || 0, - y2: options.coords.y2 || 0 - }; - - if (this.type === 'radial') { - coords.r1 = options.coords.r1 || 0; - coords.r2 = options.coords.r2 || 0; - } - this.coords = coords; - this.colorStops = options.colorStops.slice(); - if (options.gradientTransform) { - this.gradientTransform = options.gradientTransform; - } - this.offsetX = options.offsetX || this.offsetX; - this.offsetY = options.offsetY || this.offsetY; - }, - - /** - * Adds another colorStop - * @param {Object} colorStop Object with offset and color - * @return {fabric.Gradient} thisArg - */ - addColorStop: function(colorStop) { - for (var position in colorStop) { - var color = new fabric.Color(colorStop[position]); - this.colorStops.push({ - offset: position, - color: color.toRgb(), - opacity: color.getAlpha() - }); - } - return this; - }, - - /** - * Returns object representation of a gradient - * @return {Object} - */ - toObject: function() { - return { - type: this.type, - coords: this.coords, - colorStops: this.colorStops, - offsetX: this.offsetX, - offsetY: this.offsetY - }; - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an gradient - * @param {Object} object Object to create a gradient for - * @param {Boolean} normalize Whether coords should be normalized - * @return {String} SVG representation of an gradient (linear/radial) - */ - toSVG: function(object) { - var coords = fabric.util.object.clone(this.coords), - markup, commonAttributes; - - // colorStops must be sorted ascending - this.colorStops.sort(function(a, b) { - return a.offset - b.offset; - }); - - if (!(object.group && object.group.type === 'path-group')) { - for (var prop in coords) { - if (prop === 'x1' || prop === 'x2' || prop === 'r2') { - coords[prop] += this.offsetX - object.width / 2; - } - else if (prop === 'y1' || prop === 'y2') { - coords[prop] += this.offsetY - object.height / 2; - } - } - } - - commonAttributes = 'id="SVGID_' + this.id + - '" gradientUnits="userSpaceOnUse"'; - if (this.gradientTransform) { - commonAttributes += ' gradientTransform="matrix(' + this.gradientTransform.join(' ') + ')" '; - } - if (this.type === 'linear') { - markup = [ - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ]; - } - else if (this.type === 'radial') { - markup = [ - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ]; - } - - for (var i = 0; i < this.colorStops.length; i++) { - markup.push( - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ); - } - - markup.push((this.type === 'linear' ? '\n' : '\n')); - - return markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns an instance of CanvasGradient - * @param {CanvasRenderingContext2D} ctx Context to render on - * @return {CanvasGradient} - */ - toLive: function(ctx) { - var gradient; - - if (!this.type) { - return; - } - - if (this.type === 'linear') { - gradient = ctx.createLinearGradient( - this.coords.x1, this.coords.y1, this.coords.x2, this.coords.y2); - } - else if (this.type === 'radial') { - gradient = ctx.createRadialGradient( - this.coords.x1, this.coords.y1, this.coords.r1, this.coords.x2, this.coords.y2, this.coords.r2); - } - - for (var i = 0, len = this.colorStops.length; i < len; i++) { - var color = this.colorStops[i].color, - opacity = this.colorStops[i].opacity, - offset = this.colorStops[i].offset; - - if (typeof opacity !== 'undefined') { - color = new fabric.Color(color).setAlpha(opacity).toRgba(); - } - gradient.addColorStop(parseFloat(offset), color); - } - - return gradient; - } - }); - - fabric.util.object.extend(fabric.Gradient, { - - /* _FROM_SVG_START_ */ - /** - * Returns {@link fabric.Gradient} instance from an SVG element - * @static - * @memberof fabric.Gradient - * @param {SVGGradientElement} el SVG gradient element - * @param {fabric.Object} instance - * @return {fabric.Gradient} Gradient instance - * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement - * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement - */ - fromElement: function(el, instance) { - - /** - * @example: - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * - * OR - * - * - * - * - * - * - * - */ - - var colorStopEls = el.getElementsByTagName('stop'), - type = (el.nodeName === 'linearGradient' ? 'linear' : 'radial'), - gradientUnits = el.getAttribute('gradientUnits') || 'objectBoundingBox', - gradientTransform = el.getAttribute('gradientTransform'), - colorStops = [], - coords = { }, ellipseMatrix; - - if (type === 'linear') { - coords = getLinearCoords(el); - } - else if (type === 'radial') { - coords = getRadialCoords(el); - } - - for (var i = colorStopEls.length; i--; ) { - colorStops.push(getColorStop(colorStopEls[i])); - } - - ellipseMatrix = _convertPercentUnitsToValues(instance, coords, gradientUnits); - - var gradient = new fabric.Gradient({ - type: type, - coords: coords, - colorStops: colorStops, - offsetX: -instance.left, - offsetY: -instance.top - }); - - if (gradientTransform || ellipseMatrix !== '') { - gradient.gradientTransform = fabric.parseTransformAttribute((gradientTransform || '') + ellipseMatrix); - } - return gradient; - }, - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Gradient} instance from its object representation - * @static - * @memberof fabric.Gradient - * @param {Object} obj - * @param {Object} [options] Options object - */ - forObject: function(obj, options) { - options || (options = { }); - _convertPercentUnitsToValues(obj, options.coords, 'userSpaceOnUse'); - return new fabric.Gradient(options); - } - }); - - /** - * @private - */ - function _convertPercentUnitsToValues(object, options, gradientUnits) { - var propValue, addFactor = 0, multFactor = 1, ellipseMatrix = ''; - for (var prop in options) { - propValue = parseFloat(options[prop], 10); - if (typeof options[prop] === 'string' && /^\d+%$/.test(options[prop])) { - multFactor = 0.01; - } - else { - multFactor = 1; - } - if (prop === 'x1' || prop === 'x2' || prop === 'r2') { - multFactor *= gradientUnits === 'objectBoundingBox' ? object.width : 1; - addFactor = gradientUnits === 'objectBoundingBox' ? object.left || 0 : 0; - } - else if (prop === 'y1' || prop === 'y2') { - multFactor *= gradientUnits === 'objectBoundingBox' ? object.height : 1; - addFactor = gradientUnits === 'objectBoundingBox' ? object.top || 0 : 0; - } - options[prop] = propValue * multFactor + addFactor; - } - if (object.type === 'ellipse' && options.r2 !== null && gradientUnits === 'objectBoundingBox' && object.rx !== object.ry) { - var scaleFactor = object.ry/object.rx; - ellipseMatrix = ' scale(1, ' + scaleFactor + ')'; - if (options.y1) { - options.y1 /= scaleFactor; - } - if (options.y2) { - options.y2 /= scaleFactor; - } - } - return ellipseMatrix; - } -})(); - - -/** - * Pattern class - * @class fabric.Pattern - * @see {@link http://fabricjs.com/patterns/|Pattern demo} - * @see {@link http://fabricjs.com/dynamic-patterns/|DynamicPattern demo} - * @see {@link fabric.Pattern#initialize} for constructor definition - */ -fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ { - - /** - * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) - * @type String - * @default - */ - repeat: 'repeat', - - /** - * Pattern horizontal offset from object's left/top corner - * @type Number - * @default - */ - offsetX: 0, - - /** - * Pattern vertical offset from object's left/top corner - * @type Number - * @default - */ - offsetY: 0, - - /** - * Constructor - * @param {Object} [options] Options object - * @return {fabric.Pattern} thisArg - */ - initialize: function(options) { - options || (options = { }); - - this.id = fabric.Object.__uid++; - - if (options.source) { - if (typeof options.source === 'string') { - // function string - if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') { - this.source = new Function(fabric.util.getFunctionBody(options.source)); - } - else { - // img src string - var _this = this; - this.source = fabric.util.createImage(); - fabric.util.loadImage(options.source, function(img) { - _this.source = img; - }); - } - } - else { - // img element - this.source = options.source; - } - } - if (options.repeat) { - this.repeat = options.repeat; - } - if (options.offsetX) { - this.offsetX = options.offsetX; - } - if (options.offsetY) { - this.offsetY = options.offsetY; - } - }, - - /** - * Returns object representation of a pattern - * @return {Object} Object representation of a pattern instance - */ - toObject: function() { - - var source; - - // callback - if (typeof this.source === 'function') { - source = String(this.source); - } - // element - else if (typeof this.source.src === 'string') { - source = this.source.src; - } - - return { - source: source, - repeat: this.repeat, - offsetX: this.offsetX, - offsetY: this.offsetY - }; - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of a pattern - * @param {fabric.Object} object - * @return {String} SVG representation of a pattern - */ - toSVG: function(object) { - var patternSource = typeof this.source === 'function' ? this.source() : this.source, - patternWidth = patternSource.width / object.getWidth(), - patternHeight = patternSource.height / object.getHeight(), - patternImgSrc = ''; - - if (patternSource.src) { - patternImgSrc = patternSource.src; - } - else if (patternSource.toDataURL) { - patternImgSrc = patternSource.toDataURL(); - } - - return '' + - '' + - ''; - }, - /* _TO_SVG_END_ */ - - /** - * Returns an instance of CanvasPattern - * @param {CanvasRenderingContext2D} ctx Context to create pattern - * @return {CanvasPattern} - */ - toLive: function(ctx) { - var source = typeof this.source === 'function' - ? this.source() - : this.source; - - // if the image failed to load, return, and allow rest to continue loading - if (!source) { - return ''; - } - - // if an image - if (typeof source.src !== 'undefined') { - if (!source.complete) { - return ''; - } - if (source.naturalWidth === 0 || source.naturalHeight === 0) { - return ''; - } - } - return ctx.createPattern(source, this.repeat); - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Shadow) { - fabric.warn('fabric.Shadow is already defined.'); - return; - } - - /** - * Shadow class - * @class fabric.Shadow - * @see {@link http://fabricjs.com/shadows/|Shadow demo} - * @see {@link fabric.Shadow#initialize} for constructor definition - */ - fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { - - /** - * Shadow color - * @type String - * @default - */ - color: 'rgb(0,0,0)', - - /** - * Shadow blur - * @type Number - */ - blur: 0, - - /** - * Shadow horizontal offset - * @type Number - * @default - */ - offsetX: 0, - - /** - * Shadow vertical offset - * @type Number - * @default - */ - offsetY: 0, - - /** - * Whether the shadow should affect stroke operations - * @type Boolean - * @default - */ - affectStroke: false, - - /** - * Indicates whether toObject should include default values - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * Constructor - * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetX properties or string (e.g. "rgba(0,0,0,0.2) 2px 2px 10px, "2px 2px 10px rgba(0,0,0,0.2)") - * @return {fabric.Shadow} thisArg - */ - initialize: function(options) { - - if (typeof options === 'string') { - options = this._parseShadow(options); - } - - for (var prop in options) { - this[prop] = options[prop]; - } - - this.id = fabric.Object.__uid++; - }, - - /** - * @private - * @param {String} shadow Shadow value to parse - * @return {Object} Shadow object with color, offsetX, offsetY and blur - */ - _parseShadow: function(shadow) { - var shadowStr = shadow.trim(), - offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [ ], - color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)'; - - return { - color: color.trim(), - offsetX: parseInt(offsetsAndBlur[1], 10) || 0, - offsetY: parseInt(offsetsAndBlur[2], 10) || 0, - blur: parseInt(offsetsAndBlur[3], 10) || 0 - }; - }, - - /** - * Returns a string representation of an instance - * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow - * @return {String} Returns CSS3 text-shadow declaration - */ - toString: function() { - return [this.offsetX, this.offsetY, this.blur, this.color].join('px '); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of a shadow - * @param {fabric.Object} object - * @return {String} SVG representation of a shadow - */ - toSVG: function(object) { - var mode = 'SourceAlpha'; - - if (object && (object.fill === this.color || object.stroke === this.color)) { - mode = 'SourceGraphic'; - } - - return ( - '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns object representation of a shadow - * @return {Object} Object representation of a shadow instance - */ - toObject: function() { - if (this.includeDefaultValues) { - return { - color: this.color, - blur: this.blur, - offsetX: this.offsetX, - offsetY: this.offsetY - }; - } - var obj = { }, proto = fabric.Shadow.prototype; - if (this.color !== proto.color) { - obj.color = this.color; - } - if (this.blur !== proto.blur) { - obj.blur = this.blur; - } - if (this.offsetX !== proto.offsetX) { - obj.offsetX = this.offsetX; - } - if (this.offsetY !== proto.offsetY) { - obj.offsetY = this.offsetY; - } - return obj; - } - }); - - /** - * Regex matching shadow offsetX, offsetY and blur (ex: "2px 2px 10px rgba(0,0,0,0.2)", "rgb(0,255,0) 2px 2px") - * @static - * @field - * @memberOf fabric.Shadow - */ - fabric.Shadow.reOffsetsAndBlur = /(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function () { - - 'use strict'; - - if (fabric.StaticCanvas) { - fabric.warn('fabric.StaticCanvas is already defined.'); - return; - } - - // aliases for faster resolution - var extend = fabric.util.object.extend, - getElementOffset = fabric.util.getElementOffset, - removeFromArray = fabric.util.removeFromArray, - - CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element'); - - /** - * Static canvas class - * @class fabric.StaticCanvas - * @mixes fabric.Collection - * @mixes fabric.Observable - * @see {@link http://fabricjs.com/static_canvas/|StaticCanvas demo} - * @see {@link fabric.StaticCanvas#initialize} for constructor definition - * @fires before:render - * @fires after:render - * @fires canvas:cleared - * @fires object:added - * @fires object:removed - */ - fabric.StaticCanvas = fabric.util.createClass(/** @lends fabric.StaticCanvas.prototype */ { - - /** - * Constructor - * @param {HTMLElement | String} el <canvas> element to initialize instance on - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(el, options) { - options || (options = { }); - - this._initStatic(el, options); - fabric.StaticCanvas.activeInstance = this; - }, - - /** - * Background color of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}. - * @type {(String|fabric.Pattern)} - * @default - */ - backgroundColor: '', - - /** - * Background image of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setBackgroundImage}. - * Backwards incompatibility note: The "backgroundImageOpacity" - * and "backgroundImageStretch" properties are deprecated since 1.3.9. - * Use {@link fabric.Image#opacity}, {@link fabric.Image#width} and {@link fabric.Image#height}. - * @type fabric.Image - * @default - */ - backgroundImage: null, - - /** - * Overlay color of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setOverlayColor} - * @since 1.3.9 - * @type {(String|fabric.Pattern)} - * @default - */ - overlayColor: '', - - /** - * Overlay image of canvas instance. - * Should be set via {@link fabric.StaticCanvas#setOverlayImage}. - * Backwards incompatibility note: The "overlayImageLeft" - * and "overlayImageTop" properties are deprecated since 1.3.9. - * Use {@link fabric.Image#left} and {@link fabric.Image#top}. - * @type fabric.Image - * @default - */ - overlayImage: null, - - /** - * Indicates whether toObject/toDatalessObject should include default values - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * Indicates whether objects' state should be saved - * @type Boolean - * @default - */ - stateful: true, - - /** - * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove} should also re-render canvas. - * Disabling this option could give a great performance boost when adding/removing a lot of objects to/from canvas at once - * (followed by a manual rendering after addition/deletion) - * @type Boolean - * @default - */ - renderOnAddRemove: true, - - /** - * Function that determines clipping of entire canvas area - * Being passed context as first argument. See clipping canvas area in {@link https://github.com/kangax/fabric.js/wiki/FAQ} - * @type Function - * @default - */ - clipTo: null, - - /** - * Indicates whether object controls (borders/controls) are rendered above overlay image - * @type Boolean - * @default - */ - controlsAboveOverlay: false, - - /** - * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas - * @type Boolean - * @default - */ - allowTouchScrolling: false, - - /** - * Indicates whether this canvas will use image smoothing, this is on by default in browsers - * @type Boolean - * @default - */ - imageSmoothingEnabled: true, - - /** - * The transformation (in the format of Canvas transform) which focuses the viewport - * @type Array - * @default - */ - viewportTransform: [1, 0, 0, 1, 0, 0], - - /** - * Callback; invoked right before object is about to be scaled/rotated - */ - onBeforeScaleRotate: function () { - /* NOOP */ - }, - - /** - * @private - * @param {HTMLElement | String} el <canvas> element to initialize instance on - * @param {Object} [options] Options object - */ - _initStatic: function(el, options) { - this._objects = []; - - this._createLowerCanvas(el); - this._initOptions(options); - this._setImageSmoothing(); - - if (options.overlayImage) { - this.setOverlayImage(options.overlayImage, this.renderAll.bind(this)); - } - if (options.backgroundImage) { - this.setBackgroundImage(options.backgroundImage, this.renderAll.bind(this)); - } - if (options.backgroundColor) { - this.setBackgroundColor(options.backgroundColor, this.renderAll.bind(this)); - } - if (options.overlayColor) { - this.setOverlayColor(options.overlayColor, this.renderAll.bind(this)); - } - this.calcOffset(); - }, - - /** - * Calculates canvas element offset relative to the document - * This method is also attached as "resize" event handler of window - * @return {fabric.Canvas} instance - * @chainable - */ - calcOffset: function () { - this._offset = getElementOffset(this.lowerCanvasEl); - return this; - }, - - /** - * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas - * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to - * @param {Function} callback callback to invoke when image is loaded and set as an overlay - * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}. - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo} - * @example Normal overlayImage with left/top = 0 - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * // Needed to position overlayImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example overlayImage with different properties - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top' - * }); - * @example Stretched overlayImage #1 - width/height correspond to canvas width/height - * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img) { - * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); - * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas)); - * }); - * @example Stretched overlayImage #2 - width/height correspond to canvas width/height - * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), { - * width: canvas.width, - * height: canvas.height, - * // Needed to position overlayImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - */ - setOverlayImage: function (image, callback, options) { - return this.__setBgOverlayImage('overlayImage', image, callback, options); - }, - - /** - * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas - * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to - * @param {Function} callback Callback to invoke when image is loaded and set as background - * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}. - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/YH9yD/|jsFiddle demo} - * @example Normal backgroundImage with left/top = 0 - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * // Needed to position backgroundImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - * @example backgroundImage with different properties - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * opacity: 0.5, - * angle: 45, - * left: 400, - * top: 400, - * originX: 'left', - * originY: 'top' - * }); - * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height - * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img) { - * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'}); - * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas)); - * }); - * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height - * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), { - * width: canvas.width, - * height: canvas.height, - * // Needed to position backgroundImage at 0/0 - * originX: 'left', - * originY: 'top' - * }); - */ - setBackgroundImage: function (image, callback, options) { - return this.__setBgOverlayImage('backgroundImage', image, callback, options); - }, - - /** - * Sets {@link fabric.StaticCanvas#overlayColor|background color} for this canvas - * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set background color to - * @param {Function} callback Callback to invoke when background color is set - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo} - * @example Normal overlayColor - color value - * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as overlayColor - * canvas.setOverlayColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png' - * }, canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as overlayColor with repeat and offset - * canvas.setOverlayColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png', - * repeat: 'repeat', - * offsetX: 200, - * offsetY: 100 - * }, canvas.renderAll.bind(canvas)); - */ - setOverlayColor: function(overlayColor, callback) { - return this.__setBgOverlayColor('overlayColor', overlayColor, callback); - }, - - /** - * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas - * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to - * @param {Function} callback Callback to invoke when background color is set - * @return {fabric.Canvas} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo} - * @example Normal backgroundColor - color value - * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as backgroundColor - * canvas.setBackgroundColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png' - * }, canvas.renderAll.bind(canvas)); - * @example fabric.Pattern used as backgroundColor with repeat and offset - * canvas.setBackgroundColor({ - * source: 'http://fabricjs.com/assets/escheresque_ste.png', - * repeat: 'repeat', - * offsetX: 200, - * offsetY: 100 - * }, canvas.renderAll.bind(canvas)); - */ - setBackgroundColor: function(backgroundColor, callback) { - return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback); - }, - - /** - * @private - * @see {@link http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-imagesmoothingenabled|WhatWG Canvas Standard} - */ - _setImageSmoothing: function(){ - var ctx = this.getContext(); - - ctx.imageSmoothingEnabled = this.imageSmoothingEnabled; - ctx.webkitImageSmoothingEnabled = this.imageSmoothingEnabled; - ctx.mozImageSmoothingEnabled = this.imageSmoothingEnabled; - ctx.msImageSmoothingEnabled = this.imageSmoothingEnabled; - ctx.oImageSmoothingEnabled = this.imageSmoothingEnabled; - }, - - /** - * @private - * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage} - * or {@link fabric.StaticCanvas#overlayImage|overlayImage}) - * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to - * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay - * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}. - */ - __setBgOverlayImage: function(property, image, callback, options) { - if (typeof image === 'string') { - fabric.util.loadImage(image, function(img) { - this[property] = new fabric.Image(img, options); - callback && callback(); - }, this); - } - else { - this[property] = image; - callback && callback(); - } - - return this; - }, - - /** - * @private - * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor} - * or {@link fabric.StaticCanvas#overlayColor|overlayColor}) - * @param {(Object|String|null)} color Object with pattern information, color value or null - * @param {Function} [callback] Callback is invoked when color is set - */ - __setBgOverlayColor: function(property, color, callback) { - if (color && color.source) { - var _this = this; - fabric.util.loadImage(color.source, function(img) { - _this[property] = new fabric.Pattern({ - source: img, - repeat: color.repeat, - offsetX: color.offsetX, - offsetY: color.offsetY - }); - callback && callback(); - }); - } - else { - this[property] = color; - callback && callback(); - } - - return this; - }, - - /** - * @private - */ - _createCanvasElement: function() { - var element = fabric.document.createElement('canvas'); - if (!element.style) { - element.style = { }; - } - if (!element) { - throw CANVAS_INIT_ERROR; - } - this._initCanvasElement(element); - return element; - }, - - /** - * @private - * @param {HTMLElement} element - */ - _initCanvasElement: function(element) { - fabric.util.createCanvasElement(element); - - if (typeof element.getContext === 'undefined') { - throw CANVAS_INIT_ERROR; - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initOptions: function (options) { - for (var prop in options) { - this[prop] = options[prop]; - } - - this.width = this.width || parseInt(this.lowerCanvasEl.width, 10) || 0; - this.height = this.height || parseInt(this.lowerCanvasEl.height, 10) || 0; - - if (!this.lowerCanvasEl.style) { - return; - } - - this.lowerCanvasEl.width = this.width; - this.lowerCanvasEl.height = this.height; - - this.lowerCanvasEl.style.width = this.width + 'px'; - this.lowerCanvasEl.style.height = this.height + 'px'; - - this.viewportTransform = this.viewportTransform.slice(); - }, - - /** - * Creates a bottom canvas - * @private - * @param {HTMLElement} [canvasEl] - */ - _createLowerCanvas: function (canvasEl) { - this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement(); - this._initCanvasElement(this.lowerCanvasEl); - - fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas'); - - if (this.interactive) { - this._applyCanvasStyle(this.lowerCanvasEl); - } - - this.contextContainer = this.lowerCanvasEl.getContext('2d'); - }, - - /** - * Returns canvas width (in px) - * @return {Number} - */ - getWidth: function () { - return this.width; - }, - - /** - * Returns canvas height (in px) - * @return {Number} - */ - getHeight: function () { - return this.height; - }, - - /** - * Sets width of this canvas instance - * @param {Number|String} value Value to set width to - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} instance - * @chainable true - */ - setWidth: function (value, options) { - return this.setDimensions({ width: value }, options); - }, - - /** - * Sets height of this canvas instance - * @param {Number|String} value Value to set height to - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} instance - * @chainable true - */ - setHeight: function (value, options) { - return this.setDimensions({ height: value }, options); - }, - - /** - * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em) - * @param {Object} dimensions Object with width/height properties - * @param {Number|String} [dimensions.width] Width of canvas element - * @param {Number|String} [dimensions.height] Height of canvas element - * @param {Object} [options] Options object - * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions - * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions - * @return {fabric.Canvas} thisArg - * @chainable - */ - setDimensions: function (dimensions, options) { - var cssValue; - - options = options || {}; - - for (var prop in dimensions) { - cssValue = dimensions[prop]; - - if (!options.cssOnly) { - this._setBackstoreDimension(prop, dimensions[prop]); - cssValue += 'px'; - } - - if (!options.backstoreOnly) { - this._setCssDimension(prop, cssValue); - } - } - - if (!options.cssOnly) { - this.renderAll(); - } - - this.calcOffset(); - - return this; - }, - - /** - * Helper for setting width/height - * @private - * @param {String} prop property (width|height) - * @param {Number} value value to set property to - * @return {fabric.Canvas} instance - * @chainable true - */ - _setBackstoreDimension: function (prop, value) { - this.lowerCanvasEl[prop] = value; - - if (this.upperCanvasEl) { - this.upperCanvasEl[prop] = value; - } - - if (this.cacheCanvasEl) { - this.cacheCanvasEl[prop] = value; - } - - this[prop] = value; - - return this; - }, - - /** - * Helper for setting css width/height - * @private - * @param {String} prop property (width|height) - * @param {String} value value to set property to - * @return {fabric.Canvas} instance - * @chainable true - */ - _setCssDimension: function (prop, value) { - this.lowerCanvasEl.style[prop] = value; - - if (this.upperCanvasEl) { - this.upperCanvasEl.style[prop] = value; - } - - if (this.wrapperEl) { - this.wrapperEl.style[prop] = value; - } - - return this; - }, - - /** - * Returns canvas zoom level - * @return {Number} - */ - getZoom: function () { - return Math.sqrt(this.viewportTransform[0] * this.viewportTransform[3]); - }, - - /** - * Sets viewport transform of this canvas instance - * @param {Array} vpt the transform in the form of context.transform - * @return {fabric.Canvas} instance - * @chainable true - */ - setViewportTransform: function (vpt) { - this.viewportTransform = vpt; - this.renderAll(); - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i].setCoords(); - } - return this; - }, - - /** - * Sets zoom level of this canvas instance, zoom centered around point - * @param {fabric.Point} point to zoom with respect to - * @param {Number} value to set zoom to, less than 1 zooms out - * @return {fabric.Canvas} instance - * @chainable true - */ - zoomToPoint: function (point, value) { - // TODO: just change the scale, preserve other transformations - var before = point; - point = fabric.util.transformPoint(point, fabric.util.invertTransform(this.viewportTransform)); - this.viewportTransform[0] = value; - this.viewportTransform[3] = value; - var after = fabric.util.transformPoint(point, this.viewportTransform); - this.viewportTransform[4] += before.x - after.x; - this.viewportTransform[5] += before.y - after.y; - this.renderAll(); - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i].setCoords(); - } - return this; - }, - - /** - * Sets zoom level of this canvas instance - * @param {Number} value to set zoom to, less than 1 zooms out - * @return {fabric.Canvas} instance - * @chainable true - */ - setZoom: function (value) { - this.zoomToPoint(new fabric.Point(0, 0), value); - return this; - }, - - /** - * Pan viewport so as to place point at top left corner of canvas - * @param {fabric.Point} point to move to - * @return {fabric.Canvas} instance - * @chainable true - */ - absolutePan: function (point) { - this.viewportTransform[4] = -point.x; - this.viewportTransform[5] = -point.y; - this.renderAll(); - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i].setCoords(); - } - return this; - }, - - /** - * Pans viewpoint relatively - * @param {fabric.Point} point (position vector) to move by - * @return {fabric.Canvas} instance - * @chainable true - */ - relativePan: function (point) { - return this.absolutePan(new fabric.Point( - -point.x - this.viewportTransform[4], - -point.y - this.viewportTransform[5] - )); - }, - - /** - * Returns <canvas> element corresponding to this instance - * @return {HTMLCanvasElement} - */ - getElement: function () { - return this.lowerCanvasEl; - }, - - /** - * Returns currently selected object, if any - * @return {fabric.Object} - */ - getActiveObject: function() { - return null; - }, - - /** - * Returns currently selected group of object, if any - * @return {fabric.Group} - */ - getActiveGroup: function() { - return null; - }, - - /** - * Given a context, renders an object on that context - * @param {CanvasRenderingContext2D} ctx Context to render object on - * @param {fabric.Object} object Object to render - * @private - */ - _draw: function (ctx, object) { - if (!object) { - return; - } - - ctx.save(); - var v = this.viewportTransform; - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - object.render(ctx); - ctx.restore(); - if (!this.controlsAboveOverlay) { - object._renderControls(ctx); - } - }, - - /** - * @private - * @param {fabric.Object} obj Object that was added - */ - _onObjectAdded: function(obj) { - this.stateful && obj.setupState(); - obj.canvas = this; - obj.setCoords(); - this.fire('object:added', { target: obj }); - obj.fire('added'); - }, - - /** - * @private - * @param {fabric.Object} obj Object that was removed - */ - _onObjectRemoved: function(obj) { - // removing active object should fire "selection:cleared" events - if (this.getActiveObject() === obj) { - this.fire('before:selection:cleared', { target: obj }); - this._discardActiveObject(); - this.fire('selection:cleared'); - } - - this.fire('object:removed', { target: obj }); - obj.fire('removed'); - }, - - /** - * Clears specified context of canvas element - * @param {CanvasRenderingContext2D} ctx Context to clear - * @return {fabric.Canvas} thisArg - * @chainable - */ - clearContext: function(ctx) { - ctx.clearRect(0, 0, this.width, this.height); - return this; - }, - - /** - * Returns context of canvas where objects are drawn - * @return {CanvasRenderingContext2D} - */ - getContext: function () { - return this.contextContainer; - }, - - /** - * Clears all contexts (background, main, top) of an instance - * @return {fabric.Canvas} thisArg - * @chainable - */ - clear: function () { - this._objects.length = 0; - if (this.discardActiveGroup) { - this.discardActiveGroup(); - } - if (this.discardActiveObject) { - this.discardActiveObject(); - } - this.clearContext(this.contextContainer); - if (this.contextTop) { - this.clearContext(this.contextTop); - } - this.fire('canvas:cleared'); - this.renderAll(); - return this; - }, - - /** - * Renders both the top canvas and the secondary container canvas. - * @param {Boolean} [allOnTop] Whether we want to force all images to be rendered on the top canvas - * @return {fabric.Canvas} instance - * @chainable - */ - renderAll: function (allOnTop) { - var canvasToDrawOn = this[(allOnTop === true && this.interactive) ? 'contextTop' : 'contextContainer'], - activeGroup = this.getActiveGroup(); - - if (this.contextTop && this.selection && !this._groupSelector) { - this.clearContext(this.contextTop); - } - - if (!allOnTop) { - this.clearContext(canvasToDrawOn); - } - - this.fire('before:render'); - - if (this.clipTo) { - fabric.util.clipContext(this, canvasToDrawOn); - } - - this._renderBackground(canvasToDrawOn); - this._renderObjects(canvasToDrawOn, activeGroup); - this._renderActiveGroup(canvasToDrawOn, activeGroup); - - if (this.clipTo) { - canvasToDrawOn.restore(); - } - - this._renderOverlay(canvasToDrawOn); - - if (this.controlsAboveOverlay && this.interactive) { - this.drawControls(canvasToDrawOn); - } - - this.fire('after:render'); - - return this; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {fabric.Group} activeGroup - */ - _renderObjects: function(ctx, activeGroup) { - var i, length; - - // fast path - if (!activeGroup) { - for (i = 0, length = this._objects.length; i < length; ++i) { - this._draw(ctx, this._objects[i]); - } - } - else { - for (i = 0, length = this._objects.length; i < length; ++i) { - if (this._objects[i] && !activeGroup.contains(this._objects[i])) { - this._draw(ctx, this._objects[i]); - } - } - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {fabric.Group} activeGroup - */ - _renderActiveGroup: function(ctx, activeGroup) { - - // delegate rendering to group selection (if one exists) - if (activeGroup) { - - //Store objects in group preserving order, then replace - var sortedObjects = []; - this.forEachObject(function (object) { - if (activeGroup.contains(object)) { - sortedObjects.push(object); - } - }); - activeGroup._set('objects', sortedObjects); - this._draw(ctx, activeGroup); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderBackground: function(ctx) { - if (this.backgroundColor) { - ctx.fillStyle = this.backgroundColor.toLive - ? this.backgroundColor.toLive(ctx) - : this.backgroundColor; - - ctx.fillRect( - this.backgroundColor.offsetX || 0, - this.backgroundColor.offsetY || 0, - this.width, - this.height); - } - if (this.backgroundImage) { - this._draw(ctx, this.backgroundImage); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderOverlay: function(ctx) { - if (this.overlayColor) { - ctx.fillStyle = this.overlayColor.toLive - ? this.overlayColor.toLive(ctx) - : this.overlayColor; - - ctx.fillRect( - this.overlayColor.offsetX || 0, - this.overlayColor.offsetY || 0, - this.width, - this.height); - } - if (this.overlayImage) { - this._draw(ctx, this.overlayImage); - } - }, - - /** - * Method to render only the top canvas. - * Also used to render the group selection box. - * @return {fabric.Canvas} thisArg - * @chainable - */ - renderTop: function () { - var ctx = this.contextTop || this.contextContainer; - this.clearContext(ctx); - - // we render the top context - last object - if (this.selection && this._groupSelector) { - this._drawSelection(); - } - - // delegate rendering to group selection if one exists - // used for drawing selection borders/controls - var activeGroup = this.getActiveGroup(); - if (activeGroup) { - activeGroup.render(ctx); - } - - this._renderOverlay(ctx); - - this.fire('after:render'); - - return this; - }, - - /** - * Returns coordinates of a center of canvas. - * Returned value is an object with top and left properties - * @return {Object} object with "top" and "left" number values - */ - getCenter: function () { - return { - top: this.getHeight() / 2, - left: this.getWidth() / 2 - }; - }, - - /** - * Centers object horizontally. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @param {fabric.Object} object Object to center horizontally - * @return {fabric.Canvas} thisArg - */ - centerObjectH: function (object) { - this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y)); - this.renderAll(); - return this; - }, - - /** - * Centers object vertically. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @param {fabric.Object} object Object to center vertically - * @return {fabric.Canvas} thisArg - * @chainable - */ - centerObjectV: function (object) { - this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top)); - this.renderAll(); - return this; - }, - - /** - * Centers object vertically and horizontally. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @param {fabric.Object} object Object to center vertically and horizontally - * @return {fabric.Canvas} thisArg - * @chainable - */ - centerObject: function(object) { - var center = this.getCenter(); - - this._centerObject(object, new fabric.Point(center.left, center.top)); - this.renderAll(); - return this; - }, - - /** - * @private - * @param {fabric.Object} object Object to center - * @param {fabric.Point} center Center point - * @return {fabric.Canvas} thisArg - * @chainable - */ - _centerObject: function(object, center) { - object.setPositionByOrigin(center, 'center', 'center'); - return this; - }, - - /** - * Returs dataless JSON representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {String} json string - */ - toDatalessJSON: function (propertiesToInclude) { - return this.toDatalessObject(propertiesToInclude); - }, - - /** - * Returns object representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function (propertiesToInclude) { - return this._toObjectMethod('toObject', propertiesToInclude); - }, - - /** - * Returns dataless object representation of canvas - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toDatalessObject: function (propertiesToInclude) { - return this._toObjectMethod('toDatalessObject', propertiesToInclude); - }, - - /** - * @private - */ - _toObjectMethod: function (methodName, propertiesToInclude) { - - var activeGroup = this.getActiveGroup(); - if (activeGroup) { - this.discardActiveGroup(); - } - - var data = { - objects: this._toObjects(methodName, propertiesToInclude) - }; - - extend(data, this.__serializeBgOverlay()); - - fabric.util.populateWithProperties(this, data, propertiesToInclude); - - if (activeGroup) { - this.setActiveGroup(new fabric.Group(activeGroup.getObjects(), { - originX: 'center', - originY: 'center' - })); - activeGroup.forEachObject(function(o) { - o.set('active', true); - }); - - if (this._currentTransform) { - this._currentTransform.target = this.getActiveGroup(); - } - } - - return data; - }, - - /** - * @private - */ - _toObjects: function(methodName, propertiesToInclude) { - return this.getObjects().map(function(instance) { - return this._toObject(instance, methodName, propertiesToInclude); - }, this); - }, - - /** - * @private - */ - _toObject: function(instance, methodName, propertiesToInclude) { - var originalValue; - - if (!this.includeDefaultValues) { - originalValue = instance.includeDefaultValues; - instance.includeDefaultValues = false; - } - var object = instance[methodName](propertiesToInclude); - if (!this.includeDefaultValues) { - instance.includeDefaultValues = originalValue; - } - return object; - }, - - /** - * @private - */ - __serializeBgOverlay: function() { - var data = { - background: (this.backgroundColor && this.backgroundColor.toObject) - ? this.backgroundColor.toObject() - : this.backgroundColor - }; - - if (this.overlayColor) { - data.overlay = this.overlayColor.toObject - ? this.overlayColor.toObject() - : this.overlayColor; - } - if (this.backgroundImage) { - data.backgroundImage = this.backgroundImage.toObject(); - } - if (this.overlayImage) { - data.overlayImage = this.overlayImage.toObject(); - } - - return data; - }, - - /* _TO_SVG_START_ */ - /** - * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true, - * a zoomed canvas will then produce zoomed SVG output. - * @type Boolean - * @default - */ - svgViewportTransformation: true, - - /** - * Returns SVG representation of canvas - * @function - * @param {Object} [options] Options object for SVG output - * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included - * @param {Object} [options.viewBox] SVG viewbox object - * @param {Number} [options.viewBox.x] x-cooridnate of viewbox - * @param {Number} [options.viewBox.y] y-coordinate of viewbox - * @param {Number} [options.viewBox.width] Width of viewbox - * @param {Number} [options.viewBox.height] Height of viewbox - * @param {String} [options.encoding=UTF-8] Encoding of SVG output - * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation. - * @return {String} SVG string - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3/#serialization} - * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo} - * @example Normal SVG output - * var svg = canvas.toSVG(); - * @example SVG output without preamble (without <?xml ../>) - * var svg = canvas.toSVG({suppressPreamble: true}); - * @example SVG output with viewBox attribute - * var svg = canvas.toSVG({ - * viewBox: { - * x: 100, - * y: 100, - * width: 200, - * height: 300 - * } - * }); - * @example SVG output with different encoding (default: UTF-8) - * var svg = canvas.toSVG({encoding: 'ISO-8859-1'}); - * @example Modify SVG output with reviver function - * var svg = canvas.toSVG(null, function(svg) { - * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', ''); - * }); - */ - toSVG: function(options, reviver) { - options || (options = { }); - - var markup = []; - - this._setSVGPreamble(markup, options); - this._setSVGHeader(markup, options); - - this._setSVGBgOverlayColor(markup, 'backgroundColor'); - this._setSVGBgOverlayImage(markup, 'backgroundImage'); - - this._setSVGObjects(markup, reviver); - - this._setSVGBgOverlayColor(markup, 'overlayColor'); - this._setSVGBgOverlayImage(markup, 'overlayImage'); - - markup.push(''); - - return markup.join(''); - }, - - /** - * @private - */ - _setSVGPreamble: function(markup, options) { - if (!options.suppressPreamble) { - markup.push( - '', - '\n' - ); - } - }, - - /** - * @private - */ - _setSVGHeader: function(markup, options) { - var width, height, vpt; - - if (options.viewBox) { - width = options.viewBox.width; - height = options.viewBox.height; - } - else { - width = this.width; - height = this.height; - if (!this.svgViewportTransformation) { - vpt = this.viewportTransform; - width /= vpt[0]; - height /= vpt[3]; - } - } - - markup.push( - '', - 'Created with Fabric.js ', fabric.version, '', - '', - fabric.createSVGFontFacesMarkup(this.getObjects()), - fabric.createSVGRefElementsMarkup(this), - '' - ); - }, - - /** - * @private - */ - _setSVGObjects: function(markup, reviver) { - var activeGroup = this.getActiveGroup(); - if (activeGroup) { - this.discardActiveGroup(); - } - for (var i = 0, objects = this.getObjects(), len = objects.length; i < len; i++) { - markup.push(objects[i].toSVG(reviver)); - } - if (activeGroup) { - this.setActiveGroup(new fabric.Group(activeGroup.getObjects())); - activeGroup.forEachObject(function(o) { - o.set('active', true); - }); - } - }, - - /** - * @private - */ - _setSVGBgOverlayImage: function(markup, property) { - if (this[property] && this[property].toSVG) { - markup.push(this[property].toSVG()); - } - }, - - /** - * @private - */ - _setSVGBgOverlayColor: function(markup, property) { - if (this[property] && this[property].source) { - markup.push( - '' - ); - } - else if (this[property] && property === 'overlayColor') { - markup.push( - '' - ); - } - }, - /* _TO_SVG_END_ */ - - /** - * Moves an object to the bottom of the stack of drawn objects - * @param {fabric.Object} object Object to send to back - * @return {fabric.Canvas} thisArg - * @chainable - */ - sendToBack: function (object) { - removeFromArray(this._objects, object); - this._objects.unshift(object); - return this.renderAll && this.renderAll(); - }, - - /** - * Moves an object to the top of the stack of drawn objects - * @param {fabric.Object} object Object to send - * @return {fabric.Canvas} thisArg - * @chainable - */ - bringToFront: function (object) { - removeFromArray(this._objects, object); - this._objects.push(object); - return this.renderAll && this.renderAll(); - }, - - /** - * Moves an object down in stack of drawn objects - * @param {fabric.Object} object Object to send - * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object - * @return {fabric.Canvas} thisArg - * @chainable - */ - sendBackwards: function (object, intersecting) { - var idx = this._objects.indexOf(object); - - // if object is not on the bottom of stack - if (idx !== 0) { - var newIdx = this._findNewLowerIndex(object, idx, intersecting); - - removeFromArray(this._objects, object); - this._objects.splice(newIdx, 0, object); - this.renderAll && this.renderAll(); - } - return this; - }, - - /** - * @private - */ - _findNewLowerIndex: function(object, idx, intersecting) { - var newIdx; - - if (intersecting) { - newIdx = idx; - - // traverse down the stack looking for the nearest intersecting object - for (var i = idx - 1; i >= 0; --i) { - - var isIntersecting = object.intersectsWithObject(this._objects[i]) || - object.isContainedWithinObject(this._objects[i]) || - this._objects[i].isContainedWithinObject(object); - - if (isIntersecting) { - newIdx = i; - break; - } - } - } - else { - newIdx = idx - 1; - } - - return newIdx; - }, - - /** - * Moves an object up in stack of drawn objects - * @param {fabric.Object} object Object to send - * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object - * @return {fabric.Canvas} thisArg - * @chainable - */ - bringForward: function (object, intersecting) { - var idx = this._objects.indexOf(object); - - // if object is not on top of stack (last item in an array) - if (idx !== this._objects.length - 1) { - var newIdx = this._findNewUpperIndex(object, idx, intersecting); - - removeFromArray(this._objects, object); - this._objects.splice(newIdx, 0, object); - this.renderAll && this.renderAll(); - } - return this; - }, - - /** - * @private - */ - _findNewUpperIndex: function(object, idx, intersecting) { - var newIdx; - - if (intersecting) { - newIdx = idx; - - // traverse up the stack looking for the nearest intersecting object - for (var i = idx + 1; i < this._objects.length; ++i) { - - var isIntersecting = object.intersectsWithObject(this._objects[i]) || - object.isContainedWithinObject(this._objects[i]) || - this._objects[i].isContainedWithinObject(object); - - if (isIntersecting) { - newIdx = i; - break; - } - } - } - else { - newIdx = idx + 1; - } - - return newIdx; - }, - - /** - * Moves an object to specified level in stack of drawn objects - * @param {fabric.Object} object Object to send - * @param {Number} index Position to move to - * @return {fabric.Canvas} thisArg - * @chainable - */ - moveTo: function (object, index) { - removeFromArray(this._objects, object); - this._objects.splice(index, 0, object); - return this.renderAll && this.renderAll(); - }, - - /** - * Clears a canvas element and removes all event listeners - * @return {fabric.Canvas} thisArg - * @chainable - */ - dispose: function () { - this.clear(); - this.interactive && this.removeListeners(); - return this; - }, - - /** - * Returns a string representation of an instance - * @return {String} string representation of an instance - */ - toString: function () { - return '#'; - } - }); - - extend(fabric.StaticCanvas.prototype, fabric.Observable); - extend(fabric.StaticCanvas.prototype, fabric.Collection); - extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter); - - extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ { - - /** - * @static - * @type String - * @default - */ - EMPTY_JSON: '{"objects": [], "background": "white"}', - - /** - * Provides a way to check support of some of the canvas methods - * (either those of HTMLCanvasElement itself, or rendering context) - * - * @param {String} methodName Method to check support for; - * Could be one of "getImageData", "toDataURL", "toDataURLWithQuality" or "setLineDash" - * @return {Boolean | null} `true` if method is supported (or at least exists), - * `null` if canvas element or context can not be initialized - */ - supports: function (methodName) { - var el = fabric.util.createCanvasElement(); - - if (!el || !el.getContext) { - return null; - } - - var ctx = el.getContext('2d'); - if (!ctx) { - return null; - } - - switch (methodName) { - - case 'getImageData': - return typeof ctx.getImageData !== 'undefined'; - - case 'setLineDash': - return typeof ctx.setLineDash !== 'undefined'; - - case 'toDataURL': - return typeof el.toDataURL !== 'undefined'; - - case 'toDataURLWithQuality': - try { - el.toDataURL('image/jpeg', 0); - return true; - } - catch (e) { } - return false; - - default: - return null; - } - } - }); - - /** - * Returns JSON representation of canvas - * @function - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {String} JSON string - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3/#serialization} - * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo} - * @example JSON without additional properties - * var json = canvas.toJSON(); - * @example JSON with additional properties included - * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']); - * @example JSON without default values - * canvas.includeDefaultValues = false; - * var json = canvas.toJSON(); - */ - fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject; - -})(); - - -/** - * BaseBrush class - * @class fabric.BaseBrush - * @see {@link http://fabricjs.com/freedrawing/|Freedrawing demo} - */ -fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ { - - /** - * Color of a brush - * @type String - * @default - */ - color: 'rgb(0, 0, 0)', - - /** - * Width of a brush - * @type Number - * @default - */ - width: 1, - - /** - * Shadow object representing shadow of this shape. - * Backwards incompatibility note: This property replaces "shadowColor" (String), "shadowOffsetX" (Number), - * "shadowOffsetY" (Number) and "shadowBlur" (Number) since v1.2.12 - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * Line endings style of a brush (one of "butt", "round", "square") - * @type String - * @default - */ - strokeLineCap: 'round', - - /** - * Corner style of a brush (one of "bevil", "round", "miter") - * @type String - * @default - */ - strokeLineJoin: 'round', - - /** - * Sets shadow of an object - * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") - * @return {fabric.Object} thisArg - * @chainable - */ - setShadow: function(options) { - this.shadow = new fabric.Shadow(options); - return this; - }, - - /** - * Sets brush styles - * @private - */ - _setBrushStyles: function() { - var ctx = this.canvas.contextTop; - - ctx.strokeStyle = this.color; - ctx.lineWidth = this.width; - ctx.lineCap = this.strokeLineCap; - ctx.lineJoin = this.strokeLineJoin; - }, - - /** - * Sets brush shadow styles - * @private - */ - _setShadow: function() { - if (!this.shadow) { - return; - } - - var ctx = this.canvas.contextTop; - - ctx.shadowColor = this.shadow.color; - ctx.shadowBlur = this.shadow.blur; - ctx.shadowOffsetX = this.shadow.offsetX; - ctx.shadowOffsetY = this.shadow.offsetY; - }, - - /** - * Removes brush shadow styles - * @private - */ - _resetShadow: function() { - var ctx = this.canvas.contextTop; - - ctx.shadowColor = ''; - ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; - } -}); - - -(function() { - - var utilMin = fabric.util.array.min, - utilMax = fabric.util.array.max; - - /** - * PencilBrush class - * @class fabric.PencilBrush - * @extends fabric.BaseBrush - */ - fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ { - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.PencilBrush} Instance of a pencil brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this._points = [ ]; - }, - - /** - * Inovoked on mouse down - * @param {Object} pointer - */ - onMouseDown: function(pointer) { - this._prepareForDrawing(pointer); - // capture coordinates immediately - // this allows to draw dots (when movement never occurs) - this._captureDrawingPath(pointer); - this._render(); - }, - - /** - * Inovoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer) { - this._captureDrawingPath(pointer); - // redraw curve - // clear top canvas - this.canvas.clearContext(this.canvas.contextTop); - this._render(); - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function() { - this._finalizeAndAddPath(); - }, - - /** - * @private - * @param {Object} pointer Actual mouse position related to the canvas. - */ - _prepareForDrawing: function(pointer) { - - var p = new fabric.Point(pointer.x, pointer.y); - - this._reset(); - this._addPoint(p); - - this.canvas.contextTop.moveTo(p.x, p.y); - }, - - /** - * @private - * @param {fabric.Point} point Point to be added to points array - */ - _addPoint: function(point) { - this._points.push(point); - }, - - /** - * Clear points array and set contextTop canvas style. - * @private - */ - _reset: function() { - this._points.length = 0; - - this._setBrushStyles(); - this._setShadow(); - }, - - /** - * @private - * @param {Object} pointer Actual mouse position related to the canvas. - */ - _captureDrawingPath: function(pointer) { - var pointerPoint = new fabric.Point(pointer.x, pointer.y); - this._addPoint(pointerPoint); - }, - - /** - * Draw a smooth path on the topCanvas using quadraticCurveTo - * @private - */ - _render: function() { - var ctx = this.canvas.contextTop, - v = this.canvas.viewportTransform, - p1 = this._points[0], - p2 = this._points[1]; - - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - ctx.beginPath(); - - //if we only have 2 points in the path and they are the same - //it means that the user only clicked the canvas without moving the mouse - //then we should be drawing a dot. A path isn't drawn between two identical dots - //that's why we set them apart a bit - if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) { - p1.x -= 0.5; - p2.x += 0.5; - } - ctx.moveTo(p1.x, p1.y); - - for (var i = 1, len = this._points.length; i < len; i++) { - // we pick the point between pi + 1 & pi + 2 as the - // end point and p1 as our control point. - var midPoint = p1.midPointFrom(p2); - ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y); - - p1 = this._points[i]; - p2 = this._points[i + 1]; - } - // Draw last line as a straight line while - // we wait for the next point to be able to calculate - // the bezier control point - ctx.lineTo(p1.x, p1.y); - ctx.stroke(); - ctx.restore(); - }, - - /** - * Return an SVG path based on our captured points and their bounding box - * @private - */ - _getSVGPathData: function() { - this.box = this.getPathBoundingBox(this._points); - return this.convertPointsToSVGPath( - this._points, this.box.minX, this.box.minY); - }, - - /** - * Returns bounding box of a path based on given points - * @param {Array} points Array of points - * @return {Object} Object with minX, minY, maxX, maxY - */ - getPathBoundingBox: function(points) { - var xBounds = [], - yBounds = [], - p1 = points[0], - p2 = points[1], - startPoint = p1; - - for (var i = 1, len = points.length; i < len; i++) { - var midPoint = p1.midPointFrom(p2); - // with startPoint, p1 as control point, midpoint as end point - xBounds.push(startPoint.x); - xBounds.push(midPoint.x); - yBounds.push(startPoint.y); - yBounds.push(midPoint.y); - - p1 = points[i]; - p2 = points[i + 1]; - startPoint = midPoint; - } - - xBounds.push(p1.x); - yBounds.push(p1.y); - - return { - minX: utilMin(xBounds), - minY: utilMin(yBounds), - maxX: utilMax(xBounds), - maxY: utilMax(yBounds) - }; - }, - - /** - * Converts points to SVG path - * @param {Array} points Array of points - * @param {Number} minX - * @param {Number} minY - * @return {String} SVG path - */ - convertPointsToSVGPath: function(points, minX, minY) { - var path = [], - p1 = new fabric.Point(points[0].x - minX, points[0].y - minY), - p2 = new fabric.Point(points[1].x - minX, points[1].y - minY); - - path.push('M ', points[0].x - minX, ' ', points[0].y - minY, ' '); - for (var i = 1, len = points.length; i < len; i++) { - var midPoint = p1.midPointFrom(p2); - // p1 is our bezier control point - // midpoint is our endpoint - // start point is p(i-1) value. - path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' '); - p1 = new fabric.Point(points[i].x - minX, points[i].y - minY); - if ((i + 1) < points.length) { - p2 = new fabric.Point(points[i + 1].x - minX, points[i + 1].y - minY); - } - } - path.push('L ', p1.x, ' ', p1.y, ' '); - return path; - }, - - /** - * Creates fabric.Path object to add on canvas - * @param {String} pathData Path data - * @return {fabric.Path} Path to add on canvas - */ - createPath: function(pathData) { - var path = new fabric.Path(pathData); - path.fill = null; - path.stroke = this.color; - path.strokeWidth = this.width; - path.strokeLineCap = this.strokeLineCap; - path.strokeLineJoin = this.strokeLineJoin; - - if (this.shadow) { - this.shadow.affectStroke = true; - path.setShadow(this.shadow); - } - - return path; - }, - - /** - * On mouseup after drawing the path on contextTop canvas - * we use the points captured to create an new fabric path object - * and add it to the fabric canvas. - */ - _finalizeAndAddPath: function() { - var ctx = this.canvas.contextTop; - ctx.closePath(); - - var pathData = this._getSVGPathData().join(''); - if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') { - // do not create 0 width/height paths, as they are - // rendered inconsistently across browsers - // Firefox 4, for example, renders a dot, - // whereas Chrome 10 renders nothing - this.canvas.renderAll(); - return; - } - - // set path origin coordinates based on our bounding box - var originLeft = this.box.minX + (this.box.maxX - this.box.minX) / 2, - originTop = this.box.minY + (this.box.maxY - this.box.minY) / 2; - - this.canvas.contextTop.arc(originLeft, originTop, 3, 0, Math.PI * 2, false); - - var path = this.createPath(pathData); - path.set({ - left: originLeft, - top: originTop, - originX: 'center', - originY: 'center' - }); - - this.canvas.add(path); - path.setCoords(); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderAll(); - - // fire event 'path' created - this.canvas.fire('path:created', { path: path }); - } - }); -})(); - - -/** - * CircleBrush class - * @class fabric.CircleBrush - */ -fabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ { - - /** - * Width of a brush - * @type Number - * @default - */ - width: 10, - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.CircleBrush} Instance of a circle brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this.points = [ ]; - }, - /** - * Invoked inside on mouse down and mouse move - * @param {Object} pointer - */ - drawDot: function(pointer) { - var point = this.addPoint(pointer), - ctx = this.canvas.contextTop, - v = this.canvas.viewportTransform; - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - - ctx.fillStyle = point.fill; - ctx.beginPath(); - ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false); - ctx.closePath(); - ctx.fill(); - - ctx.restore(); - }, - - /** - * Invoked on mouse down - */ - onMouseDown: function(pointer) { - this.points.length = 0; - this.canvas.clearContext(this.canvas.contextTop); - this._setShadow(); - this.drawDot(pointer); - }, - - /** - * Invoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer) { - this.drawDot(pointer); - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function() { - var originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - - var circles = [ ]; - - for (var i = 0, len = this.points.length; i < len; i++) { - var point = this.points[i], - circle = new fabric.Circle({ - radius: point.radius, - left: point.x, - top: point.y, - originX: 'center', - originY: 'center', - fill: point.fill - }); - - this.shadow && circle.setShadow(this.shadow); - - circles.push(circle); - } - var group = new fabric.Group(circles, { originX: 'center', originY: 'center' }); - group.canvas = this.canvas; - - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.renderAll(); - }, - - /** - * @param {Object} pointer - * @return {fabric.Point} Just added pointer point - */ - addPoint: function(pointer) { - var pointerPoint = new fabric.Point(pointer.x, pointer.y), - - circleRadius = fabric.util.getRandomInt( - Math.max(0, this.width - 20), this.width + 20) / 2, - - circleColor = new fabric.Color(this.color) - .setAlpha(fabric.util.getRandomInt(0, 100) / 100) - .toRgba(); - - pointerPoint.radius = circleRadius; - pointerPoint.fill = circleColor; - - this.points.push(pointerPoint); - - return pointerPoint; - } -}); - - -/** - * SprayBrush class - * @class fabric.SprayBrush - */ -fabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ { - - /** - * Width of a spray - * @type Number - * @default - */ - width: 10, - - /** - * Density of a spray (number of dots per chunk) - * @type Number - * @default - */ - density: 20, - - /** - * Width of spray dots - * @type Number - * @default - */ - dotWidth: 1, - - /** - * Width variance of spray dots - * @type Number - * @default - */ - dotWidthVariance: 1, - - /** - * Whether opacity of a dot should be random - * @type Boolean - * @default - */ - randomOpacity: false, - - /** - * Whether overlapping dots (rectangles) should be removed (for performance reasons) - * @type Boolean - * @default - */ - optimizeOverlapping: true, - - /** - * Constructor - * @param {fabric.Canvas} canvas - * @return {fabric.SprayBrush} Instance of a spray brush - */ - initialize: function(canvas) { - this.canvas = canvas; - this.sprayChunks = [ ]; - }, - - /** - * Invoked on mouse down - * @param {Object} pointer - */ - onMouseDown: function(pointer) { - this.sprayChunks.length = 0; - this.canvas.clearContext(this.canvas.contextTop); - this._setShadow(); - - this.addSprayChunk(pointer); - this.render(); - }, - - /** - * Invoked on mouse move - * @param {Object} pointer - */ - onMouseMove: function(pointer) { - this.addSprayChunk(pointer); - this.render(); - }, - - /** - * Invoked on mouse up - */ - onMouseUp: function() { - var originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - - var rects = [ ]; - - for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) { - var sprayChunk = this.sprayChunks[i]; - - for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) { - - var rect = new fabric.Rect({ - width: sprayChunk[j].width, - height: sprayChunk[j].width, - left: sprayChunk[j].x + 1, - top: sprayChunk[j].y + 1, - originX: 'center', - originY: 'center', - fill: this.color - }); - - this.shadow && rect.setShadow(this.shadow); - rects.push(rect); - } - } - - if (this.optimizeOverlapping) { - rects = this._getOptimizedRects(rects); - } - - var group = new fabric.Group(rects, { originX: 'center', originY: 'center' }); - group.canvas = this.canvas; - - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.renderAll(); - }, - - /** - * @private - * @param {Array} rects - */ - _getOptimizedRects: function(rects) { - - // avoid creating duplicate rects at the same coordinates - var uniqueRects = { }, key; - - for (var i = 0, len = rects.length; i < len; i++) { - key = rects[i].left + '' + rects[i].top; - if (!uniqueRects[key]) { - uniqueRects[key] = rects[i]; - } - } - var uniqueRectsArray = [ ]; - for (key in uniqueRects) { - uniqueRectsArray.push(uniqueRects[key]); - } - - return uniqueRectsArray; - }, - - /** - * Renders brush - */ - render: function() { - var ctx = this.canvas.contextTop; - ctx.fillStyle = this.color; - - var v = this.canvas.viewportTransform; - ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); - - for (var i = 0, len = this.sprayChunkPoints.length; i < len; i++) { - var point = this.sprayChunkPoints[i]; - if (typeof point.opacity !== 'undefined') { - ctx.globalAlpha = point.opacity; - } - ctx.fillRect(point.x, point.y, point.width, point.width); - } - ctx.restore(); - }, - - /** - * @param {Object} pointer - */ - addSprayChunk: function(pointer) { - this.sprayChunkPoints = [ ]; - - var x, y, width, radius = this.width / 2; - - for (var i = 0; i < this.density; i++) { - - x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius); - y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius); - - if (this.dotWidthVariance) { - width = fabric.util.getRandomInt( - // bottom clamp width to 1 - Math.max(1, this.dotWidth - this.dotWidthVariance), - this.dotWidth + this.dotWidthVariance); - } - else { - width = this.dotWidth; - } - - var point = new fabric.Point(x, y); - point.width = width; - - if (this.randomOpacity) { - point.opacity = fabric.util.getRandomInt(0, 100) / 100; - } - - this.sprayChunkPoints.push(point); - } - - this.sprayChunks.push(this.sprayChunkPoints); - } -}); - - -/** - * PatternBrush class - * @class fabric.PatternBrush - * @extends fabric.BaseBrush - */ -fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ { - - getPatternSrc: function() { - - var dotWidth = 20, - dotDistance = 5, - patternCanvas = fabric.document.createElement('canvas'), - patternCtx = patternCanvas.getContext('2d'); - - patternCanvas.width = patternCanvas.height = dotWidth + dotDistance; - - patternCtx.fillStyle = this.color; - patternCtx.beginPath(); - patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false); - patternCtx.closePath(); - patternCtx.fill(); - - return patternCanvas; - }, - - getPatternSrcFunction: function() { - return String(this.getPatternSrc).replace('this.color', '"' + this.color + '"'); - }, - - /** - * Creates "pattern" instance property - */ - getPattern: function() { - return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat'); - }, - - /** - * Sets brush styles - */ - _setBrushStyles: function() { - this.callSuper('_setBrushStyles'); - this.canvas.contextTop.strokeStyle = this.getPattern(); - }, - - /** - * Creates path - */ - createPath: function(pathData) { - var path = this.callSuper('createPath', pathData); - path.stroke = new fabric.Pattern({ - source: this.source || this.getPatternSrcFunction() - }); - return path; - } -}); - - -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately - * @param {Object} [options] Options object - * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" - * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. - * @param {Number} [options.multiplier=1] Multiplier to scale by - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format - * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo} - * @example Generate jpeg dataURL with lower quality - * var dataURL = canvas.toDataURL({ - * format: 'jpeg', - * quality: 0.8 - * }); - * @example Generate cropped png dataURL (clipping of canvas) - * var dataURL = canvas.toDataURL({ - * format: 'png', - * left: 100, - * top: 100, - * width: 200, - * height: 200 - * }); - * @example Generate double scaled png dataURL - * var dataURL = canvas.toDataURL({ - * format: 'png', - * multiplier: 2 - * }); - */ - toDataURL: function (options) { - options || (options = { }); - - var format = options.format || 'png', - quality = options.quality || 1, - multiplier = options.multiplier || 1, - cropping = { - left: options.left, - top: options.top, - width: options.width, - height: options.height - }; - - if (multiplier !== 1) { - return this.__toDataURLWithMultiplier(format, quality, cropping, multiplier); - } - else { - return this.__toDataURL(format, quality, cropping); - } - }, - - /** - * @private - */ - __toDataURL: function(format, quality, cropping) { - - this.renderAll(true); - - var canvasEl = this.upperCanvasEl || this.lowerCanvasEl, - croppedCanvasEl = this.__getCroppedCanvas(canvasEl, cropping); - - // to avoid common confusion https://github.com/kangax/fabric.js/issues/806 - if (format === 'jpg') { - format = 'jpeg'; - } - - var data = (fabric.StaticCanvas.supports('toDataURLWithQuality')) - ? (croppedCanvasEl || canvasEl).toDataURL('image/' + format, quality) - : (croppedCanvasEl || canvasEl).toDataURL('image/' + format); - - this.contextTop && this.clearContext(this.contextTop); - this.renderAll(); - - if (croppedCanvasEl) { - croppedCanvasEl = null; - } - - return data; - }, - - /** - * @private - */ - __getCroppedCanvas: function(canvasEl, cropping) { - - var croppedCanvasEl, - croppedCtx, - shouldCrop = 'left' in cropping || - 'top' in cropping || - 'width' in cropping || - 'height' in cropping; - - if (shouldCrop) { - - croppedCanvasEl = fabric.util.createCanvasElement(); - croppedCtx = croppedCanvasEl.getContext('2d'); - - croppedCanvasEl.width = cropping.width || this.width; - croppedCanvasEl.height = cropping.height || this.height; - - croppedCtx.drawImage(canvasEl, -cropping.left || 0, -cropping.top || 0); - } - - return croppedCanvasEl; - }, - - /** - * @private - */ - __toDataURLWithMultiplier: function(format, quality, cropping, multiplier) { - - var origWidth = this.getWidth(), - origHeight = this.getHeight(), - scaledWidth = origWidth * multiplier, - scaledHeight = origHeight * multiplier, - activeObject = this.getActiveObject(), - activeGroup = this.getActiveGroup(), - - ctx = this.contextTop || this.contextContainer; - - if (multiplier > 1) { - this.setWidth(scaledWidth).setHeight(scaledHeight); - } - ctx.scale(multiplier, multiplier); - - if (cropping.left) { - cropping.left *= multiplier; - } - if (cropping.top) { - cropping.top *= multiplier; - } - if (cropping.width) { - cropping.width *= multiplier; - } - else if (multiplier < 1) { - cropping.width = scaledWidth; - } - if (cropping.height) { - cropping.height *= multiplier; - } - else if (multiplier < 1) { - cropping.height = scaledHeight; - } - - if (activeGroup) { - // not removing group due to complications with restoring it with correct state afterwords - this._tempRemoveBordersControlsFromGroup(activeGroup); - } - else if (activeObject && this.deactivateAll) { - this.deactivateAll(); - } - - this.renderAll(true); - - var data = this.__toDataURL(format, quality, cropping); - - // restoring width, height for `renderAll` to draw - // background properly (while context is scaled) - this.width = origWidth; - this.height = origHeight; - - ctx.scale(1 / multiplier, 1 / multiplier); - this.setWidth(origWidth).setHeight(origHeight); - - if (activeGroup) { - this._restoreBordersControlsOnGroup(activeGroup); - } - else if (activeObject && this.setActiveObject) { - this.setActiveObject(activeObject); - } - - this.contextTop && this.clearContext(this.contextTop); - this.renderAll(); - - return data; - }, - - /** - * Exports canvas element to a dataurl image (allowing to change image size via multiplier). - * @deprecated since 1.0.13 - * @param {String} format (png|jpeg) - * @param {Number} multiplier - * @param {Number} quality (0..1) - * @return {String} - */ - toDataURLWithMultiplier: function (format, multiplier, quality) { - return this.toDataURL({ - format: format, - multiplier: multiplier, - quality: quality - }); - }, - - /** - * @private - */ - _tempRemoveBordersControlsFromGroup: function(group) { - group.origHasControls = group.hasControls; - group.origBorderColor = group.borderColor; - - group.hasControls = true; - group.borderColor = 'rgba(0,0,0,0)'; - - group.forEachObject(function(o) { - o.origBorderColor = o.borderColor; - o.borderColor = 'rgba(0,0,0,0)'; - }); - }, - - /** - * @private - */ - _restoreBordersControlsOnGroup: function(group) { - group.hideControls = group.origHideControls; - group.borderColor = group.origBorderColor; - - group.forEachObject(function(o) { - o.borderColor = o.origBorderColor; - delete o.origBorderColor; - }); - } -}); - - -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Populates canvas with data from the specified dataless JSON. - * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON} - * @deprecated since 1.2.2 - * @param {String|Object} json JSON string or object - * @param {Function} callback Callback, invoked when json is parsed - * and corresponding objects (e.g: {@link fabric.Image}) - * are initialized - * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. - * @return {fabric.Canvas} instance - * @chainable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3/#deserialization} - */ - loadFromDatalessJSON: function (json, callback, reviver) { - return this.loadFromJSON(json, callback, reviver); - }, - - /** - * Populates canvas with data from the specified JSON. - * JSON format must conform to the one of {@link fabric.Canvas#toJSON} - * @param {String|Object} json JSON string or object - * @param {Function} callback Callback, invoked when json is parsed - * and corresponding objects (e.g: {@link fabric.Image}) - * are initialized - * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created. - * @return {fabric.Canvas} instance - * @chainable - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3/#deserialization} - * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo} - * @example loadFromJSON - * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas)); - * @example loadFromJSON with reviver - * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) { - * // `o` = json object - * // `object` = fabric.Object instance - * // ... do some stuff ... - * }); - */ - loadFromJSON: function (json, callback, reviver) { - if (!json) { - return; - } - - // serialize if it wasn't already - var serialized = (typeof json === 'string') - ? JSON.parse(json) - : json; - - this.clear(); - - var _this = this; - this._enlivenObjects(serialized.objects, function () { - _this._setBgOverlay(serialized, callback); - }, reviver); - - return this; - }, - - /** - * @private - * @param {Object} serialized Object with background and overlay information - * @param {Function} callback Invoked after all background and overlay images/patterns loaded - */ - _setBgOverlay: function(serialized, callback) { - var _this = this, - loaded = { - backgroundColor: false, - overlayColor: false, - backgroundImage: false, - overlayImage: false - }; - - if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) { - callback && callback(); - return; - } - - var cbIfLoaded = function () { - if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) { - _this.renderAll(); - callback && callback(); - } - }; - - this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded); - this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded); - this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded); - this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded); - - cbIfLoaded(); - }, - - /** - * @private - * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor) - * @param {(Object|String)} value Value to set - * @param {Object} loaded Set loaded property to true if property is set - * @param {Object} callback Callback function to invoke after property is set - */ - __setBgOverlay: function(property, value, loaded, callback) { - var _this = this; - - if (!value) { - loaded[property] = true; - return; - } - - if (property === 'backgroundImage' || property === 'overlayImage') { - fabric.Image.fromObject(value, function(img) { - _this[property] = img; - loaded[property] = true; - callback && callback(); - }); - } - else { - this['set' + fabric.util.string.capitalize(property, true)](value, function() { - loaded[property] = true; - callback && callback(); - }); - } - }, - - /** - * @private - * @param {Array} objects - * @param {Function} callback - * @param {Function} [reviver] - */ - _enlivenObjects: function (objects, callback, reviver) { - var _this = this; - - if (!objects || objects.length === 0) { - callback && callback(); - return; - } - - var renderOnAddRemove = this.renderOnAddRemove; - this.renderOnAddRemove = false; - - fabric.util.enlivenObjects(objects, function(enlivenedObjects) { - enlivenedObjects.forEach(function(obj, index) { - _this.insertAt(obj, index, true); - }); - - _this.renderOnAddRemove = renderOnAddRemove; - callback && callback(); - }, null, reviver); - }, - - /** - * @private - * @param {String} format - * @param {Function} callback - */ - _toDataURL: function (format, callback) { - this.clone(function (clone) { - callback(clone.toDataURL(format)); - }); - }, - - /** - * @private - * @param {String} format - * @param {Number} multiplier - * @param {Function} callback - */ - _toDataURLWithMultiplier: function (format, multiplier, callback) { - this.clone(function (clone) { - callback(clone.toDataURLWithMultiplier(format, multiplier)); - }); - }, - - /** - * Clones canvas instance - * @param {Object} [callback] Receives cloned instance as a first argument - * @param {Array} [properties] Array of properties to include in the cloned canvas and children - */ - clone: function (callback, properties) { - var data = JSON.stringify(this.toJSON(properties)); - this.cloneWithoutData(function(clone) { - clone.loadFromJSON(data, function() { - callback && callback(clone); - }); - }); - }, - - /** - * Clones canvas instance without cloning existing data. - * This essentially copies canvas dimensions, clipping properties, etc. - * but leaves data empty (so that you can populate it with your own) - * @param {Object} [callback] Receives cloned instance as a first argument - */ - cloneWithoutData: function(callback) { - var el = fabric.document.createElement('canvas'); - - el.width = this.getWidth(); - el.height = this.getHeight(); - - var clone = new fabric.Canvas(el); - clone.clipTo = this.clipTo; - if (this.backgroundImage) { - clone.setBackgroundImage(this.backgroundImage.src, function() { - clone.renderAll(); - callback && callback(clone); - }); - clone.backgroundImageOpacity = this.backgroundImageOpacity; - clone.backgroundImageStretch = this.backgroundImageStretch; - } - else { - callback && callback(clone); - } - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - toFixed = fabric.util.toFixed, - capitalize = fabric.util.string.capitalize, - degreesToRadians = fabric.util.degreesToRadians, - supportsLineDash = fabric.StaticCanvas.supports('setLineDash'); - - if (fabric.Object) { - return; - } - - /** - * Root object class from which all 2d shape classes inherit from - * @class fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1/#objects} - * @see {@link fabric.Object#initialize} for constructor definition - * - * @fires added - * @fires removed - * - * @fires selected - * @fires modified - * @fires rotating - * @fires scaling - * @fires moving - * - * @fires mousedown - * @fires mouseup - */ - fabric.Object = fabric.util.createClass(/** @lends fabric.Object.prototype */ { - - /** - * Retrieves object's {@link fabric.Object#clipTo|clipping function} - * @method getClipTo - * @memberOf fabric.Object.prototype - * @return {Function} - */ - - /** - * Sets object's {@link fabric.Object#clipTo|clipping function} - * @method setClipTo - * @memberOf fabric.Object.prototype - * @param {Function} clipTo Clipping function - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#transformMatrix|transformMatrix} - * @method getTransformMatrix - * @memberOf fabric.Object.prototype - * @return {Array} transformMatrix - */ - - /** - * Sets object's {@link fabric.Object#transformMatrix|transformMatrix} - * @method setTransformMatrix - * @memberOf fabric.Object.prototype - * @param {Array} transformMatrix - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#visible|visible} state - * @method getVisible - * @memberOf fabric.Object.prototype - * @return {Boolean} True if visible - */ - - /** - * Sets object's {@link fabric.Object#visible|visible} state - * @method setVisible - * @memberOf fabric.Object.prototype - * @param {Boolean} value visible value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#shadow|shadow} - * @method getShadow - * @memberOf fabric.Object.prototype - * @return {Object} Shadow instance - */ - - /** - * Retrieves object's {@link fabric.Object#stroke|stroke} - * @method getStroke - * @memberOf fabric.Object.prototype - * @return {String} stroke value - */ - - /** - * Sets object's {@link fabric.Object#stroke|stroke} - * @method setStroke - * @memberOf fabric.Object.prototype - * @param {String} value stroke value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#strokeWidth|strokeWidth} - * @method getStrokeWidth - * @memberOf fabric.Object.prototype - * @return {Number} strokeWidth value - */ - - /** - * Sets object's {@link fabric.Object#strokeWidth|strokeWidth} - * @method setStrokeWidth - * @memberOf fabric.Object.prototype - * @param {Number} value strokeWidth value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#originX|originX} - * @method getOriginX - * @memberOf fabric.Object.prototype - * @return {String} originX value - */ - - /** - * Sets object's {@link fabric.Object#originX|originX} - * @method setOriginX - * @memberOf fabric.Object.prototype - * @param {String} value originX value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#originY|originY} - * @method getOriginY - * @memberOf fabric.Object.prototype - * @return {String} originY value - */ - - /** - * Sets object's {@link fabric.Object#originY|originY} - * @method setOriginY - * @memberOf fabric.Object.prototype - * @param {String} value originY value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#fill|fill} - * @method getFill - * @memberOf fabric.Object.prototype - * @return {String} Fill value - */ - - /** - * Sets object's {@link fabric.Object#fill|fill} - * @method setFill - * @memberOf fabric.Object.prototype - * @param {String} value Fill value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#opacity|opacity} - * @method getOpacity - * @memberOf fabric.Object.prototype - * @return {Number} Opacity value (0-1) - */ - - /** - * Sets object's {@link fabric.Object#opacity|opacity} - * @method setOpacity - * @memberOf fabric.Object.prototype - * @param {Number} value Opacity value (0-1) - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#angle|angle} (in degrees) - * @method getAngle - * @memberOf fabric.Object.prototype - * @return {Number} - */ - - /** - * Sets object's {@link fabric.Object#angle|angle} - * @method setAngle - * @memberOf fabric.Object.prototype - * @param {Number} value Angle value (in degrees) - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#top|top position} - * @method getTop - * @memberOf fabric.Object.prototype - * @return {Number} Top value (in pixels) - */ - - /** - * Sets object's {@link fabric.Object#top|top position} - * @method setTop - * @memberOf fabric.Object.prototype - * @param {Number} value Top value (in pixels) - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#left|left position} - * @method getLeft - * @memberOf fabric.Object.prototype - * @return {Number} Left value (in pixels) - */ - - /** - * Sets object's {@link fabric.Object#left|left position} - * @method setLeft - * @memberOf fabric.Object.prototype - * @param {Number} value Left value (in pixels) - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#scaleX|scaleX} value - * @method getScaleX - * @memberOf fabric.Object.prototype - * @return {Number} scaleX value - */ - - /** - * Sets object's {@link fabric.Object#scaleX|scaleX} value - * @method setScaleX - * @memberOf fabric.Object.prototype - * @param {Number} value scaleX value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#scaleY|scaleY} value - * @method getScaleY - * @memberOf fabric.Object.prototype - * @return {Number} scaleY value - */ - - /** - * Sets object's {@link fabric.Object#scaleY|scaleY} value - * @method setScaleY - * @memberOf fabric.Object.prototype - * @param {Number} value scaleY value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#flipX|flipX} value - * @method getFlipX - * @memberOf fabric.Object.prototype - * @return {Boolean} flipX value - */ - - /** - * Sets object's {@link fabric.Object#flipX|flipX} value - * @method setFlipX - * @memberOf fabric.Object.prototype - * @param {Boolean} value flipX value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Retrieves object's {@link fabric.Object#flipY|flipY} value - * @method getFlipY - * @memberOf fabric.Object.prototype - * @return {Boolean} flipY value - */ - - /** - * Sets object's {@link fabric.Object#flipY|flipY} value - * @method setFlipY - * @memberOf fabric.Object.prototype - * @param {Boolean} value flipY value - * @return {fabric.Object} thisArg - * @chainable - */ - - /** - * Type of an object (rect, circle, path, etc.) - * @type String - * @default - */ - type: 'object', - - /** - * Horizontal origin of transformation of an object (one of "left", "right", "center") - * @type String - * @default - */ - originX: 'left', - - /** - * Vertical origin of transformation of an object (one of "top", "bottom", "center") - * @type String - * @default - */ - originY: 'top', - - /** - * Top position of an object. Note that by default it's relative to object center. You can change this by setting originY={top/center/bottom} - * @type Number - * @default - */ - top: 0, - - /** - * Left position of an object. Note that by default it's relative to object center. You can change this by setting originX={left/center/right} - * @type Number - * @default - */ - left: 0, - - /** - * Object width - * @type Number - * @default - */ - width: 0, - - /** - * Object height - * @type Number - * @default - */ - height: 0, - - /** - * Object scale factor (horizontal) - * @type Number - * @default - */ - scaleX: 1, - - /** - * Object scale factor (vertical) - * @type Number - * @default - */ - scaleY: 1, - - /** - * When true, an object is rendered as flipped horizontally - * @type Boolean - * @default - */ - flipX: false, - - /** - * When true, an object is rendered as flipped vertically - * @type Boolean - * @default - */ - flipY: false, - - /** - * Opacity of an object - * @type Number - * @default - */ - opacity: 1, - - /** - * Angle of rotation of an object (in degrees) - * @type Number - * @default - */ - angle: 0, - - /** - * Size of object's controlling corners (in pixels) - * @type Number - * @default - */ - cornerSize: 12, - - /** - * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill) - * @type Boolean - * @default - */ - transparentCorners: true, - - /** - * Default cursor value used when hovering over this object on canvas - * @type String - * @default - */ - hoverCursor: null, - - /** - * Padding between object and its controlling borders (in pixels) - * @type Number - * @default - */ - padding: 0, - - /** - * Color of controlling borders of an object (when it's active) - * @type String - * @default - */ - borderColor: 'rgba(102,153,255,0.75)', - - /** - * Color of controlling corners of an object (when it's active) - * @type String - * @default - */ - cornerColor: 'rgba(102,153,255,0.5)', - - /** - * When true, this object will use center point as the origin of transformation - * when being scaled via the controls. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredScaling: false, - - /** - * When true, this object will use center point as the origin of transformation - * when being rotated via the controls. - * Backwards incompatibility note: This property replaces "centerTransform" (Boolean). - * @since 1.3.4 - * @type Boolean - * @default - */ - centeredRotation: true, - - /** - * Color of object's fill - * @type String - * @default - */ - fill: 'rgb(0,0,0)', - - /** - * Fill rule used to fill an object - * @type String - * @default - */ - fillRule: 'source-over', - - /** - * Background color of an object. Only works with text objects at the moment. - * @type String - * @default - */ - backgroundColor: '', - - /** - * When defined, an object is rendered via stroke and this property specifies its color - * @type String - * @default - */ - stroke: null, - - /** - * Width of a stroke used to render this object - * @type Number - * @default - */ - strokeWidth: 1, - - /** - * Array specifying dash pattern of an object's stroke (stroke must be defined) - * @type Array - */ - strokeDashArray: null, - - /** - * Line endings style of an object's stroke (one of "butt", "round", "square") - * @type String - * @default - */ - strokeLineCap: 'butt', - - /** - * Corner style of an object's stroke (one of "bevil", "round", "miter") - * @type String - * @default - */ - strokeLineJoin: 'miter', - - /** - * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke - * @type Number - * @default - */ - strokeMiterLimit: 10, - - /** - * Shadow object representing shadow of this shape - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * Opacity of object's controlling borders when object is active and moving - * @type Number - * @default - */ - borderOpacityWhenMoving: 0.4, - - /** - * Scale factor of object's controlling borders - * @type Number - * @default - */ - borderScaleFactor: 1, - - /** - * Transform matrix (similar to SVG's transform matrix) - * @type Array - */ - transformMatrix: null, - - /** - * Minimum allowed scale value of an object - * @type Number - * @default - */ - minScaleLimit: 0.01, - - /** - * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection). - * But events still fire on it. - * @type Boolean - * @default - */ - selectable: true, - - /** - * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4 - * @type Boolean - * @default - */ - evented: true, - - /** - * When set to `false`, an object is not rendered on canvas - * @type Boolean - * @default - */ - visible: true, - - /** - * When set to `false`, object's controls are not displayed and can not be used to manipulate object - * @type Boolean - * @default - */ - hasControls: true, - - /** - * When set to `false`, object's controlling borders are not rendered - * @type Boolean - * @default - */ - hasBorders: true, - - /** - * When set to `false`, object's controlling rotating point will not be visible or selectable - * @type Boolean - * @default - */ - hasRotatingPoint: true, - - /** - * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`) - * @type Number - * @default - */ - rotatingPointOffset: 40, - - /** - * When set to `true`, objects are "found" on canvas on per-pixel basis rather than according to bounding box - * @type Boolean - * @default - */ - perPixelTargetFind: false, - - /** - * When `false`, default object's values are not included in its serialization - * @type Boolean - * @default - */ - includeDefaultValues: true, - - /** - * Function that determines clipping of an object (context is passed as a first argument) - * Note that context origin is at the object's center point (not left/top corner) - * @type Function - */ - clipTo: null, - - /** - * When `true`, object horizontal movement is locked - * @type Boolean - * @default - */ - lockMovementX: false, - - /** - * When `true`, object vertical movement is locked - * @type Boolean - * @default - */ - lockMovementY: false, - - /** - * When `true`, object rotation is locked - * @type Boolean - * @default - */ - lockRotation: false, - - /** - * When `true`, object horizontal scaling is locked - * @type Boolean - * @default - */ - lockScalingX: false, - - /** - * When `true`, object vertical scaling is locked - * @type Boolean - * @default - */ - lockScalingY: false, - - /** - * When `true`, object non-uniform scaling is locked - * @type Boolean - * @default - */ - lockUniScaling: false, - - /** - * When `true`, object cannot be flipped by scaling into negative values - * @type Boolean - * @default - */ - - lockScalingFlip: false, - /** - * List of properties to consider when checking if state - * of an object is changed (fabric.Object#hasStateChanged) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: ( - 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' + - 'stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit ' + - 'angle opacity fill fillRule shadow clipTo visible backgroundColor' - ).split(' '), - - /** - * Constructor - * @param {Object} [options] Options object - */ - initialize: function(options) { - if (options) { - this.setOptions(options); - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initGradient: function(options) { - if (options.fill && options.fill.colorStops && !(options.fill instanceof fabric.Gradient)) { - this.set('fill', new fabric.Gradient(options.fill)); - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initPattern: function(options) { - if (options.fill && options.fill.source && !(options.fill instanceof fabric.Pattern)) { - this.set('fill', new fabric.Pattern(options.fill)); - } - if (options.stroke && options.stroke.source && !(options.stroke instanceof fabric.Pattern)) { - this.set('stroke', new fabric.Pattern(options.stroke)); - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initClipping: function(options) { - if (!options.clipTo || typeof options.clipTo !== 'string') { - return; - } - - var functionBody = fabric.util.getFunctionBody(options.clipTo); - if (typeof functionBody !== 'undefined') { - this.clipTo = new Function('ctx', functionBody); - } - }, - - /** - * Sets object's properties from options - * @param {Object} [options] Options object - */ - setOptions: function(options) { - for (var prop in options) { - this.set(prop, options[prop]); - } - this._initGradient(options); - this._initPattern(options); - this._initClipping(options); - }, - - /** - * Transforms context when rendering an object - * @param {CanvasRenderingContext2D} ctx Context - * @param {Boolean} fromLeft When true, context is transformed to object's top/left corner. This is used when rendering text on Node - */ - transform: function(ctx, fromLeft) { - if (this.group) { - this.group.transform(ctx, fromLeft); - } - ctx.globalAlpha = this.opacity; - - var center = fromLeft ? this._getLeftTopCoords() : this.getCenterPoint(); - ctx.translate(center.x, center.y); - ctx.rotate(degreesToRadians(this.angle)); - ctx.scale( - this.scaleX * (this.flipX ? -1 : 1), - this.scaleY * (this.flipY ? -1 : 1) - ); - }, - - /** - * Returns an object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, - - object = { - type: this.type, - originX: this.originX, - originY: this.originY, - left: toFixed(this.left, NUM_FRACTION_DIGITS), - top: toFixed(this.top, NUM_FRACTION_DIGITS), - width: toFixed(this.width, NUM_FRACTION_DIGITS), - height: toFixed(this.height, NUM_FRACTION_DIGITS), - fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill, - stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke, - strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS), - strokeDashArray: this.strokeDashArray, - strokeLineCap: this.strokeLineCap, - strokeLineJoin: this.strokeLineJoin, - strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS), - scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS), - scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS), - angle: toFixed(this.getAngle(), NUM_FRACTION_DIGITS), - flipX: this.flipX, - flipY: this.flipY, - opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS), - shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow, - visible: this.visible, - clipTo: this.clipTo && String(this.clipTo), - backgroundColor: this.backgroundColor - }; - - if (!this.includeDefaultValues) { - object = this._removeDefaultValues(object); - } - - fabric.util.populateWithProperties(this, object, propertiesToInclude); - - return object; - }, - - /** - * Returns (dataless) object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - // will be overwritten by subclasses - return this.toObject(propertiesToInclude); - }, - - /** - * @private - * @param {Object} object - */ - _removeDefaultValues: function(object) { - var prototype = fabric.util.getKlass(object.type).prototype, - stateProperties = prototype.stateProperties; - - stateProperties.forEach(function(prop) { - if (object[prop] === prototype[prop]) { - delete object[prop]; - } - }); - - return object; - }, - - /** - * Returns a string representation of an instance - * @return {String} - */ - toString: function() { - return '#'; - }, - - /** - * Basic getter - * @param {String} property Property name - * @return {Any} value of a property - */ - get: function(property) { - return this[property]; - }, - - /** - * @private - */ - _setObject: function(obj) { - for (var prop in obj) { - this._set(prop, obj[prop]); - } - }, - - /** - * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`. - * @param {String|Object} key Property name or object (if object, iterate over the object properties) - * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one) - * @return {fabric.Object} thisArg - * @chainable - */ - set: function(key, value) { - if (typeof key === 'object') { - this._setObject(key); - } - else { - if (typeof value === 'function' && key !== 'clipTo') { - this._set(key, value(this.get(key))); - } - else { - this._set(key, value); - } - } - return this; - }, - - /** - * @private - * @param {String} key - * @param {Any} value - * @return {fabric.Object} thisArg - */ - _set: function(key, value) { - var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'); - - if (shouldConstrainValue) { - value = this._constrainScale(value); - } - if (key === 'scaleX' && value < 0) { - this.flipX = !this.flipX; - value *= -1; - } - else if (key === 'scaleY' && value < 0) { - this.flipY = !this.flipY; - value *= -1; - } - else if (key === 'width' || key === 'height') { - this.minScaleLimit = toFixed(Math.min(0.1, 1/Math.max(this.width, this.height)), 2); - } - else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) { - value = new fabric.Shadow(value); - } - - this[key] = value; - - return this; - }, - - /** - * Toggles specified property from `true` to `false` or from `false` to `true` - * @param {String} property Property to toggle - * @return {fabric.Object} thisArg - * @chainable - */ - toggle: function(property) { - var value = this.get(property); - if (typeof value === 'boolean') { - this.set(property, !value); - } - return this; - }, - - /** - * Sets sourcePath of an object - * @param {String} value Value to set sourcePath to - * @return {fabric.Object} thisArg - * @chainable - */ - setSourcePath: function(value) { - this.sourcePath = value; - return this; - }, - - /** - * Retrieves viewportTransform from Object's canvas if possible - * @method getViewportTransform - * @memberOf fabric.Object.prototype - * @return {Boolean} flipY value // TODO - */ - getViewportTransform: function() { - if (this.canvas && this.canvas.viewportTransform) { - return this.canvas.viewportTransform; - } - return [1, 0, 0, 1, 0, 0]; - }, - - /** - * Renders an object on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - render: function(ctx, noTransform) { - // do not render if width/height are zeros or object is not visible - if (this.width === 0 || this.height === 0 || !this.visible) { - return; - } - - ctx.save(); - - //setup fill rule for current object - this._setupFillRule(ctx); - - this._transform(ctx, noTransform); - this._setStrokeStyles(ctx); - this._setFillStyles(ctx); - - if (this.group && this.group.type === 'path-group') { - ctx.translate(-this.group.width/2, -this.group.height/2); - var m = this.transformMatrix; - if (m) { - ctx.transform.apply(ctx, m); - } - } - ctx.globalAlpha = this.group ? (ctx.globalAlpha * this.opacity) : this.opacity; - this._setShadow(ctx); - this.clipTo && fabric.util.clipContext(this, ctx); - this._render(ctx, noTransform); - this.clipTo && ctx.restore(); - this._removeShadow(ctx); - this._restoreFillRule(ctx); - - ctx.restore(); - }, - - _transform: function(ctx, noTransform) { - var m = this.transformMatrix; - - if (m && !this.group) { - ctx.setTransform.apply(ctx, m); - } - if (!noTransform) { - this.transform(ctx); - } - }, - - _setStrokeStyles: function(ctx) { - if (this.stroke) { - ctx.lineWidth = this.strokeWidth; - ctx.lineCap = this.strokeLineCap; - ctx.lineJoin = this.strokeLineJoin; - ctx.miterLimit = this.strokeMiterLimit; - ctx.strokeStyle = this.stroke.toLive - ? this.stroke.toLive(ctx) - : this.stroke; - } - }, - - _setFillStyles: function(ctx) { - if (this.fill) { - ctx.fillStyle = this.fill.toLive - ? this.fill.toLive(ctx) - : this.fill; - } - }, - - /** - * Renders controls and borders for the object - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - _renderControls: function(ctx, noTransform) { - var vpt = this.getViewportTransform(); - - ctx.save(); - if (this.active && !noTransform) { - var center; - if (this.group) { - center = fabric.util.transformPoint(this.group.getCenterPoint(), vpt); - ctx.translate(center.x, center.y); - ctx.rotate(degreesToRadians(this.group.angle)); - } - center = fabric.util.transformPoint(this.getCenterPoint(), vpt, null != this.group); - if (this.group) { - center.x *= this.group.scaleX; - center.y *= this.group.scaleY; - } - ctx.translate(center.x, center.y); - ctx.rotate(degreesToRadians(this.angle)); - this.drawBorders(ctx); - this.drawControls(ctx); - } - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _setShadow: function(ctx) { - if (!this.shadow) { - return; - } - - ctx.shadowColor = this.shadow.color; - ctx.shadowBlur = this.shadow.blur; - ctx.shadowOffsetX = this.shadow.offsetX; - ctx.shadowOffsetY = this.shadow.offsetY; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _removeShadow: function(ctx) { - if (!this.shadow) { - return; - } - - ctx.shadowColor = ''; - ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderFill: function(ctx) { - if (!this.fill) { - return; - } - - ctx.save(); - if (this.fill.toLive) { - ctx.translate( - -this.width / 2 + this.fill.offsetX || 0, - -this.height / 2 + this.fill.offsetY || 0); - } - if (this.fill.gradientTransform) { - var g = this.fill.gradientTransform; - ctx.transform.apply(ctx, g); - } - if (this.fillRule === 'destination-over') { - ctx.fill('evenodd'); - } - else { - ctx.fill(); - } - ctx.restore(); - if (this.shadow && !this.shadow.affectStroke) { - this._removeShadow(ctx); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderStroke: function(ctx) { - if (!this.stroke || this.strokeWidth === 0) { - return; - } - - ctx.save(); - if (this.strokeDashArray) { - // Spec requires the concatenation of two copies the dash list when the number of elements is odd - if (1 & this.strokeDashArray.length) { - this.strokeDashArray.push.apply(this.strokeDashArray, this.strokeDashArray); - } - - if (supportsLineDash) { - ctx.setLineDash(this.strokeDashArray); - this._stroke && this._stroke(ctx); - } - else { - this._renderDashedStroke && this._renderDashedStroke(ctx); - } - ctx.stroke(); - } - else { - if (this.stroke.gradientTransform) { - var g = this.stroke.gradientTransform; - ctx.transform.apply(ctx, g); - } - this._stroke ? this._stroke(ctx) : ctx.stroke(); - } - this._removeShadow(ctx); - ctx.restore(); - }, - - /** - * Clones an instance - * @param {Function} callback Callback is invoked with a clone as a first argument - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {fabric.Object} clone of an instance - */ - clone: function(callback, propertiesToInclude) { - if (this.constructor.fromObject) { - return this.constructor.fromObject(this.toObject(propertiesToInclude), callback); - } - return new fabric.Object(this.toObject(propertiesToInclude)); - }, - - /** - * Creates an instance of fabric.Image out of an object - * @param {Function} callback callback, invoked with an instance as a first argument - * @return {fabric.Object} thisArg - */ - cloneAsImage: function(callback) { - var dataUrl = this.toDataURL(); - fabric.util.loadImage(dataUrl, function(img) { - if (callback) { - callback(new fabric.Image(img)); - } - }); - return this; - }, - - /** - * Converts an object into a data-url-like string - * @param {Object} options Options object - * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png" - * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg. - * @param {Number} [options.multiplier=1] Multiplier to scale by - * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14 - * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14 - * @param {Number} [options.width] Cropping width. Introduced in v1.2.14 - * @param {Number} [options.height] Cropping height. Introduced in v1.2.14 - * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format - */ - toDataURL: function(options) { - options || (options = { }); - - var el = fabric.util.createCanvasElement(), - boundingRect = this.getBoundingRect(); - - el.width = boundingRect.width; - el.height = boundingRect.height; - - fabric.util.wrapElement(el, 'div'); - var canvas = new fabric.Canvas(el); - - // to avoid common confusion https://github.com/kangax/fabric.js/issues/806 - if (options.format === 'jpg') { - options.format = 'jpeg'; - } - - if (options.format === 'jpeg') { - canvas.backgroundColor = '#fff'; - } - - var origParams = { - active: this.get('active'), - left: this.getLeft(), - top: this.getTop() - }; - - this.set('active', false); - this.setPositionByOrigin(new fabric.Point(el.width / 2, el.height / 2), 'center', 'center'); - - var originalCanvas = this.canvas; - canvas.add(this); - var data = canvas.toDataURL(options); - - this.set(origParams).setCoords(); - this.canvas = originalCanvas; - - canvas.dispose(); - canvas = null; - - return data; - }, - - /** - * Returns true if specified type is identical to the type of an instance - * @param {String} type Type to check against - * @return {Boolean} - */ - isType: function(type) { - return this.type === type; - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return 0; - }, - - /** - * Returns a JSON representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} JSON - */ - toJSON: function(propertiesToInclude) { - // delegate, not alias - return this.toObject(propertiesToInclude); - }, - - /** - * Sets gradient (fill or stroke) of an object - * Backwards incompatibility note: This method was named "setGradientFill" until v1.1.0 - * @param {String} property Property name 'stroke' or 'fill' - * @param {Object} [options] Options object - * @param {String} [options.type] Type of gradient 'radial' or 'linear' - * @param {Number} [options.x1=0] x-coordinate of start point - * @param {Number} [options.y1=0] y-coordinate of start point - * @param {Number} [options.x2=0] x-coordinate of end point - * @param {Number} [options.y2=0] y-coordinate of end point - * @param {Number} [options.r1=0] Radius of start point (only for radial gradients) - * @param {Number} [options.r2=0] Radius of end point (only for radial gradients) - * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'} - * @return {fabric.Object} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo} - * @example Set linear gradient - * object.setGradient('fill', { - * type: 'linear', - * x1: -object.width / 2, - * y1: 0, - * x2: object.width / 2, - * y2: 0, - * colorStops: { - * 0: 'red', - * 0.5: '#005555', - * 1: 'rgba(0,0,255,0.5)' - * } - * }); - * canvas.renderAll(); - * @example Set radial gradient - * object.setGradient('fill', { - * type: 'radial', - * x1: 0, - * y1: 0, - * x2: 0, - * y2: 0, - * r1: object.width / 2, - * r2: 10, - * colorStops: { - * 0: 'red', - * 0.5: '#005555', - * 1: 'rgba(0,0,255,0.5)' - * } - * }); - * canvas.renderAll(); - */ - setGradient: function(property, options) { - options || (options = { }); - - var gradient = { colorStops: [] }; - - gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear'); - gradient.coords = { - x1: options.x1, - y1: options.y1, - x2: options.x2, - y2: options.y2 - }; - - if (options.r1 || options.r2) { - gradient.coords.r1 = options.r1; - gradient.coords.r2 = options.r2; - } - - for (var position in options.colorStops) { - var color = new fabric.Color(options.colorStops[position]); - gradient.colorStops.push({ - offset: position, - color: color.toRgb(), - opacity: color.getAlpha() - }); - } - - return this.set(property, fabric.Gradient.forObject(this, gradient)); - }, - - /** - * Sets pattern fill of an object - * @param {Object} options Options object - * @param {(String|HTMLImageElement)} options.source Pattern source - * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat) - * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner - * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner - * @return {fabric.Object} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo} - * @example Set pattern - * fabric.util.loadImage('http://fabricjs.com/assets/escheresque_ste.png', function(img) { - * object.setPatternFill({ - * source: img, - * repeat: 'repeat' - * }); - * canvas.renderAll(); - * }); - */ - setPatternFill: function(options) { - return this.set('fill', new fabric.Pattern(options)); - }, - - /** - * Sets {@link fabric.Object#shadow|shadow} of an object - * @param {Object|String} [options] Options object or string (e.g. "2px 2px 10px rgba(0,0,0,0.2)") - * @param {String} [options.color=rgb(0,0,0)] Shadow color - * @param {Number} [options.blur=0] Shadow blur - * @param {Number} [options.offsetX=0] Shadow horizontal offset - * @param {Number} [options.offsetY=0] Shadow vertical offset - * @return {fabric.Object} thisArg - * @chainable - * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo} - * @example Set shadow with string notation - * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)'); - * canvas.renderAll(); - * @example Set shadow with object notation - * object.setShadow({ - * color: 'red', - * blur: 10, - * offsetX: 20, - * offsetY: 20 - * }); - * canvas.renderAll(); - */ - setShadow: function(options) { - return this.set('shadow', options ? new fabric.Shadow(options) : null); - }, - - /** - * Sets "color" of an instance (alias of `set('fill', …)`) - * @param {String} color Color value - * @return {fabric.Object} thisArg - * @chainable - */ - setColor: function(color) { - this.set('fill', color); - return this; - }, - - /** - * Sets "angle" of an instance - * @param {Number} angle Angle value - * @return {fabric.Object} thisArg - * @chainable - */ - setAngle: function(angle) { - var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation; - - if (shouldCenterOrigin) { - this._setOriginToCenter(); - } - - this.set('angle', angle); - - if (shouldCenterOrigin) { - this._resetOrigin(); - } - - return this; - }, - - /** - * Centers object horizontally on canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - centerH: function () { - this.canvas.centerObjectH(this); - return this; - }, - - /** - * Centers object vertically on canvas to which it was added last. - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - centerV: function () { - this.canvas.centerObjectV(this); - return this; - }, - - /** - * Centers object vertically and horizontally on canvas to which is was added last - * You might need to call `setCoords` on an object after centering, to update controls area. - * @return {fabric.Object} thisArg - * @chainable - */ - center: function () { - this.canvas.centerObject(this); - return this; - }, - - /** - * Removes object from canvas to which it was added last - * @return {fabric.Object} thisArg - * @chainable - */ - remove: function() { - this.canvas.remove(this); - return this; - }, - - /** - * Returns coordinates of a pointer relative to an object - * @param {Event} e Event to operate upon - * @param {Object} [pointer] Pointer to operate upon (instead of event) - * @return {Object} Coordinates of a pointer (x, y) - */ - getLocalPointer: function(e, pointer) { - pointer = pointer || this.canvas.getPointer(e); - var objectLeftTop = this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top'); - return { - x: pointer.x - objectLeftTop.x, - y: pointer.y - objectLeftTop.y - }; - }, - - /** - * Sets canvas globalCompositeOperation for specific object - * custom composition operation for the particular object can be specifed using fillRule property - * @param {CanvasRenderingContext2D} ctx Rendering canvas context - */ - _setupFillRule: function (ctx) { - if (this.fillRule) { - this._prevFillRule = ctx.globalCompositeOperation; - ctx.globalCompositeOperation = this.fillRule; - } - }, - - /** - * Restores previously saved canvas globalCompositeOperation after obeject rendering - * @param {CanvasRenderingContext2D} ctx Rendering canvas context - */ - _restoreFillRule: function (ctx) { - if (this.fillRule && this._prevFillRule) { - ctx.globalCompositeOperation = this._prevFillRule; - } - } - }); - - fabric.util.createAccessors(fabric.Object); - - /** - * Alias for {@link fabric.Object.prototype.setAngle} - * @alias rotate -> setAngle - * @memberof fabric.Object - */ - fabric.Object.prototype.rotate = fabric.Object.prototype.setAngle; - - extend(fabric.Object.prototype, fabric.Observable); - - /** - * Defines the number of fraction digits to use when serializing object values. - * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc. - * @static - * @memberof fabric.Object - * @constant - * @type Number - */ - fabric.Object.NUM_FRACTION_DIGITS = 2; - - /** - * Unique id used internally when creating SVG elements - * @static - * @memberof fabric.Object - * @type Number - */ - fabric.Object.__uid = 0; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function() { - - var degreesToRadians = fabric.util.degreesToRadians; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Translates the coordinates from origin to center coordinates (based on the object's dimensions) - * @param {fabric.Point} point The point which corresponds to the originX and originY params - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - translateToCenterPoint: function(point, originX, originY) { - var cx = point.x, - cy = point.y, - strokeWidth = this.stroke ? this.strokeWidth : 0; - - if (originX === 'left') { - cx = point.x + (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - else if (originX === 'right') { - cx = point.x - (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - - if (originY === 'top') { - cy = point.y + (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - else if (originY === 'bottom') { - cy = point.y - (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - - // Apply the reverse rotation to the point (it's already scaled properly) - return fabric.util.rotatePoint(new fabric.Point(cx, cy), point, degreesToRadians(this.angle)); - }, - - /** - * Translates the coordinates from center to origin coordinates (based on the object's dimensions) - * @param {fabric.Point} center The point which corresponds to center of the object - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - translateToOriginPoint: function(center, originX, originY) { - var x = center.x, - y = center.y, - strokeWidth = this.stroke ? this.strokeWidth : 0; - - // Get the point coordinates - if (originX === 'left') { - x = center.x - (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - else if (originX === 'right') { - x = center.x + (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - if (originY === 'top') { - y = center.y - (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - else if (originY === 'bottom') { - y = center.y + (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - - // Apply the rotation to the point (it's already scaled properly) - return fabric.util.rotatePoint(new fabric.Point(x, y), center, degreesToRadians(this.angle)); - }, - - /** - * Returns the real center coordinates of the object - * @return {fabric.Point} - */ - getCenterPoint: function() { - var leftTop = new fabric.Point(this.left, this.top); - return this.translateToCenterPoint(leftTop, this.originX, this.originY); - }, - - /** - * Returns the coordinates of the object based on center coordinates - * @param {fabric.Point} point The point which corresponds to the originX and originY params - * @return {fabric.Point} - */ - // getOriginPoint: function(center) { - // return this.translateToOriginPoint(center, this.originX, this.originY); - // }, - - /** - * Returns the coordinates of the object as if it has a different origin - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - getPointByOrigin: function(originX, originY) { - var center = this.getCenterPoint(); - return this.translateToOriginPoint(center, originX, originY); - }, - - /** - * Returns the point in local coordinates - * @param {fabric.Point} point The point relative to the global coordinate system - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {fabric.Point} - */ - toLocalPoint: function(point, originX, originY) { - var center = this.getCenterPoint(), - strokeWidth = this.stroke ? this.strokeWidth : 0, - x, y; - - if (originX && originY) { - if (originX === 'left') { - x = center.x - (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - else if (originX === 'right') { - x = center.x + (this.getWidth() + strokeWidth * this.scaleX) / 2; - } - else { - x = center.x; - } - - if (originY === 'top') { - y = center.y - (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - else if (originY === 'bottom') { - y = center.y + (this.getHeight() + strokeWidth * this.scaleY) / 2; - } - else { - y = center.y; - } - } - else { - x = this.left; - y = this.top; - } - - return fabric.util.rotatePoint(new fabric.Point(point.x, point.y), center, -degreesToRadians(this.angle)) - .subtractEquals(new fabric.Point(x, y)); - }, - - /** - * Returns the point in global coordinates - * @param {fabric.Point} The point relative to the local coordinate system - * @return {fabric.Point} - */ - // toGlobalPoint: function(point) { - // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top)); - // }, - - /** - * Sets the position of the object taking into consideration the object's origin - * @param {fabric.Point} pos The new position of the object - * @param {String} originX Horizontal origin: 'left', 'center' or 'right' - * @param {String} originY Vertical origin: 'top', 'center' or 'bottom' - * @return {void} - */ - setPositionByOrigin: function(pos, originX, originY) { - var center = this.translateToCenterPoint(pos, originX, originY), - position = this.translateToOriginPoint(center, this.originX, this.originY); - - this.set('left', position.x); - this.set('top', position.y); - }, - - /** - * @param {String} to One of 'left', 'center', 'right' - */ - adjustPosition: function(to) { - var angle = degreesToRadians(this.angle), - hypotHalf = this.getWidth() / 2, - xHalf = Math.cos(angle) * hypotHalf, - yHalf = Math.sin(angle) * hypotHalf, - hypotFull = this.getWidth(), - xFull = Math.cos(angle) * hypotFull, - yFull = Math.sin(angle) * hypotFull; - - if (this.originX === 'center' && to === 'left' || - this.originX === 'right' && to === 'center') { - // move half left - this.left -= xHalf; - this.top -= yHalf; - } - else if (this.originX === 'left' && to === 'center' || - this.originX === 'center' && to === 'right') { - // move half right - this.left += xHalf; - this.top += yHalf; - } - else if (this.originX === 'left' && to === 'right') { - // move full right - this.left += xFull; - this.top += yFull; - } - else if (this.originX === 'right' && to === 'left') { - // move full left - this.left -= xFull; - this.top -= yFull; - } - - this.setCoords(); - this.originX = to; - }, - - /** - * Sets the origin/position of the object to it's center point - * @private - * @return {void} - */ - _setOriginToCenter: function() { - this._originalOriginX = this.originX; - this._originalOriginY = this.originY; - - var center = this.getCenterPoint(); - - this.originX = 'center'; - this.originY = 'center'; - - this.left = center.x; - this.top = center.y; - }, - - /** - * Resets the origin/position of the object to it's original origin - * @private - * @return {void} - */ - _resetOrigin: function() { - var originPoint = this.translateToOriginPoint( - this.getCenterPoint(), - this._originalOriginX, - this._originalOriginY); - - this.originX = this._originalOriginX; - this.originY = this._originalOriginY; - - this.left = originPoint.x; - this.top = originPoint.y; - - this._originalOriginX = null; - this._originalOriginY = null; - }, - - /** - * @private - */ - _getLeftTopCoords: function() { - return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'center'); - } - }); - -})(); - - -(function() { - - var degreesToRadians = fabric.util.degreesToRadians; - - fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Object containing coordinates of object's controls - * @type Object - * @default - */ - oCoords: null, - - /** - * Checks if object intersects with an area formed by 2 points - * @param {Object} pointTL top-left point of area - * @param {Object} pointBR bottom-right point of area - * @return {Boolean} true if object intersects with an area formed by 2 points - */ - intersectsWithRect: function(pointTL, pointBR) { - var oCoords = this.oCoords, - tl = new fabric.Point(oCoords.tl.x, oCoords.tl.y), - tr = new fabric.Point(oCoords.tr.x, oCoords.tr.y), - bl = new fabric.Point(oCoords.bl.x, oCoords.bl.y), - br = new fabric.Point(oCoords.br.x, oCoords.br.y), - intersection = fabric.Intersection.intersectPolygonRectangle( - [tl, tr, br, bl], - pointTL, - pointBR - ); - return intersection.status === 'Intersection'; - }, - - /** - * Checks if object intersects with another object - * @param {Object} other Object to test - * @return {Boolean} true if object intersects with another object - */ - intersectsWithObject: function(other) { - // extracts coords - function getCoords(oCoords) { - return { - tl: new fabric.Point(oCoords.tl.x, oCoords.tl.y), - tr: new fabric.Point(oCoords.tr.x, oCoords.tr.y), - bl: new fabric.Point(oCoords.bl.x, oCoords.bl.y), - br: new fabric.Point(oCoords.br.x, oCoords.br.y) - }; - } - var thisCoords = getCoords(this.oCoords), - otherCoords = getCoords(other.oCoords), - intersection = fabric.Intersection.intersectPolygonPolygon( - [thisCoords.tl, thisCoords.tr, thisCoords.br, thisCoords.bl], - [otherCoords.tl, otherCoords.tr, otherCoords.br, otherCoords.bl] - ); - - return intersection.status === 'Intersection'; - }, - - /** - * Checks if object is fully contained within area of another object - * @param {Object} other Object to test - * @return {Boolean} true if object is fully contained within area of another object - */ - isContainedWithinObject: function(other) { - var boundingRect = other.getBoundingRect(), - point1 = new fabric.Point(boundingRect.left, boundingRect.top), - point2 = new fabric.Point(boundingRect.left + boundingRect.width, boundingRect.top + boundingRect.height); - - return this.isContainedWithinRect(point1, point2); - }, - - /** - * Checks if object is fully contained within area formed by 2 points - * @param {Object} pointTL top-left point of area - * @param {Object} pointBR bottom-right point of area - * @return {Boolean} true if object is fully contained within area formed by 2 points - */ - isContainedWithinRect: function(pointTL, pointBR) { - var boundingRect = this.getBoundingRect(); - - return ( - boundingRect.left >= pointTL.x && - boundingRect.left + boundingRect.width <= pointBR.x && - boundingRect.top >= pointTL.y && - boundingRect.top + boundingRect.height <= pointBR.y - ); - }, - - /** - * Checks if point is inside the object - * @param {fabric.Point} point Point to check against - * @return {Boolean} true if point is inside the object - */ - containsPoint: function(point) { - var lines = this._getImageLines(this.oCoords), - xPoints = this._findCrossPoints(point, lines); - - // if xPoints is odd then point is inside the object - return (xPoints !== 0 && xPoints % 2 === 1); - }, - - /** - * Method that returns an object with the object edges in it, given the coordinates of the corners - * @private - * @param {Object} oCoords Coordinates of the object corners - */ - _getImageLines: function(oCoords) { - return { - topline: { - o: oCoords.tl, - d: oCoords.tr - }, - rightline: { - o: oCoords.tr, - d: oCoords.br - }, - bottomline: { - o: oCoords.br, - d: oCoords.bl - }, - leftline: { - o: oCoords.bl, - d: oCoords.tl - } - }; - }, - - /** - * Helper method to determine how many cross points are between the 4 object edges - * and the horizontal line determined by a point on canvas - * @private - * @param {fabric.Point} point Point to check - * @param {Object} oCoords Coordinates of the object being evaluated - */ - _findCrossPoints: function(point, oCoords) { - var b1, b2, a1, a2, xi, yi, - xcount = 0, - iLine; - - for (var lineKey in oCoords) { - iLine = oCoords[lineKey]; - // optimisation 1: line below point. no cross - if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) { - continue; - } - // optimisation 2: line above point. no cross - if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) { - continue; - } - // optimisation 3: vertical line case - if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) { - xi = iLine.o.x; - yi = point.y; - } - // calculate the intersection point - else { - b1 = 0; - b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x); - a1 = point.y - b1 * point.x; - a2 = iLine.o.y - b2 * iLine.o.x; - - xi = - (a1 - a2) / (b1 - b2); - yi = a1 + b1 * xi; - } - // dont count xi < point.x cases - if (xi >= point.x) { - xcount += 1; - } - // optimisation 4: specific for square images - if (xcount === 2) { - break; - } - } - return xcount; - }, - - /** - * Returns width of an object's bounding rectangle - * @deprecated since 1.0.4 - * @return {Number} width value - */ - getBoundingRectWidth: function() { - return this.getBoundingRect().width; - }, - - /** - * Returns height of an object's bounding rectangle - * @deprecated since 1.0.4 - * @return {Number} height value - */ - getBoundingRectHeight: function() { - return this.getBoundingRect().height; - }, - - /** - * Returns coordinates of object's bounding rectangle (left, top, width, height) - * @return {Object} Object with left, top, width, height properties - */ - getBoundingRect: function() { - this.oCoords || this.setCoords(); - - var xCoords = [this.oCoords.tl.x, this.oCoords.tr.x, this.oCoords.br.x, this.oCoords.bl.x], - minX = fabric.util.array.min(xCoords), - maxX = fabric.util.array.max(xCoords), - width = Math.abs(minX - maxX), - - yCoords = [this.oCoords.tl.y, this.oCoords.tr.y, this.oCoords.br.y, this.oCoords.bl.y], - minY = fabric.util.array.min(yCoords), - maxY = fabric.util.array.max(yCoords), - height = Math.abs(minY - maxY); - - return { - left: minX, - top: minY, - width: width, - height: height - }; - }, - - /** - * Returns width of an object - * @return {Number} width value - */ - getWidth: function() { - return this.width * this.scaleX; - }, - - /** - * Returns height of an object - * @return {Number} height value - */ - getHeight: function() { - return this.height * this.scaleY; - }, - - /** - * Makes sure the scale is valid and modifies it if necessary - * @private - * @param {Number} value - * @return {Number} - */ - _constrainScale: function(value) { - if (Math.abs(value) < this.minScaleLimit) { - if (value < 0) { - return -this.minScaleLimit; - } - else { - return this.minScaleLimit; - } - } - return value; - }, - - /** - * Scales an object (equally by x and y) - * @param {Number} value Scale factor - * @return {fabric.Object} thisArg - * @chainable - */ - scale: function(value) { - value = this._constrainScale(value); - - if (value < 0) { - this.flipX = !this.flipX; - this.flipY = !this.flipY; - value *= -1; - } - - this.scaleX = value; - this.scaleY = value; - this.setCoords(); - return this; - }, - - /** - * Scales an object to a given width, with respect to bounding box (scaling by x/y equally) - * @param {Number} value New width value - * @return {fabric.Object} thisArg - * @chainable - */ - scaleToWidth: function(value) { - // adjust to bounding rect factor so that rotated shapes would fit as well - var boundingRectFactor = this.getBoundingRectWidth() / this.getWidth(); - return this.scale(value / this.width / boundingRectFactor); - }, - - /** - * Scales an object to a given height, with respect to bounding box (scaling by x/y equally) - * @param {Number} value New height value - * @return {fabric.Object} thisArg - * @chainable - */ - scaleToHeight: function(value) { - // adjust to bounding rect factor so that rotated shapes would fit as well - var boundingRectFactor = this.getBoundingRectHeight() / this.getHeight(); - return this.scale(value / this.height / boundingRectFactor); - }, - - /** - * Sets corner position coordinates based on current angle, width and height - * @return {fabric.Object} thisArg - * @chainable - */ - setCoords: function() { - var strokeWidth = this.strokeWidth > 1 ? this.strokeWidth : 0, - theta = degreesToRadians(this.angle), - vpt = this.getViewportTransform(), - f = function (p) { - return fabric.util.transformPoint(p, vpt); - }, - w = this.width, - h = this.height, - capped = this.strokeLineCap === 'round' || this.strokeLineCap === 'square', - vLine = this.type === 'line' && this.width === 1, - hLine = this.type === 'line' && this.height === 1, - strokeW = (capped && hLine) || this.type !== 'line', - strokeH = (capped && vLine) || this.type !== 'line'; - - if (vLine) { - w = strokeWidth; - } - else if (hLine) { - h = strokeWidth; - } - if (strokeW) { - w += strokeWidth; - } - if (strokeH) { - h += strokeWidth; - } - this.currentWidth = w * this.scaleX; - this.currentHeight = h * this.scaleY; - - // If width is negative, make postive. Fixes path selection issue - if (this.currentWidth < 0) { - this.currentWidth = Math.abs(this.currentWidth); - } - - var _hypotenuse = Math.sqrt( - Math.pow(this.currentWidth / 2, 2) + - Math.pow(this.currentHeight / 2, 2)), - - _angle = Math.atan(isFinite(this.currentHeight / this.currentWidth) ? this.currentHeight / this.currentWidth : 0), - - // offset added for rotate and scale actions - offsetX = Math.cos(_angle + theta) * _hypotenuse, - offsetY = Math.sin(_angle + theta) * _hypotenuse, - sinTh = Math.sin(theta), - cosTh = Math.cos(theta), - coords = this.getCenterPoint(), - wh = new fabric.Point(this.currentWidth, this.currentHeight), - _tl = new fabric.Point(coords.x - offsetX, coords.y - offsetY), - _tr = new fabric.Point(_tl.x + (wh.x * cosTh), _tl.y + (wh.x * sinTh)), - _bl = new fabric.Point(_tl.x - (wh.y * sinTh), _tl.y + (wh.y * cosTh)), - _mt = new fabric.Point(_tl.x + (wh.x/2 * cosTh), _tl.y + (wh.x/2 * sinTh)), - tl = f(_tl), - tr = f(_tr), - br = f(new fabric.Point(_tr.x - (wh.y * sinTh), _tr.y + (wh.y * cosTh))), - bl = f(_bl), - ml = f(new fabric.Point(_tl.x - (wh.y/2 * sinTh), _tl.y + (wh.y/2 * cosTh))), - mt = f(_mt), - mr = f(new fabric.Point(_tr.x - (wh.y/2 * sinTh), _tr.y + (wh.y/2 * cosTh))), - mb = f(new fabric.Point(_bl.x + (wh.x/2 * cosTh), _bl.y + (wh.x/2 * sinTh))), - mtr = f(new fabric.Point(_mt.x, _mt.y)), - - // padding - padX = Math.cos(_angle + theta) * this.padding * Math.sqrt(2), - padY = Math.sin(_angle + theta) * this.padding * Math.sqrt(2); - - tl = tl.add(new fabric.Point(-padX, -padY)); - tr = tr.add(new fabric.Point(padY, -padX)); - br = br.add(new fabric.Point(padX, padY)); - bl = bl.add(new fabric.Point(-padY, padX)); - ml = ml.add(new fabric.Point((-padX - padY) / 2, (-padY + padX) / 2)); - mt = mt.add(new fabric.Point((padY - padX) / 2, -(padY + padX) / 2)); - mr = mr.add(new fabric.Point((padY + padX) / 2, (padY - padX) / 2)); - mb = mb.add(new fabric.Point((padX - padY) / 2, (padX + padY) / 2)); - mtr = mtr.add(new fabric.Point((padY - padX) / 2, -(padY + padX) / 2)); - - // debugging - - // setTimeout(function() { - // canvas.contextTop.fillStyle = 'green'; - // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3); - // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3); - // canvas.contextTop.fillRect(br.x, br.y, 3, 3); - // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3); - // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3); - // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3); - // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3); - // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3); - // }, 50); - - this.oCoords = { - // corners - tl: tl, tr: tr, br: br, bl: bl, - // middle - ml: ml, mt: mt, mr: mr, mb: mb, - // rotating point - mtr: mtr - }; - - // set coordinates of the draggable boxes in the corners used to scale/rotate the image - this._setCornerCoords && this._setCornerCoords(); - - return this; - } - }); -})(); - - -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Moves an object to the bottom of the stack of drawn objects - * @return {fabric.Object} thisArg - * @chainable - */ - sendToBack: function() { - if (this.group) { - fabric.StaticCanvas.prototype.sendToBack.call(this.group, this); - } - else { - this.canvas.sendToBack(this); - } - return this; - }, - - /** - * Moves an object to the top of the stack of drawn objects - * @return {fabric.Object} thisArg - * @chainable - */ - bringToFront: function() { - if (this.group) { - fabric.StaticCanvas.prototype.bringToFront.call(this.group, this); - } - else { - this.canvas.bringToFront(this); - } - return this; - }, - - /** - * Moves an object down in stack of drawn objects - * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object - * @return {fabric.Object} thisArg - * @chainable - */ - sendBackwards: function(intersecting) { - if (this.group) { - fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting); - } - else { - this.canvas.sendBackwards(this, intersecting); - } - return this; - }, - - /** - * Moves an object up in stack of drawn objects - * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object - * @return {fabric.Object} thisArg - * @chainable - */ - bringForward: function(intersecting) { - if (this.group) { - fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting); - } - else { - this.canvas.bringForward(this, intersecting); - } - return this; - }, - - /** - * Moves an object to specified level in stack of drawn objects - * @param {Number} index New position of object - * @return {fabric.Object} thisArg - * @chainable - */ - moveTo: function(index) { - if (this.group) { - fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index); - } - else { - this.canvas.moveTo(this, index); - } - return this; - } -}); - - -/* _TO_SVG_START_ */ -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Returns styles-string for svg-export - * @return {String} - */ - getSvgStyles: function() { - - var fill = this.fill - ? (this.fill.toLive ? 'url(#SVGID_' + this.fill.id + ')' : this.fill) - : 'none', - fillRule = (this.fillRule === 'destination-over' ? 'evenodd' : this.fillRule), - stroke = this.stroke - ? (this.stroke.toLive ? 'url(#SVGID_' + this.stroke.id + ')' : this.stroke) - : 'none', - - strokeWidth = this.strokeWidth ? this.strokeWidth : '0', - strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : '', - strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt', - strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter', - strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4', - opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1', - - visibility = this.visible ? '' : ' visibility: hidden;', - filter = this.shadow && this.type !== 'text' ? 'filter: url(#SVGID_' + this.shadow.id + ');' : ''; - - return [ - 'stroke: ', stroke, '; ', - 'stroke-width: ', strokeWidth, '; ', - 'stroke-dasharray: ', strokeDashArray, '; ', - 'stroke-linecap: ', strokeLineCap, '; ', - 'stroke-linejoin: ', strokeLineJoin, '; ', - 'stroke-miterlimit: ', strokeMiterLimit, '; ', - 'fill: ', fill, '; ', - 'fill-rule: ', fillRule, '; ', - 'opacity: ', opacity, ';', - filter, - visibility - ].join(''); - }, - - /** - * Returns transform-string for svg-export - * @return {String} - */ - getSvgTransform: function() { - if (this.group) { - return ''; - } - var toFixed = fabric.util.toFixed, - angle = this.getAngle(), - vpt = !this.canvas || this.canvas.svgViewportTransformation ? this.getViewportTransform() : [1, 0, 0, 1, 0, 0], - center = fabric.util.transformPoint(this.getCenterPoint(), vpt), - - NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS, - - translatePart = this.type === 'path-group' ? '' : 'translate(' + - toFixed(center.x, NUM_FRACTION_DIGITS) + - ' ' + - toFixed(center.y, NUM_FRACTION_DIGITS) + - ')', - - anglePart = angle !== 0 - ? (' rotate(' + toFixed(angle, NUM_FRACTION_DIGITS) + ')') - : '', - - scalePart = (this.scaleX === 1 && this.scaleY === 1 && vpt[0] === 1 && vpt[3] === 1) - ? '' : - (' scale(' + - toFixed(this.scaleX * vpt[0], NUM_FRACTION_DIGITS) + - ' ' + - toFixed(this.scaleY * vpt[3], NUM_FRACTION_DIGITS) + - ')'), - - addTranslateX = this.type === 'path-group' ? this.width * vpt[0] : 0, - - flipXPart = this.flipX ? ' matrix(-1 0 0 1 ' + addTranslateX + ' 0) ' : '', - - addTranslateY = this.type === 'path-group' ? this.height * vpt[3] : 0, - - flipYPart = this.flipY ? ' matrix(1 0 0 -1 0 ' + addTranslateY + ')' : ''; - - return [ - translatePart, anglePart, scalePart, flipXPart, flipYPart - ].join(''); - }, - - /** - * Returns transform-string for svg-export from the transform matrix of single elements - * @return {String} - */ - getSvgTransformMatrix: function() { - return this.transformMatrix ? ' matrix(' + this.transformMatrix.join(' ') + ')' : ''; - }, - - /** - * @private - */ - _createBaseSVGMarkup: function() { - var markup = [ ]; - - if (this.fill && this.fill.toLive) { - markup.push(this.fill.toSVG(this, false)); - } - if (this.stroke && this.stroke.toLive) { - markup.push(this.stroke.toSVG(this, false)); - } - if (this.shadow) { - markup.push(this.shadow.toSVG(this)); - } - return markup; - } -}); -/* _TO_SVG_END_ */ - - -/* - Depends on `stateProperties` -*/ -fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ { - - /** - * Returns true if object state (one of its state properties) was changed - * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called - */ - hasStateChanged: function() { - return this.stateProperties.some(function(prop) { - return this.get(prop) !== this.originalState[prop]; - }, this); - }, - - /** - * Saves state of an object - * @param {Object} [options] Object with additional `stateProperties` array to include when saving state - * @return {fabric.Object} thisArg - */ - saveState: function(options) { - this.stateProperties.forEach(function(prop) { - this.originalState[prop] = this.get(prop); - }, this); - - if (options && options.stateProperties) { - options.stateProperties.forEach(function(prop) { - this.originalState[prop] = this.get(prop); - }, this); - } - - return this; - }, - - /** - * Setups state of an object - * @return {fabric.Object} thisArg - */ - setupState: function() { - this.originalState = { }; - this.saveState(); - - return this; - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 }, - supportsLineDash = fabric.StaticCanvas.supports('setLineDash'); - - if (fabric.Line) { - fabric.warn('fabric.Line is already defined'); - return; - } - - /** - * Line class - * @class fabric.Line - * @extends fabric.Object - * @see {@link fabric.Line#initialize} for constructor definition - */ - fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'line', - - /** - * x value or first line edge - * @type Number - * @default - */ - x1: 0, - - /** - * y value or first line edge - * @type Number - * @default - */ - y1: 0, - - /** - * x value or second line edge - * @type Number - * @default - */ - x2: 0, - - /** - * y value or second line edge - * @type Number - * @default - */ - y2: 0, - - /** - * Constructor - * @param {Array} [points] Array of points - * @param {Object} [options] Options object - * @return {fabric.Line} thisArg - */ - initialize: function(points, options) { - options = options || { }; - - if (!points) { - points = [0, 0, 0, 0]; - } - - this.callSuper('initialize', options); - - this.set('x1', points[0]); - this.set('y1', points[1]); - this.set('x2', points[2]); - this.set('y2', points[3]); - - this._setWidthHeight(options); - }, - - /** - * @private - * @param {Object} [options] Options - */ - _setWidthHeight: function(options) { - options || (options = { }); - - this.width = Math.abs(this.x2 - this.x1) || 1; - this.height = Math.abs(this.y2 - this.y1) || 1; - - this.left = 'left' in options - ? options.left - : this._getLeftToOriginX(); - - this.top = 'top' in options - ? options.top - : this._getTopToOriginY(); - }, - - /** - * @private - * @param {String} key - * @param {Any} value - */ - _set: function(key, value) { - this[key] = value; - if (typeof coordProps[key] !== 'undefined') { - this._setWidthHeight(); - } - return this; - }, - - /** - * @private - * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line. - */ - _getLeftToOriginX: makeEdgeToOriginGetter( - { // property names - origin: 'originX', - axis1: 'x1', - axis2: 'x2', - dimension: 'width' - }, - { // possible values of origin - nearest: 'left', - center: 'center', - farthest: 'right' - } - ), - - /** - * @private - * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line. - */ - _getTopToOriginY: makeEdgeToOriginGetter( - { // property names - origin: 'originY', - axis1: 'y1', - axis2: 'y2', - dimension: 'height' - }, - { // possible values of origin - nearest: 'top', - center: 'center', - farthest: 'bottom' - } - ), - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx, noTransform) { - ctx.beginPath(); - - if (noTransform) { - // Line coords are distances from left-top of canvas to origin of line. - // - // To render line in a path-group, we need to translate them to - // distances from center of path-group to center of line. - var cp = this.getCenterPoint(); - ctx.translate( - cp.x, - cp.y - ); - } - - if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) { - - // move from center (of virtual box) to its left/top corner - // we can't assume x1, y1 is top left and x2, y2 is bottom right - var xMult = this.x1 <= this.x2 ? -1 : 1, - yMult = this.y1 <= this.y2 ? -1 : 1; - - ctx.moveTo( - this.width === 1 ? 0 : (xMult * this.width / 2), - this.height === 1 ? 0 : (yMult * this.height / 2)); - - ctx.lineTo( - this.width === 1 ? 0 : (xMult * -1 * this.width / 2), - this.height === 1 ? 0 : (yMult * -1 * this.height / 2)); - } - - ctx.lineWidth = this.strokeWidth; - - // TODO: test this - // make sure setting "fill" changes color of a line - // (by copying fillStyle to strokeStyle, since line is stroked, not filled) - var origStrokeStyle = ctx.strokeStyle; - ctx.strokeStyle = this.stroke || ctx.fillStyle; - this.stroke && this._renderStroke(ctx); - ctx.strokeStyle = origStrokeStyle; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var - xMult = this.x1 <= this.x2 ? -1 : 1, - yMult = this.y1 <= this.y2 ? -1 : 1, - x = this.width === 1 ? 0 : xMult * this.width / 2, - y = this.height === 1 ? 0 : yMult * this.height / 2; - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, x, y, -x, -y, this.strokeDashArray); - ctx.closePath(); - }, - - /** - * Returns object representation of an instance - * @methd toObject - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - x1: this.get('x1'), - y1: this.get('y1'), - x2: this.get('x2'), - y2: this.get('y2') - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), addTranslate = ''; - if (!this.group) { - var x = - this.width / 2 - (this.x1 > this.x2 ? this.x2 : this.x1), - y = - this.height / 2 - (this.y1 > this.y2 ? this.y2 : this.y1); - addTranslate = 'translate(' + x + ', ' + y + ') '; - } - markup.push( - '\n' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns complexity of an instance - * @return {Number} complexity - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement}) - * @static - * @memberOf fabric.Line - * @see http://www.w3.org/TR/SVG/shapes.html#LineElement - */ - fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' ')); - - /** - * Returns fabric.Line instance from an SVG element - * @static - * @memberOf fabric.Line - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Line} instance of fabric.Line - */ - fabric.Line.fromElement = function(element, options) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES), - points = [ - parsedAttributes.x1 || 0, - parsedAttributes.y1 || 0, - parsedAttributes.x2 || 0, - parsedAttributes.y2 || 0 - ]; - return new fabric.Line(points, extend(parsedAttributes, options)); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Line instance from an object representation - * @static - * @memberOf fabric.Line - * @param {Object} object Object to create an instance from - * @return {fabric.Line} instance of fabric.Line - */ - fabric.Line.fromObject = function(object) { - var points = [object.x1, object.y1, object.x2, object.y2]; - return new fabric.Line(points, object); - }; - - /** - * Produces a function that calculates distance from canvas edge to Line origin. - */ - function makeEdgeToOriginGetter(propertyNames, originValues) { - var origin = propertyNames.origin, - axis1 = propertyNames.axis1, - axis2 = propertyNames.axis2, - dimension = propertyNames.dimension, - nearest = originValues.nearest, - center = originValues.center, - farthest = originValues.farthest; - - return function() { - switch (this.get(origin)) { - case nearest: - return Math.min(this.get(axis1), this.get(axis2)); - case center: - return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension)); - case farthest: - return Math.max(this.get(axis1), this.get(axis2)); - } - }; - - } - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - piBy2 = Math.PI * 2, - extend = fabric.util.object.extend; - - if (fabric.Circle) { - fabric.warn('fabric.Circle is already defined.'); - return; - } - - /** - * Circle class - * @class fabric.Circle - * @extends fabric.Object - * @see {@link fabric.Circle#initialize} for constructor definition - */ - fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'circle', - - /** - * Radius of this circle - * @type Number - * @default - */ - radius: 0, - - /** - * Constructor - * @param {Object} [options] Options object - * @return {fabric.Circle} thisArg - */ - initialize: function(options) { - options = options || { }; - - this.callSuper('initialize', options); - this.set('radius', options.radius || 0); - }, - - /** - * @private - * @param {String} key - * @param {Any} value - * @return {fabric.Circle} thisArg - */ - _set: function(key, value) { - this.callSuper('_set', key, value); - - if (key === 'radius') { - this.setRadius(value); - } - - return this; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - radius: this.get('radius') - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), x = 0, y = 0; - if (this.group) { - x = this.left + this.radius; - y = this.top + this.radius; - } - markup.push( - '\n' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - _render: function(ctx, noTransform) { - ctx.beginPath(); - ctx.arc(noTransform ? this.left + this.radius : 0, noTransform ? this.top + this.radius : 0, this.radius, 0, piBy2, false); - this._renderFill(ctx); - this._renderStroke(ctx); - }, - - /** - * Returns horizontal radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusX: function() { - return this.get('radius') * this.get('scaleX'); - }, - - /** - * Returns vertical radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusY: function() { - return this.get('radius') * this.get('scaleY'); - }, - - /** - * Sets radius of an object (and updates width accordingly) - * @return {Number} - */ - setRadius: function(value) { - this.radius = value; - this.set('width', value * 2).set('height', value * 2); - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement}) - * @static - * @memberOf fabric.Circle - * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement - */ - fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' ')); - - /** - * Returns {@link fabric.Circle} instance from an SVG element - * @static - * @memberOf fabric.Circle - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @throws {Error} If value of `r` attribute is missing or invalid - * @return {fabric.Circle} Instance of fabric.Circle - */ - fabric.Circle.fromElement = function(element, options) { - options || (options = { }); - - var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES); - - if (!isValidRadius(parsedAttributes)) { - throw new Error('value of `r` attribute is required and can not be negative'); - } - - parsedAttributes.left = parsedAttributes.left || 0; - parsedAttributes.top = parsedAttributes.top || 0; - - var obj = new fabric.Circle(extend(parsedAttributes, options)); - - obj.left -= obj.radius; - obj.top -= obj.radius; - return obj; - }; - - /** - * @private - */ - function isValidRadius(attributes) { - return (('radius' in attributes) && (attributes.radius > 0)); - } - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Circle} instance from an object representation - * @static - * @memberOf fabric.Circle - * @param {Object} object Object to create an instance from - * @return {Object} Instance of fabric.Circle - */ - fabric.Circle.fromObject = function(object) { - return new fabric.Circle(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - if (fabric.Triangle) { - fabric.warn('fabric.Triangle is already defined'); - return; - } - - /** - * Triangle class - * @class fabric.Triangle - * @extends fabric.Object - * @return {fabric.Triangle} thisArg - * @see {@link fabric.Triangle#initialize} for constructor definition - */ - fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'triangle', - - /** - * Constructor - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(options) { - options = options || { }; - - this.callSuper('initialize', options); - - this.set('width', options.width || 100) - .set('height', options.height || 100); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - var widthBy2 = this.width / 2, - heightBy2 = this.height / 2; - - ctx.beginPath(); - ctx.moveTo(-widthBy2, heightBy2); - ctx.lineTo(0, -heightBy2); - ctx.lineTo(widthBy2, heightBy2); - ctx.closePath(); - - this._renderFill(ctx); - this._renderStroke(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var widthBy2 = this.width / 2, - heightBy2 = this.height / 2; - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray); - ctx.closePath(); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), - widthBy2 = this.width / 2, - heightBy2 = this.height / 2, - points = [ - -widthBy2 + ' ' + heightBy2, - '0 ' + -heightBy2, - widthBy2 + ' ' + heightBy2 - ] - .join(','); - - markup.push( - '' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return 1; - } - }); - - /** - * Returns fabric.Triangle instance from an object representation - * @static - * @memberOf fabric.Triangle - * @param {Object} object Object to create an instance from - * @return {Object} instance of Canvas.Triangle - */ - fabric.Triangle.fromObject = function(object) { - return new fabric.Triangle(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global){ - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - piBy2 = Math.PI * 2, - extend = fabric.util.object.extend; - - if (fabric.Ellipse) { - fabric.warn('fabric.Ellipse is already defined.'); - return; - } - - /** - * Ellipse class - * @class fabric.Ellipse - * @extends fabric.Object - * @return {fabric.Ellipse} thisArg - * @see {@link fabric.Ellipse#initialize} for constructor definition - */ - fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'ellipse', - - /** - * Horizontal radius - * @type Number - * @default - */ - rx: 0, - - /** - * Vertical radius - * @type Number - * @default - */ - ry: 0, - - /** - * Constructor - * @param {Object} [options] Options object - * @return {fabric.Ellipse} thisArg - */ - initialize: function(options) { - options = options || { }; - - this.callSuper('initialize', options); - - this.set('rx', options.rx || 0); - this.set('ry', options.ry || 0); - - this.set('width', this.get('rx') * 2); - this.set('height', this.get('ry') * 2); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - rx: this.get('rx'), - ry: this.get('ry') - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), x = 0, y = 0; - if (this.group) { - x = this.left + this.rx; - y = this.top + this.ry; - } - markup.push( - '\n' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - _render: function(ctx, noTransform) { - ctx.beginPath(); - ctx.save(); - ctx.transform(1, 0, 0, this.ry/this.rx, 0, 0); - ctx.arc(noTransform ? this.left + this.rx : 0, noTransform ? (this.top + this.ry) * this.rx/this.ry : 0, this.rx, 0, piBy2, false); - ctx.restore(); - this._renderFill(ctx); - this._renderStroke(ctx); - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement}) - * @static - * @memberOf fabric.Ellipse - * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement - */ - fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' ')); - - /** - * Returns {@link fabric.Ellipse} instance from an SVG element - * @static - * @memberOf fabric.Ellipse - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Ellipse} - */ - fabric.Ellipse.fromElement = function(element, options) { - options || (options = { }); - - var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES); - - parsedAttributes.left = parsedAttributes.left || 0; - parsedAttributes.top = parsedAttributes.top || 0; - - var ellipse = new fabric.Ellipse(extend(parsedAttributes, options)); - - ellipse.top -= ellipse.ry; - ellipse.left -= ellipse.rx; - return ellipse; - }; - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Ellipse} instance from an object representation - * @static - * @memberOf fabric.Ellipse - * @param {Object} object Object to create an instance from - * @return {fabric.Ellipse} - */ - fabric.Ellipse.fromObject = function(object) { - return new fabric.Ellipse(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - if (fabric.Rect) { - console.warn('fabric.Rect is already defined'); - return; - } - - var stateProperties = fabric.Object.prototype.stateProperties.concat(); - stateProperties.push('rx', 'ry', 'x', 'y'); - - /** - * Rectangle class - * @class fabric.Rect - * @extends fabric.Object - * @return {fabric.Rect} thisArg - * @see {@link fabric.Rect#initialize} for constructor definition - */ - fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ { - - /** - * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: stateProperties, - - /** - * Type of an object - * @type String - * @default - */ - type: 'rect', - - /** - * Horizontal border radius - * @type Number - * @default - */ - rx: 0, - - /** - * Vertical border radius - * @type Number - * @default - */ - ry: 0, - - /** - * Used to specify dash pattern for stroke on this object - * @type Array - */ - strokeDashArray: null, - - /** - * Constructor - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(options) { - options = options || { }; - - this.callSuper('initialize', options); - this._initRxRy(); - - }, - - /** - * Initializes rx/ry attributes - * @private - */ - _initRxRy: function() { - if (this.rx && !this.ry) { - this.ry = this.rx; - } - else if (this.ry && !this.rx) { - this.rx = this.ry; - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx, noTransform) { - - // optimize 1x1 case (used in spray brush) - if (this.width === 1 && this.height === 1) { - ctx.fillRect(0, 0, 1, 1); - return; - } - - var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0, - ry = this.ry ? Math.min(this.ry, this.height / 2) : 0, - w = this.width, - h = this.height, - x = noTransform ? this.left : -this.width / 2, - y = noTransform ? this.top : -this.height / 2, - isRounded = rx !== 0 || ry !== 0, - k = 1 - 0.5522847498 /* "magic number" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */; - - ctx.beginPath(); - - ctx.moveTo(x + rx, y); - - ctx.lineTo(x + w - rx, y); - isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry); - - ctx.lineTo(x + w, y + h - ry); - isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h); - - ctx.lineTo(x + rx, y + h); - isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry); - - ctx.lineTo(x, y + ry); - isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y); - - ctx.closePath(); - - this._renderFill(ctx); - this._renderStroke(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var x = -this.width / 2, - y = -this.height / 2, - w = this.width, - h = this.height; - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); - ctx.closePath(); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - var object = extend(this.callSuper('toObject', propertiesToInclude), { - rx: this.get('rx') || 0, - ry: this.get('ry') || 0 - }); - if (!this.includeDefaultValues) { - this._removeDefaultValues(object); - } - return object; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), x = this.left, y = this.top; - if (!this.group) { - x = -this.width / 2; - y = -this.height / 2; - } - markup.push( - '\n'); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns complexity of an instance - * @return {Number} complexity - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`) - * @static - * @memberOf fabric.Rect - * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement - */ - fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' ')); - - /** - * Returns {@link fabric.Rect} instance from an SVG element - * @static - * @memberOf fabric.Rect - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Rect} Instance of fabric.Rect - */ - fabric.Rect.fromElement = function(element, options) { - if (!element) { - return null; - } - options = options || { }; - - var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES); - - parsedAttributes.left = parsedAttributes.left || 0; - parsedAttributes.top = parsedAttributes.top || 0; - - return new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns {@link fabric.Rect} instance from an object representation - * @static - * @memberOf fabric.Rect - * @param {Object} object Object to create an instance from - * @return {Object} instance of fabric.Rect - */ - fabric.Rect.fromObject = function(object) { - return new fabric.Rect(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - toFixed = fabric.util.toFixed; - - if (fabric.Polyline) { - fabric.warn('fabric.Polyline is already defined'); - return; - } - - /** - * Polyline class - * @class fabric.Polyline - * @extends fabric.Object - * @see {@link fabric.Polyline#initialize} for constructor definition - */ - fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'polyline', - - /** - * Points array - * @type Array - * @default - */ - points: null, - - /** - * Constructor - * @param {Array} points Array of points (where each point is an object with x and y) - * @param {Object} [options] Options object - * @param {Boolean} [skipOffset] Whether points offsetting should be skipped - * @return {fabric.Polyline} thisArg - * @example - * var poly = new fabric.Polyline([ - * { x: 10, y: 10 }, - * { x: 50, y: 30 }, - * { x: 40, y: 70 }, - * { x: 60, y: 50 }, - * { x: 100, y: 150 }, - * { x: 40, y: 100 } - * ], { - * stroke: 'red', - * left: 100, - * top: 100 - * }); - */ - initialize: function(points, options) { - options = options || { }; - this.set('points', points); - this.callSuper('initialize', options); - this._calcDimensions(); - }, - - /** - * @private - */ - _calcDimensions: function() { - return fabric.Polygon.prototype._calcDimensions.call(this); - }, - - /** - * @private - */ - _applyPointOffset: function() { - return fabric.Polygon.prototype._applyPointOffset.call(this); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - return fabric.Polygon.prototype.toObject.call(this, propertiesToInclude); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var points = [], - markup = this._createBaseSVGMarkup(); - - for (var i = 0, len = this.points.length; i < len; i++) { - points.push(toFixed(this.points[i].x, 2), ',', toFixed(this.points[i].y, 2), ' '); - } - - markup.push( - '\n' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - var point; - ctx.beginPath(); - - if (this._applyPointOffset) { - if (!(this.group && this.group.type === 'path-group')) { - this._applyPointOffset(); - } - this._applyPointOffset = null; - } - - ctx.moveTo(this.points[0].x, this.points[0].y); - for (var i = 0, len = this.points.length; i < len; i++) { - point = this.points[i]; - ctx.lineTo(point.x, point.y); - } - - this._renderFill(ctx); - this._renderStroke(ctx); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var p1, p2; - - ctx.beginPath(); - for (var i = 0, len = this.points.length; i < len; i++) { - p1 = this.points[i]; - p2 = this.points[i + 1] || p1; - fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray); - } - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return this.get('points').length; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement}) - * @static - * @memberOf fabric.Polyline - * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement - */ - fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); - - /** - * Returns fabric.Polyline instance from an SVG element - * @static - * @memberOf fabric.Polyline - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Polyline} Instance of fabric.Polyline - */ - fabric.Polyline.fromElement = function(element, options) { - if (!element) { - return null; - } - options || (options = { }); - - var points = fabric.parsePointsAttribute(element.getAttribute('points')), - parsedAttributes = fabric.parseAttributes(element, fabric.Polyline.ATTRIBUTE_NAMES); - - if (points === null) { - return null; - } - - return new fabric.Polyline(points, fabric.util.object.extend(parsedAttributes, options)); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Polyline instance from an object representation - * @static - * @memberOf fabric.Polyline - * @param {Object} object Object to create an instance from - * @return {fabric.Polyline} Instance of fabric.Polyline - */ - fabric.Polyline.fromObject = function(object) { - var points = object.points; - return new fabric.Polyline(points, object, true); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - min = fabric.util.array.min, - max = fabric.util.array.max, - toFixed = fabric.util.toFixed; - - if (fabric.Polygon) { - fabric.warn('fabric.Polygon is already defined'); - return; - } - - /** - * Polygon class - * @class fabric.Polygon - * @extends fabric.Object - * @see {@link fabric.Polygon#initialize} for constructor definition - */ - fabric.Polygon = fabric.util.createClass(fabric.Object, /** @lends fabric.Polygon.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'polygon', - - /** - * Points array - * @type Array - * @default - */ - points: null, - - /** - * Constructor - * @param {Array} points Array of points - * @param {Object} [options] Options object - * @return {fabric.Polygon} thisArg - */ - initialize: function(points, options) { - options = options || { }; - this.points = points; - this.callSuper('initialize', options); - this._calcDimensions(); - }, - - /** - * @private - */ - _calcDimensions: function() { - - var points = this.points, - minX = min(points, 'x'), - minY = min(points, 'y'), - maxX = max(points, 'x'), - maxY = max(points, 'y'); - - this.width = (maxX - minX) || 1; - this.height = (maxY - minY) || 1; - - this.left = minX, - this.top = minY; - }, - - /** - * @private - */ - _applyPointOffset: function() { - // change points to offset polygon into a bounding box - // executed one time - this.points.forEach(function(p) { - p.x -= (this.left + this.width / 2); - p.y -= (this.top + this.height / 2); - }, this); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - points: this.points.concat() - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var points = [], - markup = this._createBaseSVGMarkup(); - - for (var i = 0, len = this.points.length; i < len; i++) { - points.push(toFixed(this.points[i].x, 2), ',', toFixed(this.points[i].y, 2), ' '); - } - - markup.push( - '\n' - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - var point; - ctx.beginPath(); - - if (this._applyPointOffset) { - if (!(this.group && this.group.type === 'path-group')) { - this._applyPointOffset(); - } - this._applyPointOffset = null; - } - - ctx.moveTo(this.points[0].x, this.points[0].y); - for (var i = 0, len = this.points.length; i < len; i++) { - point = this.points[i]; - ctx.lineTo(point.x, point.y); - } - this._renderFill(ctx); - if (this.stroke || this.strokeDashArray) { - ctx.closePath(); - this._renderStroke(ctx); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var p1, p2; - - ctx.beginPath(); - for (var i = 0, len = this.points.length; i < len; i++) { - p1 = this.points[i]; - p2 = this.points[i + 1] || this.points[0]; - fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray); - } - ctx.closePath(); - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return this.points.length; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`) - * @static - * @memberOf fabric.Polygon - * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement - */ - fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); - - /** - * Returns {@link fabric.Polygon} instance from an SVG element - * @static - * @memberOf fabric.Polygon - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Polygon} Instance of fabric.Polygon - */ - fabric.Polygon.fromElement = function(element, options) { - if (!element) { - return null; - } - - options || (options = { }); - - var points = fabric.parsePointsAttribute(element.getAttribute('points')), - parsedAttributes = fabric.parseAttributes(element, fabric.Polygon.ATTRIBUTE_NAMES); - - if (points === null) { - return null; - } - - return new fabric.Polygon(points, extend(parsedAttributes, options)); - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Polygon instance from an object representation - * @static - * @memberOf fabric.Polygon - * @param {Object} object Object to create an instance from - * @return {fabric.Polygon} Instance of fabric.Polygon - */ - fabric.Polygon.fromObject = function(object) { - return new fabric.Polygon(object.points, object, true); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - min = fabric.util.array.min, - max = fabric.util.array.max, - extend = fabric.util.object.extend, - _toString = Object.prototype.toString, - drawArc = fabric.util.drawArc, - commandLengths = { - m: 2, - l: 2, - h: 1, - v: 1, - c: 6, - s: 4, - q: 4, - t: 2, - a: 7 - }, - repeatedCommands = { - m: 'l', - M: 'L' - }; - - if (fabric.Path) { - fabric.warn('fabric.Path is already defined'); - return; - } - - /** - * @private - */ - function getX(item) { - if (item[0] === 'H') { - return item[1]; - } - return item[item.length - 2]; - } - - /** - * @private - */ - function getY(item) { - if (item[0] === 'V') { - return item[1]; - } - return item[item.length - 1]; - } - - /** - * Path class - * @class fabric.Path - * @extends fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1/#path_and_pathgroup} - * @see {@link fabric.Path#initialize} for constructor definition - */ - fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'path', - - /** - * Array of path points - * @type Array - * @default - */ - path: null, - - /** - * Constructor - * @param {Array|String} path Path data (sequence of coordinates and corresponding "command" tokens) - * @param {Object} [options] Options object - * @return {fabric.Path} thisArg - */ - initialize: function(path, options) { - options = options || { }; - - this.setOptions(options); - - if (!path) { - throw new Error('`path` argument is required'); - } - - var fromArray = _toString.call(path) === '[object Array]'; - - this.path = fromArray - ? path - // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values) - : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi); - - if (!this.path) { - return; - } - - if (!fromArray) { - this.path = this._parsePath(); - } - this._initializePath(options); - - if (options.sourcePath) { - this.setSourcePath(options.sourcePath); - } - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initializePath: function (options) { - var isWidthSet = 'width' in options && options.width != null, - isHeightSet = 'height' in options && options.width != null, - isLeftSet = 'left' in options, - isTopSet = 'top' in options, - origLeft = isLeftSet ? this.left : 0, - origTop = isTopSet ? this.top : 0; - - if (!isWidthSet || !isHeightSet) { - extend(this, this._parseDimensions()); - if (isWidthSet) { - this.width = options.width; - } - if (isHeightSet) { - this.height = options.height; - } - } - else { //Set center location relative to given height/width if not specified - if (!isTopSet) { - this.top = this.height / 2; - } - if (!isLeftSet) { - this.left = this.width / 2; - } - } - this.pathOffset = this.pathOffset || - // Save top-left coords as offset - this._calculatePathOffset(origLeft, origTop); - }, - - /** - * @private - * @param {Number} origLeft Original left position - * @param {Number} origTop Original top position - */ - _calculatePathOffset: function (origLeft, origTop) { - return { - x: this.left - origLeft - (this.width / 2), - y: this.top - origTop - (this.height / 2) - }; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render path on - */ - _render: function(ctx, noTransform) { - var current, // current instruction - previous = null, - subpathStartX = 0, - subpathStartY = 0, - x = 0, // current x - y = 0, // current y - controlX = 0, // current control point x - controlY = 0, // current control point y - tempX, - tempY, - tempControlX, - tempControlY, - l = -((this.width / 2) + this.pathOffset.x), - t = -((this.height / 2) + this.pathOffset.y); - - if (noTransform) { - l += this.width / 2; - t += this.height / 2; - } - - for (var i = 0, len = this.path.length; i < len; ++i) { - - current = this.path[i]; - - switch (current[0]) { // first letter - - case 'l': // lineto, relative - x += current[1]; - y += current[2]; - ctx.lineTo(x + l, y + t); - break; - - case 'L': // lineto, absolute - x = current[1]; - y = current[2]; - ctx.lineTo(x + l, y + t); - break; - - case 'h': // horizontal lineto, relative - x += current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'H': // horizontal lineto, absolute - x = current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'v': // vertical lineto, relative - y += current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'V': // verical lineto, absolute - y = current[1]; - ctx.lineTo(x + l, y + t); - break; - - case 'm': // moveTo, relative - x += current[1]; - y += current[2]; - subpathStartX = x; - subpathStartY = y; - ctx.moveTo(x + l, y + t); - break; - - case 'M': // moveTo, absolute - x = current[1]; - y = current[2]; - subpathStartX = x; - subpathStartY = y; - ctx.moveTo(x + l, y + t); - break; - - case 'c': // bezierCurveTo, relative - tempX = x + current[5]; - tempY = y + current[6]; - controlX = x + current[3]; - controlY = y + current[4]; - ctx.bezierCurveTo( - x + current[1] + l, // x1 - y + current[2] + t, // y1 - controlX + l, // x2 - controlY + t, // y2 - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'C': // bezierCurveTo, absolute - x = current[5]; - y = current[6]; - controlX = current[3]; - controlY = current[4]; - ctx.bezierCurveTo( - current[1] + l, - current[2] + t, - controlX + l, - controlY + t, - x + l, - y + t - ); - break; - - case 's': // shorthand cubic bezierCurveTo, relative - - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - - // calculate reflection of previous control points - controlX = controlX ? (2 * x - controlX) : x; - controlY = controlY ? (2 * y - controlY) : y; - - ctx.bezierCurveTo( - controlX + l, - controlY + t, - x + current[1] + l, - y + current[2] + t, - tempX + l, - tempY + t - ); - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = x + current[1]; - controlY = y + current[2]; - - x = tempX; - y = tempY; - break; - - case 'S': // shorthand cubic bezierCurveTo, absolute - tempX = current[3]; - tempY = current[4]; - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - ctx.bezierCurveTo( - controlX + l, - controlY + t, - current[1] + l, - current[2] + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - - // set control point to 2nd one of this command - // "... the first control point is assumed to be - // the reflection of the second control point on - // the previous command relative to the current point." - controlX = current[1]; - controlY = current[2]; - - break; - - case 'q': // quadraticCurveTo, relative - // transform to absolute x,y - tempX = x + current[3]; - tempY = y + current[4]; - - controlX = x + current[1]; - controlY = y + current[2]; - - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'Q': // quadraticCurveTo, absolute - tempX = current[3]; - tempY = current[4]; - - ctx.quadraticCurveTo( - current[1] + l, - current[2] + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - controlX = current[1]; - controlY = current[2]; - break; - - case 't': // shorthand quadraticCurveTo, relative - - // transform to absolute x,y - tempX = x + current[1]; - tempY = y + current[2]; - - if (previous[0].match(/[QqTt]/) === null) { - // If there is no previous command or if the previous command was not a Q, q, T or t, - // assume the control point is coincident with the current point - controlX = x; - controlY = y; - } - else if (previous[0] === 't') { - // calculate reflection of previous control points for t - controlX = 2 * x - tempControlX; - controlY = 2 * y - tempControlY; - } - else if (previous[0] === 'q') { - // calculate reflection of previous control points for q - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - } - - tempControlX = controlX; - tempControlY = controlY; - - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - controlX = x + current[1]; - controlY = y + current[2]; - break; - - case 'T': - tempX = current[1]; - tempY = current[2]; - - // calculate reflection of previous control points - controlX = 2 * x - controlX; - controlY = 2 * y - controlY; - ctx.quadraticCurveTo( - controlX + l, - controlY + t, - tempX + l, - tempY + t - ); - x = tempX; - y = tempY; - break; - - case 'a': - // TODO: optimize this - drawArc(ctx, x + l, y + t, [ - current[1], - current[2], - current[3], - current[4], - current[5], - current[6] + x + l, - current[7] + y + t - ]); - x += current[6]; - y += current[7]; - break; - - case 'A': - // TODO: optimize this - drawArc(ctx, x + l, y + t, [ - current[1], - current[2], - current[3], - current[4], - current[5], - current[6] + l, - current[7] + t - ]); - x = current[6]; - y = current[7]; - break; - - case 'z': - case 'Z': - x = subpathStartX; - y = subpathStartY; - ctx.closePath(); - break; - } - previous = current; - } - }, - - /** - * Renders path on a specified context - * @param {CanvasRenderingContext2D} ctx context to render path on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - render: function(ctx, noTransform) { - // do not render if object is not visible - if (!this.visible) { - return; - } - - ctx.save(); - if (noTransform) { - ctx.translate(-this.width/2, -this.height/2); - } - var m = this.transformMatrix; - - if (m) { - ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - } - if (!noTransform) { - this.transform(ctx); - } - this._setStrokeStyles(ctx); - this._setFillStyles(ctx); - this._setShadow(ctx); - this.clipTo && fabric.util.clipContext(this, ctx); - ctx.beginPath(); - ctx.globalAlpha = this.group ? (ctx.globalAlpha * this.opacity) : this.opacity; - this._render(ctx, noTransform); - this._renderFill(ctx); - this._renderStroke(ctx); - this.clipTo && ctx.restore(); - this._removeShadow(ctx); - ctx.restore(); - }, - - /** - * Returns string representation of an instance - * @return {String} string representation of an instance - */ - toString: function() { - return '#'; - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - var o = extend(this.callSuper('toObject', propertiesToInclude), { - path: this.path.map(function(item) { return item.slice() }), - pathOffset: this.pathOffset - }); - if (this.sourcePath) { - o.sourcePath = this.sourcePath; - } - if (this.transformMatrix) { - o.transformMatrix = this.transformMatrix; - } - return o; - }, - - /** - * Returns dataless object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - var o = this.toObject(propertiesToInclude); - if (this.sourcePath) { - o.path = this.sourcePath; - } - delete o.sourcePath; - return o; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var chunks = [], - markup = this._createBaseSVGMarkup(); - - for (var i = 0, len = this.path.length; i < len; i++) { - chunks.push(this.path[i].join(' ')); - } - var path = chunks.join(' '); - - markup.push( - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns number representation of an instance complexity - * @return {Number} complexity of this instance - */ - complexity: function() { - return this.path.length; - }, - - /** - * @private - */ - _parsePath: function() { - var result = [ ], - coords = [ ], - currentPath, - parsed, - re = /([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig, - match, - coordsStr; - - for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) { - currentPath = this.path[i]; - - coordsStr = currentPath.slice(1).trim(); - coords.length = 0; - - while ((match = re.exec(coordsStr))) { - coords.push(match[0]); - } - - coordsParsed = [ currentPath.charAt(0) ]; - - for (var j = 0, jlen = coords.length; j < jlen; j++) { - parsed = parseFloat(coords[j]); - if (!isNaN(parsed)) { - coordsParsed.push(parsed); - } - } - - var command = coordsParsed[0], - commandLength = commandLengths[command.toLowerCase()], - repeatedCommand = repeatedCommands[command] || command; - - if (coordsParsed.length - 1 > commandLength) { - for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) { - result.push([ command ].concat(coordsParsed.slice(k, k + commandLength))); - command = repeatedCommand; - } - } - else { - result.push(coordsParsed); - } - } - - return result; - }, - - /** - * @private - */ - _parseDimensions: function() { - var aX = [], - aY = [], - previous = { }; - - this.path.forEach(function(item, i) { - this._getCoordsFromCommand(item, i, aX, aY, previous); - }, this); - - var minX = min(aX), - minY = min(aY), - maxX = max(aX), - maxY = max(aY), - deltaX = maxX - minX, - deltaY = maxY - minY, - - o = { - left: this.left + (minX + deltaX / 2), - top: this.top + (minY + deltaY / 2), - width: deltaX, - height: deltaY - }; - - return o; - }, - - _getCoordsFromCommand: function(item, i, aX, aY, previous) { - var isLowerCase = false; - - if (item[0] !== 'H') { - previous.x = (i === 0) ? getX(item) : getX(this.path[i - 1]); - } - if (item[0] !== 'V') { - previous.y = (i === 0) ? getY(item) : getY(this.path[i - 1]); - } - - // lowercased letter denotes relative position; - // transform to absolute - if (item[0] === item[0].toLowerCase()) { - isLowerCase = true; - } - - var xy = this._getXY(item, isLowerCase, previous), - val; - - val = parseInt(xy.x, 10); - if (!isNaN(val)) { - aX.push(val); - } - - val = parseInt(xy.y, 10); - if (!isNaN(val)) { - aY.push(val); - } - }, - - _getXY: function(item, isLowerCase, previous) { - - // last 2 items in an array of coordinates are the actualy x/y (except H/V), collect them - // TODO (kangax): support relative h/v commands - - var x = isLowerCase - ? previous.x + getX(item) - : item[0] === 'V' - ? previous.x - : getX(item), - - y = isLowerCase - ? previous.y + getY(item) - : item[0] === 'H' - ? previous.y - : getY(item); - - return { x: x, y: y }; - } - }); - - /** - * Creates an instance of fabric.Path from an object - * @static - * @memberOf fabric.Path - * @param {Object} object - * @param {Function} callback Callback to invoke when an fabric.Path instance is created - */ - fabric.Path.fromObject = function(object, callback) { - if (typeof object.path === 'string') { - fabric.loadSVGFromURL(object.path, function (elements) { - var path = elements[0], - pathUrl = object.path; - - delete object.path; - - fabric.util.object.extend(path, object); - path.setSourcePath(pathUrl); - - callback(path); - }); - } - else { - callback(new fabric.Path(object.path, object)); - } - }; - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`) - * @static - * @memberOf fabric.Path - * @see http://www.w3.org/TR/SVG/paths.html#PathElement - */ - fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']); - - /** - * Creates an instance of fabric.Path from an SVG element - * @static - * @memberOf fabric.Path - * @param {SVGElement} element to parse - * @param {Function} callback Callback to invoke when an fabric.Path instance is created - * @param {Object} [options] Options object - */ - fabric.Path.fromElement = function(element, callback, options) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES); - callback && callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options))); - }; - /* _FROM_SVG_END_ */ - - /** - * Indicates that instances of this type are async - * @static - * @memberOf fabric.Path - * @type Boolean - * @default - */ - fabric.Path.async = true; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - invoke = fabric.util.array.invoke, - parentToObject = fabric.Object.prototype.toObject; - - if (fabric.PathGroup) { - fabric.warn('fabric.PathGroup is already defined'); - return; - } - - /** - * Path group class - * @class fabric.PathGroup - * @extends fabric.Path - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1/#path_and_pathgroup} - * @see {@link fabric.PathGroup#initialize} for constructor definition - */ - fabric.PathGroup = fabric.util.createClass(fabric.Path, /** @lends fabric.PathGroup.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'path-group', - - /** - * Fill value - * @type String - * @default - */ - fill: '', - - /** - * Constructor - * @param {Array} paths - * @param {Object} [options] Options object - * @return {fabric.PathGroup} thisArg - */ - initialize: function(paths, options) { - - options = options || { }; - this.paths = paths || [ ]; - - for (var i = this.paths.length; i--; ) { - this.paths[i].group = this; - } - - this.setOptions(options); - - if (options.widthAttr) { - this.scaleX = options.widthAttr / options.width; - } - if (options.heightAttr) { - this.scaleY = options.heightAttr / options.height; - } - - this.setCoords(); - - if (options.sourcePath) { - this.setSourcePath(options.sourcePath); - } - }, - - /** - * Renders this group on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render this instance on - */ - render: function(ctx) { - // do not render if object is not visible - if (!this.visible) { - return; - } - - ctx.save(); - - var m = this.transformMatrix; - - if (m) { - ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - } - this.transform(ctx); - - this._setShadow(ctx); - this.clipTo && fabric.util.clipContext(this, ctx); - for (var i = 0, l = this.paths.length; i < l; ++i) { - this.paths[i].render(ctx, true); - } - this.clipTo && ctx.restore(); - this._removeShadow(ctx); - ctx.restore(); - }, - - /** - * Sets certain property to a certain value - * @param {String} prop - * @param {Any} value - * @return {fabric.PathGroup} thisArg - */ - _set: function(prop, value) { - - if (prop === 'fill' && value && this.isSameColor()) { - var i = this.paths.length; - while (i--) { - this.paths[i]._set(prop, value); - } - } - - return this.callSuper('_set', prop, value); - }, - - /** - * Returns object representation of this path group - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - var o = extend(parentToObject.call(this, propertiesToInclude), { - paths: invoke(this.getObjects(), 'toObject', propertiesToInclude) - }); - if (this.sourcePath) { - o.sourcePath = this.sourcePath; - } - return o; - }, - - /** - * Returns dataless object representation of this path group - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} dataless object representation of an instance - */ - toDatalessObject: function(propertiesToInclude) { - var o = this.toObject(propertiesToInclude); - if (this.sourcePath) { - o.paths = this.sourcePath; - } - return o; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var objects = this.getObjects(), - translatePart = 'translate(' + this.left + ' ' + this.top + ')', - markup = [ - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ]; - - for (var i = 0, len = objects.length; i < len; i++) { - markup.push(objects[i].toSVG(reviver)); - } - markup.push('\n'); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns a string representation of this path group - * @return {String} string representation of an object - */ - toString: function() { - return '#'; - }, - - /** - * Returns true if all paths in this group are of same color - * @return {Boolean} true if all paths are of the same color (`fill`) - */ - isSameColor: function() { - var firstPathFill = (this.getObjects()[0].get('fill') || '').toLowerCase(); - return this.getObjects().every(function(path) { - return (path.get('fill') || '').toLowerCase() === firstPathFill; - }); - }, - - /** - * Returns number representation of object's complexity - * @return {Number} complexity - */ - complexity: function() { - return this.paths.reduce(function(total, path) { - return total + ((path && path.complexity) ? path.complexity() : 0); - }, 0); - }, - - /** - * Returns all paths in this path group - * @return {Array} array of path objects included in this path group - */ - getObjects: function() { - return this.paths; - } - }); - - /** - * Creates fabric.PathGroup instance from an object representation - * @static - * @memberOf fabric.PathGroup - * @param {Object} object Object to create an instance from - * @param {Function} callback Callback to invoke when an fabric.PathGroup instance is created - */ - fabric.PathGroup.fromObject = function(object, callback) { - if (typeof object.paths === 'string') { - fabric.loadSVGFromURL(object.paths, function (elements) { - - var pathUrl = object.paths; - delete object.paths; - - var pathGroup = fabric.util.groupSVGElements(elements, object, pathUrl); - - callback(pathGroup); - }); - } - else { - fabric.util.enlivenObjects(object.paths, function(enlivenedObjects) { - delete object.paths; - callback(new fabric.PathGroup(enlivenedObjects, object)); - }); - } - }; - - /** - * Indicates that instances of this type are async - * @static - * @memberOf fabric.PathGroup - * @type Boolean - * @default - */ - fabric.PathGroup.async = true; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global){ - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - min = fabric.util.array.min, - max = fabric.util.array.max, - invoke = fabric.util.array.invoke; - - if (fabric.Group) { - return; - } - - // lock-related properties, for use in fabric.Group#get - // to enable locking behavior on group - // when one of its objects has lock-related properties set - var _lockProperties = { - lockMovementX: true, - lockMovementY: true, - lockRotation: true, - lockScalingX: true, - lockScalingY: true, - lockUniScaling: true - }; - - /** - * Group class - * @class fabric.Group - * @extends fabric.Object - * @mixes fabric.Collection - * @tutorial {@link http://fabricjs.com/fabric-intro-part-3/#groups} - * @see {@link fabric.Group#initialize} for constructor definition - */ - fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'group', - - /** - * Constructor - * @param {Object} objects Group objects - * @param {Object} [options] Options object - * @return {Object} thisArg - */ - initialize: function(objects, options) { - options = options || { }; - - this._objects = objects || []; - for (var i = this._objects.length; i--; ) { - this._objects[i].group = this; - } - - this.originalState = { }; - this.callSuper('initialize'); - - this._calcBounds(); - this._updateObjectsCoords(); - - if (options) { - extend(this, options); - } - this._setOpacityIfSame(); - - this.setCoords(); - this.saveCoords(); - }, - - /** - * @private - */ - _updateObjectsCoords: function() { - this.forEachObject(this._updateObjectCoords, this); - }, - - /** - * @private - */ - _updateObjectCoords: function(object) { - var objectLeft = object.getLeft(), - objectTop = object.getTop(); - - object.set({ - originalLeft: objectLeft, - originalTop: objectTop, - left: objectLeft - this.left, - top: objectTop - this.top - }); - - object.setCoords(); - - // do not display corners of objects enclosed in a group - object.__origHasControls = object.hasControls; - object.hasControls = false; - }, - - /** - * Returns string represenation of a group - * @return {String} - */ - toString: function() { - return '#'; - }, - - /** - * Adds an object to a group; Then recalculates group's dimension, position. - * @param {Object} object - * @return {fabric.Group} thisArg - * @chainable - */ - addWithUpdate: function(object) { - this._restoreObjectsState(); - if (object) { - this._objects.push(object); - object.group = this; - } - // since _restoreObjectsState set objects inactive - this.forEachObject(this._setObjectActive, this); - this._calcBounds(); - this._updateObjectsCoords(); - return this; - }, - - /** - * @private - */ - _setObjectActive: function(object) { - object.set('active', true); - object.group = this; - }, - - /** - * Removes an object from a group; Then recalculates group's dimension, position. - * @param {Object} object - * @return {fabric.Group} thisArg - * @chainable - */ - removeWithUpdate: function(object) { - this._moveFlippedObject(object); - this._restoreObjectsState(); - - // since _restoreObjectsState set objects inactive - this.forEachObject(this._setObjectActive, this); - - this.remove(object); - this._calcBounds(); - this._updateObjectsCoords(); - - return this; - }, - - /** - * @private - */ - _onObjectAdded: function(object) { - object.group = this; - }, - - /** - * @private - */ - _onObjectRemoved: function(object) { - delete object.group; - object.set('active', false); - }, - - /** - * Properties that are delegated to group objects when reading/writing - * @param {Object} delegatedProperties - */ - delegatedProperties: { - fill: true, - opacity: true, - fontFamily: true, - fontWeight: true, - fontSize: true, - fontStyle: true, - lineHeight: true, - textDecoration: true, - textAlign: true, - backgroundColor: true - }, - - /** - * @private - */ - _set: function(key, value) { - if (key in this.delegatedProperties) { - var i = this._objects.length; - this[key] = value; - while (i--) { - this._objects[i].set(key, value); - } - } - else { - this[key] = value; - } - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - objects: invoke(this._objects, 'toObject', propertiesToInclude) - }); - }, - - /** - * Renders instance on a given context - * @param {CanvasRenderingContext2D} ctx context to render instance on - */ - render: function(ctx) { - // do not render if object is not visible - if (!this.visible) { - return; - } - - ctx.save(); - this.clipTo && fabric.util.clipContext(this, ctx); - - // the array is now sorted in order of highest first, so start from end - for (var i = 0, len = this._objects.length; i < len; i++) { - this._renderObject(this._objects[i], ctx); - } - - this.clipTo && ctx.restore(); - - ctx.restore(); - }, - - /** - * Renders controls and borders for the object - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Boolean} [noTransform] When true, context is not transformed - */ - _renderControls: function(ctx, noTransform) { - this.callSuper('_renderControls', ctx, noTransform); - for (var i = 0, len = this._objects.length; i < len; i++) { - this._objects[i]._renderControls(ctx); - } - }, - - /** - * @private - */ - _renderObject: function(object, ctx) { - var originalHasRotatingPoint = object.hasRotatingPoint; - - // do not render if object is not visible - if (!object.visible) { - return; - } - - object.hasRotatingPoint = false; - - object.render(ctx); - - object.hasRotatingPoint = originalHasRotatingPoint; - }, - - /** - * Retores original state of each of group objects (original state is that which was before group was created). - * @private - * @return {fabric.Group} thisArg - * @chainable - */ - _restoreObjectsState: function() { - this._objects.forEach(this._restoreObjectState, this); - return this; - }, - - /** - * Moves a flipped object to the position where it's displayed - * @private - * @param {fabric.Object} object - * @return {fabric.Group} thisArg - */ - _moveFlippedObject: function(object) { - var oldOriginX = object.get('originX'), - oldOriginY = object.get('originY'), - center = object.getCenterPoint(); - - object.set({ - originX: 'center', - originY: 'center', - left: center.x, - top: center.y - }); - - this._toggleFlipping(object); - - var newOrigin = object.getPointByOrigin(oldOriginX, oldOriginY); - - object.set({ - originX: oldOriginX, - originY: oldOriginY, - left: newOrigin.x, - top: newOrigin.y - }); - - return this; - }, - - /** - * @private - */ - _toggleFlipping: function(object) { - if (this.flipX) { - object.toggle('flipX'); - object.set('left', -object.get('left')); - object.setAngle(-object.getAngle()); - } - if (this.flipY) { - object.toggle('flipY'); - object.set('top', -object.get('top')); - object.setAngle(-object.getAngle()); - } - }, - - /** - * Restores original state of a specified object in group - * @private - * @param {fabric.Object} object - * @return {fabric.Group} thisArg - */ - _restoreObjectState: function(object) { - this._setObjectPosition(object); - - object.setCoords(); - object.hasControls = object.__origHasControls; - delete object.__origHasControls; - object.set('active', false); - object.setCoords(); - delete object.group; - - return this; - }, - - /** - * @private - */ - _setObjectPosition: function(object) { - var groupLeft = this.getLeft(), - groupTop = this.getTop(), - rotated = this._getRotatedLeftTop(object); - - object.set({ - angle: object.getAngle() + this.getAngle(), - left: groupLeft + rotated.left, - top: groupTop + rotated.top, - scaleX: object.get('scaleX') * this.get('scaleX'), - scaleY: object.get('scaleY') * this.get('scaleY') - }); - }, - - /** - * @private - */ - _getRotatedLeftTop: function(object) { - var groupAngle = this.getAngle() * (Math.PI / 180); - return { - left: (-Math.sin(groupAngle) * object.getTop() * this.get('scaleY') + - Math.cos(groupAngle) * object.getLeft() * this.get('scaleX')), - - top: (Math.cos(groupAngle) * object.getTop() * this.get('scaleY') + - Math.sin(groupAngle) * object.getLeft() * this.get('scaleX')) - }; - }, - - /** - * Destroys a group (restoring state of its objects) - * @return {fabric.Group} thisArg - * @chainable - */ - destroy: function() { - this._objects.forEach(this._moveFlippedObject, this); - return this._restoreObjectsState(); - }, - - /** - * Saves coordinates of this instance (to be used together with `hasMoved`) - * @saveCoords - * @return {fabric.Group} thisArg - * @chainable - */ - saveCoords: function() { - this._originalLeft = this.get('left'); - this._originalTop = this.get('top'); - return this; - }, - - /** - * Checks whether this group was moved (since `saveCoords` was called last) - * @return {Boolean} true if an object was moved (since fabric.Group#saveCoords was called) - */ - hasMoved: function() { - return this._originalLeft !== this.get('left') || - this._originalTop !== this.get('top'); - }, - - /** - * Sets coordinates of all group objects - * @return {fabric.Group} thisArg - * @chainable - */ - setObjectsCoords: function() { - this.forEachObject(function(object) { - object.setCoords(); - }); - return this; - }, - - /** - * @private - */ - _setOpacityIfSame: function() { - var objects = this.getObjects(), - firstValue = objects[0] ? objects[0].get('opacity') : 1, - isSameOpacity = objects.every(function(o) { - return o.get('opacity') === firstValue; - }); - - if (isSameOpacity) { - this.opacity = firstValue; - } - }, - - /** - * @private - */ - _calcBounds: function(onlyWidthHeight) { - var aX = [], - aY = [], - o; - - for (var i = 0, len = this._objects.length; i < len; ++i) { - o = this._objects[i]; - o.setCoords(); - for (var prop in o.oCoords) { - aX.push(o.oCoords[prop].x); - aY.push(o.oCoords[prop].y); - } - } - - this.set(this._getBounds(aX, aY, onlyWidthHeight)); - }, - - /** - * @private - */ - _getBounds: function(aX, aY, onlyWidthHeight) { - var ivt = fabric.util.invertTransform(this.getViewportTransform()), - minXY = fabric.util.transformPoint(new fabric.Point(min(aX), min(aY)), ivt), - maxXY = fabric.util.transformPoint(new fabric.Point(max(aX), max(aY)), ivt), - obj = { - width: (maxXY.x - minXY.x) || 0, - height: (maxXY.y - minXY.y) || 0 - }; - - if (!onlyWidthHeight) { - obj.left = (minXY.x + maxXY.x) / 2 || 0; - obj.top = (minXY.y + maxXY.y) / 2 || 0; - } - return obj; - }, - - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = [ - //jscs:disable validateIndentation - '\n' - //jscs:enable validateIndentation - ]; - - for (var i = 0, len = this._objects.length; i < len; i++) { - markup.push(this._objects[i].toSVG(reviver)); - } - - markup.push('\n'); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns requested property - * @param {String} prop Property to get - * @return {Any} - */ - get: function(prop) { - if (prop in _lockProperties) { - if (this[prop]) { - return this[prop]; - } - else { - for (var i = 0, len = this._objects.length; i < len; i++) { - if (this._objects[i][prop]) { - return true; - } - } - return false; - } - } - else { - if (prop in this.delegatedProperties) { - return this._objects[0] && this._objects[0].get(prop); - } - return this[prop]; - } - } - }); - - /** - * Returns {@link fabric.Group} instance from an object representation - * @static - * @memberOf fabric.Group - * @param {Object} object Object to create a group from - * @param {Function} [callback] Callback to invoke when an group instance is created - * @return {fabric.Group} An instance of fabric.Group - */ - fabric.Group.fromObject = function(object, callback) { - fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) { - delete object.objects; - callback && callback(new fabric.Group(enlivenedObjects, object)); - }); - }; - - /** - * Indicates that instances of this type are async - * @static - * @memberOf fabric.Group - * @type Boolean - * @default - */ - fabric.Group.async = true; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var extend = fabric.util.object.extend; - - if (!global.fabric) { - global.fabric = { }; - } - - if (global.fabric.Image) { - fabric.warn('fabric.Image is already defined.'); - return; - } - - /** - * Image class - * @class fabric.Image - * @extends fabric.Object - * @tutorial {@link http://fabricjs.com/fabric-intro-part-1/#images} - * @see {@link fabric.Image#initialize} for constructor definition - */ - fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ { - - /** - * Type of an object - * @type String - * @default - */ - type: 'image', - - /** - * crossOrigin value (one of "", "anonymous", "allow-credentials") - * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes - * @type String - * @default - */ - crossOrigin: '', - - /** - * Constructor - * @param {HTMLImageElement | String} element Image element - * @param {Object} [options] Options object - * @return {fabric.Image} thisArg - */ - initialize: function(element, options) { - options || (options = { }); - - this.filters = [ ]; - - this.callSuper('initialize', options); - - this._initElement(element, options); - this._initConfig(options); - - if (options.filters) { - this.filters = options.filters; - this.applyFilters(); - } - }, - - /** - * Returns image element which this instance if based on - * @return {HTMLImageElement} Image element - */ - getElement: function() { - return this._element; - }, - - /** - * Sets image element for this instance to a specified one. - * If filters defined they are applied to new image. - * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area. - * @param {HTMLImageElement} element - * @param {Function} [callback] Callback is invoked when all filters have been applied and new image is generated - * @return {fabric.Image} thisArg - * @chainable - */ - setElement: function(element, callback) { - this._element = element; - this._originalElement = element; - this._initConfig(); - - if (this.filters.length !== 0) { - this.applyFilters(callback); - } - - return this; - }, - - /** - * Sets crossOrigin value (on an instance and corresponding image element) - * @return {fabric.Image} thisArg - * @chainable - */ - setCrossOrigin: function(value) { - this.crossOrigin = value; - this._element.crossOrigin = value; - - return this; - }, - - /** - * Returns original size of an image - * @return {Object} Object with "width" and "height" properties - */ - getOriginalSize: function() { - var element = this.getElement(); - return { - width: element.width, - height: element.height - }; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _stroke: function(ctx) { - ctx.save(); - this._setStrokeStyles(ctx); - ctx.beginPath(); - ctx.strokeRect(-this.width / 2, -this.height / 2, this.width, this.height); - ctx.closePath(); - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderDashedStroke: function(ctx) { - var x = -this.width / 2, - y = -this.height / 2, - w = this.width, - h = this.height; - - ctx.save(); - this._setStrokeStyles(ctx); - - ctx.beginPath(); - fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray); - fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray); - ctx.closePath(); - ctx.restore(); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - src: this._originalElement.src || this._originalElement._src, - filters: this.filters.map(function(filterObj) { - return filterObj && filterObj.toObject(); - }), - crossOrigin: this.crossOrigin - }); - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = [], x = -this.width / 2, y = -this.height / 2; - if (this.group) { - x = this.left; - y = this.top; - } - markup.push( - '\n', - '\n' - ); - - if (this.stroke || this.strokeDashArray) { - var origFill = this.fill; - this.fill = null; - markup.push( - '\n' - ); - this.fill = origFill; - } - - markup.push('\n'); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - /* _TO_SVG_END_ */ - - /** - * Returns source of an image - * @return {String} Source of an image - */ - getSrc: function() { - if (this.getElement()) { - return this.getElement().src || this.getElement()._src; - } - }, - - /** - * Returns string representation of an instance - * @return {String} String representation of an instance - */ - toString: function() { - return '#'; - }, - - /** - * Returns a clone of an instance - * @param {Function} callback Callback is invoked with a clone as a first argument - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - */ - clone: function(callback, propertiesToInclude) { - this.constructor.fromObject(this.toObject(propertiesToInclude), callback); - }, - - /** - * Applies filters assigned to this image (from "filters" array) - * @mthod applyFilters - * @param {Function} callback Callback is invoked when all filters have been applied and new image is generated - * @return {fabric.Image} thisArg - * @chainable - */ - applyFilters: function(callback) { - - if (!this._originalElement) { - return; - } - - if (this.filters.length === 0) { - this._element = this._originalElement; - callback && callback(); - return; - } - - var imgEl = this._originalElement, - canvasEl = fabric.util.createCanvasElement(), - replacement = fabric.util.createImage(), - _this = this; - - canvasEl.width = imgEl.width; - canvasEl.height = imgEl.height; - - canvasEl.getContext('2d').drawImage(imgEl, 0, 0, imgEl.width, imgEl.height); - - this.filters.forEach(function(filter) { - filter && filter.applyTo(canvasEl); - }); - - /** @ignore */ - - replacement.width = imgEl.width; - replacement.height = imgEl.height; - - if (fabric.isLikelyNode) { - replacement.src = canvasEl.toBuffer(undefined, fabric.Image.pngCompression); - - // onload doesn't fire in some node versions, so we invoke callback manually - _this._element = replacement; - callback && callback(); - } - else { - replacement.onload = function() { - _this._element = replacement; - callback && callback(); - replacement.onload = canvasEl = imgEl = null; - }; - replacement.src = canvasEl.toDataURL('image/png'); - } - - return this; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx, noTransform) { - this._element && - ctx.drawImage( - this._element, - noTransform ? this.left : -this.width/2, - noTransform ? this.top : -this.height/2, - this.width, - this.height - ); - this._renderStroke(ctx); - }, - - /** - * @private - */ - _resetWidthHeight: function() { - var element = this.getElement(); - - this.set('width', element.width); - this.set('height', element.height); - }, - - /** - * The Image class's initialization method. This method is automatically - * called by the constructor. - * @private - * @param {HTMLImageElement|String} element The element representing the image - */ - _initElement: function(element) { - this.setElement(fabric.util.getById(element)); - fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS); - }, - - /** - * @private - * @param {Object} [options] Options object - */ - _initConfig: function(options) { - options || (options = { }); - this.setOptions(options); - this._setWidthHeight(options); - if (this._element && this.crossOrigin) { - this._element.crossOrigin = this.crossOrigin; - } - }, - - /** - * @private - * @param {Object} object Object with filters property - * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created - */ - _initFilters: function(object, callback) { - if (object.filters && object.filters.length) { - fabric.util.enlivenObjects(object.filters, function(enlivenedObjects) { - callback && callback(enlivenedObjects); - }, 'fabric.Image.filters'); - } - else { - callback && callback(); - } - }, - - /** - * @private - * @param {Object} [options] Object with width/height properties - */ - _setWidthHeight: function(options) { - this.width = 'width' in options - ? options.width - : (this.getElement() - ? this.getElement().width || 0 - : 0); - - this.height = 'height' in options - ? options.height - : (this.getElement() - ? this.getElement().height || 0 - : 0); - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function() { - return 1; - } - }); - - /** - * Default CSS class name for canvas - * @static - * @type String - * @default - */ - fabric.Image.CSS_CANVAS = 'canvas-img'; - - /** - * Alias for getSrc - * @static - */ - fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc; - - /** - * Creates an instance of fabric.Image from its object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when an image instance is created - */ - fabric.Image.fromObject = function(object, callback) { - fabric.util.loadImage(object.src, function(img) { - fabric.Image.prototype._initFilters.call(object, object, function(filters) { - object.filters = filters || [ ]; - var instance = new fabric.Image(img, object); - callback && callback(instance); - }); - }, null, object.crossOrigin); - }; - - /** - * Creates an instance of fabric.Image from an URL string - * @static - * @param {String} url URL to create an image from - * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument) - * @param {Object} [imgOptions] Options object - */ - fabric.Image.fromURL = function(url, callback, imgOptions) { - fabric.util.loadImage(url, function(img) { - callback(new fabric.Image(img, imgOptions)); - }, null, imgOptions && imgOptions.crossOrigin); - }; - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement}) - * @static - * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement} - */ - fabric.Image.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y width height xlink:href'.split(' ')); - - /** - * Returns {@link fabric.Image} instance from an SVG element - * @static - * @param {SVGElement} element Element to parse - * @param {Function} callback Callback to execute when fabric.Image object is created - * @param {Object} [options] Options object - * @return {fabric.Image} Instance of fabric.Image - */ - fabric.Image.fromElement = function(element, callback, options) { - var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES); - - fabric.Image.fromURL(parsedAttributes['xlink:href'], callback, - extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes)); - }; - /* _FROM_SVG_END_ */ - - /** - * Indicates that instances of this type are async - * @static - * @type Boolean - * @default - */ - fabric.Image.async = true; - - /** - * Indicates compression level used when generating PNG under Node (in applyFilters). Any of 0-9 - * @static - * @type Number - * @default - */ - fabric.Image.pngCompression = 1; - -})(typeof exports !== 'undefined' ? exports : this); - - -/** - * @namespace fabric.Image.filters - * @memberOf fabric.Image - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#image_filters} - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - */ -fabric.Image.filters = fabric.Image.filters || { }; - -/** - * Root filter class from which all filter classes inherit from - * @class fabric.Image.filters.BaseFilter - * @memberOf fabric.Image.filters - */ -fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'BaseFilter', - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return { type: this.type }; - }, - - /** - * Returns a JSON representation of an instance - * @return {Object} JSON - */ - toJSON: function() { - // delegate, not alias - return this.toObject(); - } -}); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Brightness filter class - * @class fabric.Image.filters.Brightness - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Brightness({ - * brightness: 200 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Brightness = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Brightness', - - /** - * Constructor - * @memberOf fabric.Image.filters.Brightness.prototype - * @param {Object} [options] Options object - * @param {Number} [options.brightness=0] Value to brighten the image up (0..255) - */ - initialize: function(options) { - options = options || { }; - this.brightness = options.brightness || 0; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - brightness = this.brightness; - - for (var i = 0, len = data.length; i < len; i += 4) { - data[i] += brightness; - data[i + 1] += brightness; - data[i + 2] += brightness; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - brightness: this.brightness - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness - */ - fabric.Image.filters.Brightness.fromObject = function(object) { - return new fabric.Image.filters.Brightness(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Adapted from html5rocks article - * @class fabric.Image.filters.Convolute - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example Sharpen filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 0, -1, 0, - * -1, 5, -1, - * 0, -1, 0 ] - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - * @example Blur filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 1/9, 1/9, 1/9, - * 1/9, 1/9, 1/9, - * 1/9, 1/9, 1/9 ] - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - * @example Emboss filter - * var filter = new fabric.Image.filters.Convolute({ - * matrix: [ 1, 1, 1, - * 1, 0.7, -1, - * -1, -1, -1 ] - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - * @example Emboss filter with opaqueness - * var filter = new fabric.Image.filters.Convolute({ - * opaque: true, - * matrix: [ 1, 1, 1, - * 1, 0.7, -1, - * -1, -1, -1 ] - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Convolute = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Convolute', - - /** - * Constructor - * @memberOf fabric.Image.filters.Convolute.prototype - * @param {Object} [options] Options object - * @param {Boolean} [options.opaque=false] Opaque value (true/false) - * @param {Array} [options.matrix] Filter matrix - */ - initialize: function(options) { - options = options || { }; - - this.opaque = options.opaque; - this.matrix = options.matrix || [ - 0, 0, 0, - 0, 1, 0, - 0, 0, 0 - ]; - - var canvasEl = fabric.util.createCanvasElement(); - this.tmpCtx = canvasEl.getContext('2d'); - }, - - /** - * @private - */ - _createImageData: function(w, h) { - return this.tmpCtx.createImageData(w, h); - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - - var weights = this.matrix, - context = canvasEl.getContext('2d'), - pixels = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - - side = Math.round(Math.sqrt(weights.length)), - halfSide = Math.floor(side/2), - src = pixels.data, - sw = pixels.width, - sh = pixels.height, - - // pad output by the convolution matrix - w = sw, - h = sh, - output = this._createImageData(w, h), - - dst = output.data, - - // go through the destination image pixels - alphaFac = this.opaque ? 1 : 0; - - for (var y = 0; y < h; y++) { - for (var x = 0; x < w; x++) { - var sy = y, - sx = x, - dstOff = (y * w + x) * 4, - // calculate the weighed sum of the source image pixels that - // fall under the convolution matrix - r = 0, g = 0, b = 0, a = 0; - - for (var cy = 0; cy < side; cy++) { - for (var cx = 0; cx < side; cx++) { - - var scy = sy + cy - halfSide, - scx = sx + cx - halfSide; - - /* jshint maxdepth:5 */ - if (scy < 0 || scy > sh || scx < 0 || scx > sw) { - continue; - } - - var srcOff = (scy * sw + scx) * 4, - wt = weights[cy * side + cx]; - - r += src[srcOff] * wt; - g += src[srcOff + 1] * wt; - b += src[srcOff + 2] * wt; - a += src[srcOff + 3] * wt; - } - } - dst[dstOff] = r; - dst[dstOff + 1] = g; - dst[dstOff + 2] = b; - dst[dstOff + 3] = a + alphaFac * (255 - a); - } - } - - context.putImageData(output, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - opaque: this.opaque, - matrix: this.matrix - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute - */ - fabric.Image.filters.Convolute.fromObject = function(object) { - return new fabric.Image.filters.Convolute(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * GradientTransparency filter class - * @class fabric.Image.filters.GradientTransparency - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.GradientTransparency#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.GradientTransparency({ - * threshold: 200 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.GradientTransparency = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.GradientTransparency.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'GradientTransparency', - - /** - * Constructor - * @memberOf fabric.Image.filters.GradientTransparency.prototype - * @param {Object} [options] Options object - * @param {Number} [options.threshold=100] Threshold value - */ - initialize: function(options) { - options = options || { }; - this.threshold = options.threshold || 100; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - threshold = this.threshold, - total = data.length; - - for (var i = 0, len = data.length; i < len; i += 4) { - data[i + 3] = threshold + 255 * (total - i) / total; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - threshold: this.threshold - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.GradientTransparency} Instance of fabric.Image.filters.GradientTransparency - */ - fabric.Image.filters.GradientTransparency.fromObject = function(object) { - return new fabric.Image.filters.GradientTransparency(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - /** - * Grayscale image filter class - * @class fabric.Image.filters.Grayscale - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Grayscale(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Grayscale = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Grayscale', - - /** - * Applies filter to canvas element - * @memberOf fabric.Image.filters.Grayscale.prototype - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - len = imageData.width * imageData.height * 4, - index = 0, - average; - - while (index < len) { - average = (data[index] + data[index + 1] + data[index + 2]) / 3; - data[index] = average; - data[index + 1] = average; - data[index + 2] = average; - index += 4; - } - - context.putImageData(imageData, 0, 0); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale - */ - fabric.Image.filters.Grayscale.fromObject = function() { - return new fabric.Image.filters.Grayscale(); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - /** - * Invert filter class - * @class fabric.Image.filters.Invert - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Invert(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Invert = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Invert', - - /** - * Applies filter to canvas element - * @memberOf fabric.Image.filters.Invert.prototype - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = data.length, i; - - for (i = 0; i < iLen; i+=4) { - data[i] = 255 - data[i]; - data[i + 1] = 255 - data[i + 1]; - data[i + 2] = 255 - data[i + 2]; - } - - context.putImageData(imageData, 0, 0); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert - */ - fabric.Image.filters.Invert.fromObject = function() { - return new fabric.Image.filters.Invert(); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Mask filter class - * See http://resources.aleph-1.com/mask/ - * @class fabric.Image.filters.Mask - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Mask#initialize} for constructor definition - */ - fabric.Image.filters.Mask = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Mask.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Mask', - - /** - * Constructor - * @memberOf fabric.Image.filters.Mask.prototype - * @param {Object} [options] Options object - * @param {fabric.Image} [options.mask] Mask image object - * @param {Number} [options.channel=0] Rgb channel (0, 1, 2 or 3) - */ - initialize: function(options) { - options = options || { }; - - this.mask = options.mask; - this.channel = [ 0, 1, 2, 3 ].indexOf(options.channel) > -1 ? options.channel : 0; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - if (!this.mask) { - return; - } - - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - maskEl = this.mask.getElement(), - maskCanvasEl = fabric.util.createCanvasElement(), - channel = this.channel, - i, - iLen = imageData.width * imageData.height * 4; - - maskCanvasEl.width = maskEl.width; - maskCanvasEl.height = maskEl.height; - - maskCanvasEl.getContext('2d').drawImage(maskEl, 0, 0, maskEl.width, maskEl.height); - - var maskImageData = maskCanvasEl.getContext('2d').getImageData(0, 0, maskEl.width, maskEl.height), - maskData = maskImageData.data; - - for (i = 0; i < iLen; i += 4) { - data[i + 3] = maskData[i + channel]; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - mask: this.mask.toObject(), - channel: this.channel - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @param {Function} [callback] Callback to invoke when a mask filter instance is created - */ - fabric.Image.filters.Mask.fromObject = function(object, callback) { - fabric.util.loadImage(object.mask.src, function(img) { - object.mask = new fabric.Image(img, object.mask); - callback && callback(new fabric.Image.filters.Mask(object)); - }); - }; - - /** - * Indicates that instances of this type are async - * @static - * @type Boolean - * @default - */ - fabric.Image.filters.Mask.async = true; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Noise filter class - * @class fabric.Image.filters.Noise - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Noise({ - * noise: 700 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Noise = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Noise', - - /** - * Constructor - * @memberOf fabric.Image.filters.Noise.prototype - * @param {Object} [options] Options object - * @param {Number} [options.noise=0] Noise value - */ - initialize: function(options) { - options = options || { }; - this.noise = options.noise || 0; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - noise = this.noise, rand; - - for (var i = 0, len = data.length; i < len; i += 4) { - - rand = (0.5 - Math.random()) * noise; - - data[i] += rand; - data[i + 1] += rand; - data[i + 2] += rand; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - noise: this.noise - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise - */ - fabric.Image.filters.Noise.fromObject = function(object) { - return new fabric.Image.filters.Noise(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Pixelate filter class - * @class fabric.Image.filters.Pixelate - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Pixelate({ - * blocksize: 8 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Pixelate = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Pixelate', - - /** - * Constructor - * @memberOf fabric.Image.filters.Pixelate.prototype - * @param {Object} [options] Options object - * @param {Number} [options.blocksize=4] Blocksize for pixelate - */ - initialize: function(options) { - options = options || { }; - this.blocksize = options.blocksize || 4; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = imageData.height, - jLen = imageData.width, - index, i, j, r, g, b, a; - - for (i = 0; i < iLen; i += this.blocksize) { - for (j = 0; j < jLen; j += this.blocksize) { - - index = (i * 4) * jLen + (j * 4); - - r = data[index]; - g = data[index + 1]; - b = data[index + 2]; - a = data[index + 3]; - - /* - blocksize: 4 - - [1,x,x,x,1] - [x,x,x,x,1] - [x,x,x,x,1] - [x,x,x,x,1] - [1,1,1,1,1] - */ - - for (var _i = i, _ilen = i + this.blocksize; _i < _ilen; _i++) { - for (var _j = j, _jlen = j + this.blocksize; _j < _jlen; _j++) { - index = (_i * 4) * jLen + (_j * 4); - data[index] = r; - data[index + 1] = g; - data[index + 2] = b; - data[index + 3] = a; - } - } - } - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - blocksize: this.blocksize - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate - */ - fabric.Image.filters.Pixelate.fromObject = function(object) { - return new fabric.Image.filters.Pixelate(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Remove white filter class - * @class fabric.Image.filters.RemoveWhite - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.RemoveWhite#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.RemoveWhite({ - * threshold: 40, - * distance: 140 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.RemoveWhite = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.RemoveWhite.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'RemoveWhite', - - /** - * Constructor - * @memberOf fabric.Image.filters.RemoveWhite.prototype - * @param {Object} [options] Options object - * @param {Number} [options.threshold=30] Threshold value - * @param {Number} [options.distance=20] Distance value - */ - initialize: function(options) { - options = options || { }; - this.threshold = options.threshold || 30; - this.distance = options.distance || 20; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - threshold = this.threshold, - distance = this.distance, - limit = 255 - threshold, - abs = Math.abs, - r, g, b; - - for (var i = 0, len = data.length; i < len; i += 4) { - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - if (r > limit && - g > limit && - b > limit && - abs(r - g) < distance && - abs(r - b) < distance && - abs(g - b) < distance - ) { - data[i + 3] = 1; - } - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - threshold: this.threshold, - distance: this.distance - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.RemoveWhite} Instance of fabric.Image.filters.RemoveWhite - */ - fabric.Image.filters.RemoveWhite.fromObject = function(object) { - return new fabric.Image.filters.RemoveWhite(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - /** - * Sepia filter class - * @class fabric.Image.filters.Sepia - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Sepia(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Sepia = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Sepia.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Sepia', - - /** - * Applies filter to canvas element - * @memberOf fabric.Image.filters.Sepia.prototype - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = data.length, i, avg; - - for (i = 0; i < iLen; i+=4) { - avg = 0.3 * data[i] + 0.59 * data[i + 1] + 0.11 * data[i + 2]; - data[i] = avg + 100; - data[i + 1] = avg + 50; - data[i + 2] = avg + 255; - } - - context.putImageData(imageData, 0, 0); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @return {fabric.Image.filters.Sepia} Instance of fabric.Image.filters.Sepia - */ - fabric.Image.filters.Sepia.fromObject = function() { - return new fabric.Image.filters.Sepia(); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }); - - /** - * Sepia2 filter class - * @class fabric.Image.filters.Sepia2 - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example - * var filter = new fabric.Image.filters.Sepia2(); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Sepia2 = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Sepia2.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Sepia2', - - /** - * Applies filter to canvas element - * @memberOf fabric.Image.filters.Sepia.prototype - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = data.length, i, r, g, b; - - for (i = 0; i < iLen; i+=4) { - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - data[i] = (r * 0.393 + g * 0.769 + b * 0.189 ) / 1.351; - data[i + 1] = (r * 0.349 + g * 0.686 + b * 0.168 ) / 1.203; - data[i + 2] = (r * 0.272 + g * 0.534 + b * 0.131 ) / 2.140; - } - - context.putImageData(imageData, 0, 0); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @return {fabric.Image.filters.Sepia2} Instance of fabric.Image.filters.Sepia2 - */ - fabric.Image.filters.Sepia2.fromObject = function() { - return new fabric.Image.filters.Sepia2(); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Tint filter class - * Adapted from https://github.com/mezzoblue/PaintbrushJS - * @class fabric.Image.filters.Tint - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @see {@link fabric.Image.filters.Tint#initialize} for constructor definition - * @see {@link http://fabricjs.com/image-filters/|ImageFilters demo} - * @example Tint filter with hex color and opacity - * var filter = new fabric.Image.filters.Tint({ - * color: '#3513B0', - * opacity: 0.5 - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - * @example Tint filter with rgba color - * var filter = new fabric.Image.filters.Tint({ - * color: 'rgba(53, 21, 176, 0.5)' - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Tint = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Tint.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Tint', - - /** - * Constructor - * @memberOf fabric.Image.filters.Tint.prototype - * @param {Object} [options] Options object - * @param {String} [options.color=#000000] Color to tint the image with - * @param {Number} [options.opacity] Opacity value that controls the tint effect's transparency (0..1) - */ - initialize: function(options) { - options = options || { }; - - this.color = options.color || '#000000'; - this.opacity = typeof options.opacity !== 'undefined' - ? options.opacity - : new fabric.Color(this.color).getAlpha(); - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = data.length, i, - tintR, tintG, tintB, - r, g, b, alpha1, - source; - - source = new fabric.Color(this.color).getSource(); - - tintR = source[0] * this.opacity; - tintG = source[1] * this.opacity; - tintB = source[2] * this.opacity; - - alpha1 = 1 - this.opacity; - - for (i = 0; i < iLen; i+=4) { - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - // alpha compositing - data[i] = tintR + r * alpha1; - data[i + 1] = tintG + g * alpha1; - data[i + 2] = tintB + b * alpha1; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - color: this.color, - opacity: this.opacity - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Tint} Instance of fabric.Image.filters.Tint - */ - fabric.Image.filters.Tint.fromObject = function(object) { - return new fabric.Image.filters.Tint(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend; - - /** - * Multiply filter class - * Adapted from http://www.laurenscorijn.com/articles/colormath-basics - * @class fabric.Image.filters.Multiply - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @example Multiply filter with hex color - * var filter = new fabric.Image.filters.Multiply({ - * color: '#F0F' - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - * @example Multiply filter with rgb color - * var filter = new fabric.Image.filters.Multiply({ - * color: 'rgb(53, 21, 176)' - * }); - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Multiply = fabric.util.createClass(fabric.Image.filters.BaseFilter, /** @lends fabric.Image.filters.Multiply.prototype */ { - - /** - * Filter type - * @param {String} type - * @default - */ - type: 'Multiply', - - /** - * Constructor - * @memberOf fabric.Image.filters.Multiply.prototype - * @param {Object} [options] Options object - * @param {String} [options.color=#000000] Color to multiply the image pixels with - */ - initialize: function(options) { - options = options || { }; - - this.color = options.color || '#000000'; - }, - - /** - * Applies filter to canvas element - * @param {Object} canvasEl Canvas element to apply filter to - */ - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - iLen = data.length, i, - source; - - source = new fabric.Color(this.color).getSource(); - - for (i = 0; i < iLen; i+=4) { - data[i] *= source[0] / 255; - data[i + 1] *= source[1] / 255; - data[i + 2] *= source[2] / 255; - } - - context.putImageData(imageData, 0, 0); - }, - - /** - * Returns object representation of an instance - * @return {Object} Object representation of an instance - */ - toObject: function() { - return extend(this.callSuper('toObject'), { - color: this.color - }); - } - }); - - /** - * Returns filter instance from an object representation - * @static - * @param {Object} object Object to create an instance from - * @return {fabric.Image.filters.Multiply} Instance of fabric.Image.filters.Multiply - */ - fabric.Image.filters.Multiply.fromObject = function(object) { - return new fabric.Image.filters.Multiply(object); - }; - -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global){ - 'use strict'; - - var fabric = global.fabric; - - /** - * Color Blend filter class - * @class fabric.Image.filter.Blend - * @memberOf fabric.Image.filters - * @extends fabric.Image.filters.BaseFilter - * @example - * var filter = new fabric.Image.filters.Blend({ - * color: '#000', - * mode: 'multiply' - * }); - * - * var filter = new fabric.Image.filters.Blend({ - * image: fabricImageObject, - * mode: 'multiply', - * alpha: 0.5 - * }); - - * object.filters.push(filter); - * object.applyFilters(canvas.renderAll.bind(canvas)); - */ - fabric.Image.filters.Blend = fabric.util.createClass({ - type: 'Blend', - - initialize: function(options){ - options = options || {}; - this.color = options.color || '#000'; - this.image = options.image || false; - this.mode = options.mode || 'multiply'; - this.alpha = options.alpha || 1; - }, - - applyTo: function(canvasEl) { - var context = canvasEl.getContext('2d'), - imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), - data = imageData.data, - tr, tg, tb, - r, g, b, - source, - isImage = false; - - if (this.image) { - // Blend images - isImage = true; - - var _el = fabric.util.createCanvasElement(); - _el.width = this.image.width; - _el.height = this.image.height; - - var tmpCanvas = new fabric.StaticCanvas(_el); - tmpCanvas.add(this.image); - var context2 = tmpCanvas.getContext('2d'); - source = context2.getImageData(0, 0, tmpCanvas.width, tmpCanvas.height).data; - } - else { - // Blend color - source = new fabric.Color(this.color).getSource(); - - tr = source[0] * this.alpha; - tg = source[1] * this.alpha; - tb = source[2] * this.alpha; - } - - for (var i = 0, len = data.length; i < len; i += 4) { - - r = data[i]; - g = data[i + 1]; - b = data[i + 2]; - - if (isImage) { - tr = source[i] * this.alpha; - tg = source[i + 1] * this.alpha; - tb = source[i + 2] * this.alpha; - } - - switch (this.mode) { - case 'multiply': - data[i] = r * tr / 255; - data[i + 1] = g * tg / 255; - data[i + 2] = b * tb / 255; - break; - case 'screen': - data[i] = 1 - (1 - r) * (1 - tr); - data[i + 1] = 1 - (1 - g) * (1 - tg); - data[i + 2] = 1 - (1 - b) * (1 - tb); - break; - case 'add': - data[i] = Math.min(255, r + tr); - data[i + 1] = Math.min(255, g + tg); - data[i + 2] = Math.min(255, b + tb); - break; - case 'diff': - case 'difference': - data[i] = Math.abs(r - tr); - data[i + 1] = Math.abs(g - tg); - data[i + 2] = Math.abs(b - tb); - break; - case 'subtract': - var _r = r - tr, - _g = g - tg, - _b = b - tb; - - data[i] = (_r < 0) ? 0 : _r; - data[i + 1] = (_g < 0) ? 0 : _g; - data[i + 2] = (_b < 0) ? 0 : _b; - break; - case 'darken': - data[i] = Math.min(r, tr); - data[i + 1] = Math.min(g, tg); - data[i + 2] = Math.min(b, tb); - break; - case 'lighten': - data[i] = Math.max(r, tr); - data[i + 1] = Math.max(g, tg); - data[i + 2] = Math.max(b, tb); - break; - } - } - - context.putImageData(imageData, 0, 0); - } - }); - - fabric.Image.filters.Blend.fromObject = function(object) { - return new fabric.Image.filters.Blend(object); - }; -})(typeof exports !== 'undefined' ? exports : this); - - -(function(global) { - - 'use strict'; - - var fabric = global.fabric || (global.fabric = { }), - extend = fabric.util.object.extend, - clone = fabric.util.object.clone, - toFixed = fabric.util.toFixed, - supportsLineDash = fabric.StaticCanvas.supports('setLineDash'); - - if (fabric.Text) { - fabric.warn('fabric.Text is already defined'); - return; - } - - var stateProperties = fabric.Object.prototype.stateProperties.concat(); - stateProperties.push( - 'fontFamily', - 'fontWeight', - 'fontSize', - 'text', - 'textDecoration', - 'textAlign', - 'fontStyle', - 'lineHeight', - 'textBackgroundColor', - 'useNative', - 'path' - ); - - /** - * Text class - * @class fabric.Text - * @extends fabric.Object - * @return {fabric.Text} thisArg - * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#text} - * @see {@link fabric.Text#initialize} for constructor definition - */ - fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ { - - /** - * Properties which when set cause object to change dimensions - * @type Object - * @private - */ - _dimensionAffectingProps: { - fontSize: true, - fontWeight: true, - fontFamily: true, - textDecoration: true, - fontStyle: true, - lineHeight: true, - stroke: true, - strokeWidth: true, - text: true - }, - - /** - * @private - */ - _reNewline: /\r?\n/, - - /** - * Retrieves object's fontSize - * @method getFontSize - * @memberOf fabric.Text.prototype - * @return {String} Font size (in pixels) - */ - - /** - * Sets object's fontSize - * @method setFontSize - * @memberOf fabric.Text.prototype - * @param {Number} fontSize Font size (in pixels) - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's fontWeight - * @method getFontWeight - * @memberOf fabric.Text.prototype - * @return {(String|Number)} Font weight - */ - - /** - * Sets object's fontWeight - * @method setFontWeight - * @memberOf fabric.Text.prototype - * @param {(Number|String)} fontWeight Font weight - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's fontFamily - * @method getFontFamily - * @memberOf fabric.Text.prototype - * @return {String} Font family - */ - - /** - * Sets object's fontFamily - * @method setFontFamily - * @memberOf fabric.Text.prototype - * @param {String} fontFamily Font family - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's text - * @method getText - * @memberOf fabric.Text.prototype - * @return {String} text - */ - - /** - * Sets object's text - * @method setText - * @memberOf fabric.Text.prototype - * @param {String} text Text - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's textDecoration - * @method getTextDecoration - * @memberOf fabric.Text.prototype - * @return {String} Text decoration - */ - - /** - * Sets object's textDecoration - * @method setTextDecoration - * @memberOf fabric.Text.prototype - * @param {String} textDecoration Text decoration - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's fontStyle - * @method getFontStyle - * @memberOf fabric.Text.prototype - * @return {String} Font style - */ - - /** - * Sets object's fontStyle - * @method setFontStyle - * @memberOf fabric.Text.prototype - * @param {String} fontStyle Font style - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's lineHeight - * @method getLineHeight - * @memberOf fabric.Text.prototype - * @return {Number} Line height - */ - - /** - * Sets object's lineHeight - * @method setLineHeight - * @memberOf fabric.Text.prototype - * @param {Number} lineHeight Line height - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's textAlign - * @method getTextAlign - * @memberOf fabric.Text.prototype - * @return {String} Text alignment - */ - - /** - * Sets object's textAlign - * @method setTextAlign - * @memberOf fabric.Text.prototype - * @param {String} textAlign Text alignment - * @return {fabric.Text} - * @chainable - */ - - /** - * Retrieves object's textBackgroundColor - * @method getTextBackgroundColor - * @memberOf fabric.Text.prototype - * @return {String} Text background color - */ - - /** - * Sets object's textBackgroundColor - * @method setTextBackgroundColor - * @memberOf fabric.Text.prototype - * @param {String} textBackgroundColor Text background color - * @return {fabric.Text} - * @chainable - */ - - /** - * Type of an object - * @type String - * @default - */ - type: 'text', - - /** - * Font size (in pixels) - * @type Number - * @default - */ - fontSize: 40, - - /** - * Font weight (e.g. bold, normal, 400, 600, 800) - * @type {(Number|String)} - * @default - */ - fontWeight: 'normal', - - /** - * Font family - * @type String - * @default - */ - fontFamily: 'Times New Roman', - - /** - * Text decoration Possible values: "", "underline", "overline" or "line-through". - * @type String - * @default - */ - textDecoration: '', - - /** - * Text alignment. Possible values: "left", "center", or "right". - * @type String - * @default - */ - textAlign: 'left', - - /** - * Font style . Possible values: "", "normal", "italic" or "oblique". - * @type String - * @default - */ - fontStyle: '', - - /** - * Line height - * @type Number - * @default - */ - lineHeight: 1.3, - - /** - * Background color of text lines - * @type String - * @default - */ - textBackgroundColor: '', - - /** - * URL of a font file, when using Cufon - * @type String | null - * @default - */ - path: null, - - /** - * Indicates whether canvas native text methods should be used to render text (otherwise, Cufon is used) - * @type Boolean - * @default - */ - useNative: true, - - /** - * List of properties to consider when checking if - * state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: stateProperties, - - /** - * When defined, an object is rendered via stroke and this property specifies its color. - * Backwards incompatibility note: This property was named "strokeStyle" until v1.1.6 - * @type String - * @default - */ - stroke: null, - - /** - * Shadow object representing shadow of this shape. - * Backwards incompatibility note: This property was named "textShadow" (String) until v1.2.11 - * @type fabric.Shadow - * @default - */ - shadow: null, - - /** - * Constructor - * @param {String} text Text string - * @param {Object} [options] Options object - * @return {fabric.Text} thisArg - */ - initialize: function(text, options) { - options = options || { }; - - this.text = text; - this.__skipDimension = true; - this.setOptions(options); - this.__skipDimension = false; - this._initDimensions(); - }, - - /** - * Renders text object on offscreen canvas, so that it would get dimensions - * @private - */ - _initDimensions: function() { - if (this.__skipDimension) { - return; - } - var canvasEl = fabric.util.createCanvasElement(); - this._render(canvasEl.getContext('2d')); - }, - - /** - * Returns string representation of an instance - * @return {String} String representation of text object - */ - toString: function() { - return '#'; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function(ctx) { - - if (typeof Cufon === 'undefined' || this.useNative === true) { - this._renderViaNative(ctx); - } - else { - this._renderViaCufon(ctx); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderViaNative: function(ctx) { - var textLines = this.text.split(this._reNewline); - - this._setTextStyles(ctx); - - this.width = this._getTextWidth(ctx, textLines); - this.height = this._getTextHeight(ctx, textLines); - - this.clipTo && fabric.util.clipContext(this, ctx); - - this._renderTextBackground(ctx, textLines); - this._translateForTextAlign(ctx); - this._renderText(ctx, textLines); - - if (this.textAlign !== 'left' && this.textAlign !== 'justify') { - ctx.restore(); - } - - this._renderTextDecoration(ctx, textLines); - this.clipTo && ctx.restore(); - - this._setBoundaries(ctx, textLines); - this._totalLineHeight = 0; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderText: function(ctx, textLines) { - ctx.save(); - this._setShadow(ctx); - this._setupFillRule(ctx); - this._renderTextFill(ctx, textLines); - this._renderTextStroke(ctx, textLines); - this._restoreFillRule(ctx); - this._removeShadow(ctx); - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _translateForTextAlign: function(ctx) { - if (this.textAlign !== 'left' && this.textAlign !== 'justify') { - ctx.save(); - ctx.translate(this.textAlign === 'center' ? (this.width / 2) : this.width, 0); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _setBoundaries: function(ctx, textLines) { - this._boundaries = [ ]; - - for (var i = 0, len = textLines.length; i < len; i++) { - - var lineWidth = this._getLineWidth(ctx, textLines[i]), - lineLeftOffset = this._getLineLeftOffset(lineWidth); - - this._boundaries.push({ - height: this.fontSize * this.lineHeight, - width: lineWidth, - left: lineLeftOffset - }); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _setTextStyles: function(ctx) { - this._setFillStyles(ctx); - this._setStrokeStyles(ctx); - ctx.textBaseline = 'alphabetic'; - if (!this.skipTextAlign) { - ctx.textAlign = this.textAlign; - } - ctx.font = this._getFontDeclaration(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - * @return {Number} Height of fabric.Text object - */ - _getTextHeight: function(ctx, textLines) { - return this.fontSize * textLines.length * this.lineHeight; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - * @return {Number} Maximum width of fabric.Text object - */ - _getTextWidth: function(ctx, textLines) { - var maxWidth = ctx.measureText(textLines[0] || '|').width; - - for (var i = 1, len = textLines.length; i < len; i++) { - var currentLineWidth = ctx.measureText(textLines[i]).width; - if (currentLineWidth > maxWidth) { - maxWidth = currentLineWidth; - } - } - return maxWidth; - }, - - /** - * @private - * @param {String} method Method name ("fillText" or "strokeText") - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} chars Chars to render - * @param {Number} left Left position of text - * @param {Number} top Top position of text - */ - _renderChars: function(method, ctx, chars, left, top) { - ctx[method](chars, left, top); - }, - - /** - * @private - * @param {String} method Method name ("fillText" or "strokeText") - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} line Text to render - * @param {Number} left Left position of text - * @param {Number} top Top position of text - * @param {Number} lineIndex Index of a line in a text - */ - _renderTextLine: function(method, ctx, line, left, top, lineIndex) { - // lift the line by quarter of fontSize - top -= this.fontSize / 4; - - // short-circuit - if (this.textAlign !== 'justify') { - this._renderChars(method, ctx, line, left, top, lineIndex); - return; - } - - var lineWidth = ctx.measureText(line).width, - totalWidth = this.width; - - if (totalWidth > lineWidth) { - // stretch the line - var words = line.split(/\s+/), - wordsWidth = ctx.measureText(line.replace(/\s+/g, '')).width, - widthDiff = totalWidth - wordsWidth, - numSpaces = words.length - 1, - spaceWidth = widthDiff / numSpaces, - leftOffset = 0; - - for (var i = 0, len = words.length; i < len; i++) { - this._renderChars(method, ctx, words[i], left + leftOffset, top, lineIndex); - leftOffset += ctx.measureText(words[i]).width + spaceWidth; - } - } - else { - this._renderChars(method, ctx, line, left, top, lineIndex); - } - }, - - /** - * @private - * @return {Number} Left offset - */ - _getLeftOffset: function() { - if (fabric.isLikelyNode) { - return 0; - } - return -this.width / 2; - }, - - /** - * @private - * @return {Number} Top offset - */ - _getTopOffset: function() { - return -this.height / 2; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _renderTextFill: function(ctx, textLines) { - if (!this.fill && !this._skipFillStrokeCheck) { - return; - } - - this._boundaries = [ ]; - var lineHeights = 0; - - for (var i = 0, len = textLines.length; i < len; i++) { - var heightOfLine = this._getHeightOfLine(ctx, i, textLines); - lineHeights += heightOfLine; - - this._renderTextLine( - 'fillText', - ctx, - textLines[i], - this._getLeftOffset(), - this._getTopOffset() + lineHeights, - i - ); - } - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _renderTextStroke: function(ctx, textLines) { - if ((!this.stroke || this.strokeWidth === 0) && !this._skipFillStrokeCheck) { - return; - } - - var lineHeights = 0; - - ctx.save(); - if (this.strokeDashArray) { - // Spec requires the concatenation of two copies the dash list when the number of elements is odd - if (1 & this.strokeDashArray.length) { - this.strokeDashArray.push.apply(this.strokeDashArray, this.strokeDashArray); - } - supportsLineDash && ctx.setLineDash(this.strokeDashArray); - } - - ctx.beginPath(); - for (var i = 0, len = textLines.length; i < len; i++) { - var heightOfLine = this._getHeightOfLine(ctx, i, textLines); - lineHeights += heightOfLine; - - this._renderTextLine( - 'strokeText', - ctx, - textLines[i], - this._getLeftOffset(), - this._getTopOffset() + lineHeights, - i - ); - } - ctx.closePath(); - ctx.restore(); - }, - - _getHeightOfLine: function() { - return this.fontSize * this.lineHeight; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _renderTextBackground: function(ctx, textLines) { - this._renderTextBoxBackground(ctx); - this._renderTextLinesBackground(ctx, textLines); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _renderTextBoxBackground: function(ctx) { - if (!this.backgroundColor) { - return; - } - - ctx.save(); - ctx.fillStyle = this.backgroundColor; - - ctx.fillRect( - this._getLeftOffset(), - this._getTopOffset(), - this.width, - this.height - ); - - ctx.restore(); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _renderTextLinesBackground: function(ctx, textLines) { - if (!this.textBackgroundColor) { - return; - } - - ctx.save(); - ctx.fillStyle = this.textBackgroundColor; - - for (var i = 0, len = textLines.length; i < len; i++) { - - if (textLines[i] !== '') { - - var lineWidth = this._getLineWidth(ctx, textLines[i]), - lineLeftOffset = this._getLineLeftOffset(lineWidth); - - ctx.fillRect( - this._getLeftOffset() + lineLeftOffset, - this._getTopOffset() + (i * this.fontSize * this.lineHeight), - lineWidth, - this.fontSize * this.lineHeight - ); - } - } - ctx.restore(); - }, - - /** - * @private - * @param {Number} lineWidth Width of text line - * @return {Number} Line left offset - */ - _getLineLeftOffset: function(lineWidth) { - if (this.textAlign === 'center') { - return (this.width - lineWidth) / 2; - } - if (this.textAlign === 'right') { - return this.width - lineWidth; - } - return 0; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {String} line Text line - * @return {Number} Line width - */ - _getLineWidth: function(ctx, line) { - return this.textAlign === 'justify' - ? this.width - : ctx.measureText(line).width; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - * @param {Array} textLines Array of all text lines - */ - _renderTextDecoration: function(ctx, textLines) { - if (!this.textDecoration) { - return; - } - - // var halfOfVerticalBox = this.originY === 'top' ? 0 : this._getTextHeight(ctx, textLines) / 2; - var halfOfVerticalBox = this._getTextHeight(ctx, textLines) / 2, - _this = this; - - /** @ignore */ - function renderLinesAtOffset(offset) { - for (var i = 0, len = textLines.length; i < len; i++) { - - var lineWidth = _this._getLineWidth(ctx, textLines[i]), - lineLeftOffset = _this._getLineLeftOffset(lineWidth); - - ctx.fillRect( - _this._getLeftOffset() + lineLeftOffset, - ~~((offset + (i * _this._getHeightOfLine(ctx, i, textLines))) - halfOfVerticalBox), - lineWidth, - 1); - } - } - - if (this.textDecoration.indexOf('underline') > -1) { - renderLinesAtOffset(this.fontSize * this.lineHeight); - } - if (this.textDecoration.indexOf('line-through') > -1) { - renderLinesAtOffset(this.fontSize * this.lineHeight - this.fontSize / 2); - } - if (this.textDecoration.indexOf('overline') > -1) { - renderLinesAtOffset(this.fontSize * this.lineHeight - this.fontSize); - } - }, - - /** - * @private - */ - _getFontDeclaration: function() { - return [ - // node-canvas needs "weight style", while browsers need "style weight" - (fabric.isLikelyNode ? this.fontWeight : this.fontStyle), - (fabric.isLikelyNode ? this.fontStyle : this.fontWeight), - this.fontSize + 'px', - (fabric.isLikelyNode ? ('"' + this.fontFamily + '"') : this.fontFamily) - ].join(' '); - }, - - /** - * Renders text instance on a specified context - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - render: function(ctx, noTransform) { - // do not render if object is not visible - if (!this.visible) { - return; - } - - ctx.save(); - this._transform(ctx, noTransform); - - var m = this.transformMatrix, - isInPathGroup = this.group && this.group.type === 'path-group'; - - if (isInPathGroup) { - ctx.translate(-this.group.width/2, -this.group.height/2); - } - if (m) { - ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); - } - if (isInPathGroup) { - ctx.translate(this.left, this.top); - } - this._render(ctx); - ctx.restore(); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function(propertiesToInclude) { - var object = extend(this.callSuper('toObject', propertiesToInclude), { - text: this.text, - fontSize: this.fontSize, - fontWeight: this.fontWeight, - fontFamily: this.fontFamily, - fontStyle: this.fontStyle, - lineHeight: this.lineHeight, - textDecoration: this.textDecoration, - textAlign: this.textAlign, - path: this.path, - textBackgroundColor: this.textBackgroundColor, - useNative: this.useNative - }); - if (!this.includeDefaultValues) { - this._removeDefaultValues(object); - } - return object; - }, - - /* _TO_SVG_START_ */ - /** - * Returns SVG representation of an instance - * @param {Function} [reviver] Method for further parsing of svg representation. - * @return {String} svg representation of an instance - */ - toSVG: function(reviver) { - var markup = [ ], - textLines = this.text.split(this._reNewline), - offsets = this._getSVGLeftTopOffsets(textLines), - textAndBg = this._getSVGTextAndBg(offsets.lineTop, offsets.textLeft, textLines), - shadowSpans = this._getSVGShadows(offsets.lineTop, textLines); - - // move top offset by an ascent - offsets.textTop += (this._fontAscent ? ((this._fontAscent / 5) * this.lineHeight) : 0); - - this._wrapSVGTextAndBg(markup, textAndBg, shadowSpans, offsets); - - return reviver ? reviver(markup.join('')) : markup.join(''); - }, - - /** - * @private - */ - _getSVGLeftTopOffsets: function(textLines) { - var lineTop = this.useNative - ? this.fontSize * this.lineHeight - : (-this._fontAscent - ((this._fontAscent / 5) * this.lineHeight)), - - textLeft = -(this.width/2), - textTop = this.useNative - ? this.fontSize - 1 - : (this.height/2) - (textLines.length * this.fontSize) - this._totalLineHeight; - - return { - textLeft: textLeft + (this.group && this.group.type === 'path-group' ? this.left : 0), - textTop: textTop + (this.group && this.group.type === 'path-group' ? this.top : 0), - lineTop: lineTop - }; - }, - - /** - * @private - */ - _wrapSVGTextAndBg: function(markup, textAndBg, shadowSpans, offsets) { - markup.push( - '\n', - textAndBg.textBgRects.join(''), - '', - shadowSpans.join(''), - textAndBg.textSpans.join(''), - '\n', - '\n' - ); - }, - - /** - * @private - * @param {Number} lineHeight - * @param {Array} textLines Array of all text lines - * @return {Array} - */ - _getSVGShadows: function(lineHeight, textLines) { - var shadowSpans = [], - i, len, - lineTopOffsetMultiplier = 1; - - if (!this.shadow || !this._boundaries) { - return shadowSpans; - } - - for (i = 0, len = textLines.length; i < len; i++) { - if (textLines[i] !== '') { - var lineLeftOffset = (this._boundaries && this._boundaries[i]) ? this._boundaries[i].left : 0; - shadowSpans.push( - '', - fabric.util.string.escapeXml(textLines[i]), - ''); - lineTopOffsetMultiplier = 1; - } - else { - // in some environments (e.g. IE 7 & 8) empty tspans are completely ignored, using a lineTopOffsetMultiplier - // prevents empty tspans - lineTopOffsetMultiplier++; - } - } - - return shadowSpans; - }, - - /** - * @private - * @param {Number} lineHeight - * @param {Number} textLeftOffset Text left offset - * @param {Array} textLines Array of all text lines - * @return {Object} - */ - _getSVGTextAndBg: function(lineHeight, textLeftOffset, textLines) { - var textSpans = [ ], - textBgRects = [ ], - lineTopOffsetMultiplier = 1; - - // bounding-box background - this._setSVGBg(textBgRects); - - // text and text-background - for (var i = 0, len = textLines.length; i < len; i++) { - if (textLines[i] !== '') { - this._setSVGTextLineText(textLines[i], i, textSpans, lineHeight, lineTopOffsetMultiplier, textBgRects); - lineTopOffsetMultiplier = 1; - } - else { - // in some environments (e.g. IE 7 & 8) empty tspans are completely ignored, using a lineTopOffsetMultiplier - // prevents empty tspans - lineTopOffsetMultiplier++; - } - - if (!this.textBackgroundColor || !this._boundaries) { - continue; - } - - this._setSVGTextLineBg(textBgRects, i, textLeftOffset, lineHeight); - } - - return { - textSpans: textSpans, - textBgRects: textBgRects - }; - }, - - _setSVGTextLineText: function(textLine, i, textSpans, lineHeight, lineTopOffsetMultiplier) { - var lineLeftOffset = (this._boundaries && this._boundaries[i]) - ? toFixed(this._boundaries[i].left, 2) - : 0; - - textSpans.push( - ' elements since setting opacity - // on containing one doesn't work in Illustrator - this._getFillAttributes(this.fill), '>', - fabric.util.string.escapeXml(textLine), - '' - ); - }, - - _setSVGTextLineBg: function(textBgRects, i, textLeftOffset, lineHeight) { - textBgRects.push( - '\n'); - }, - - _setSVGBg: function(textBgRects) { - if (this.backgroundColor && this._boundaries) { - textBgRects.push( - ''); - } - }, - - /** - * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values - * we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1 - * - * @private - * @param {Any} value - * @return {String} - */ - _getFillAttributes: function(value) { - var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : ''; - if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) { - return 'fill="' + value + '"'; - } - return 'opacity="' + fillColor.getAlpha() + '" fill="' + fillColor.setAlpha(1).toRgb() + '"'; - }, - /* _TO_SVG_END_ */ - - /** - * Sets specified property to a specified value - * @param {String} key - * @param {Any} value - * @return {fabric.Text} thisArg - * @chainable - */ - _set: function(key, value) { - if (key === 'fontFamily' && this.path) { - this.path = this.path.replace(/(.*?)([^\/]*)(\.font\.js)/, '$1' + value + '$3'); - } - this.callSuper('_set', key, value); - - if (key in this._dimensionAffectingProps) { - this._initDimensions(); - this.setCoords(); - } - }, - - /** - * Returns complexity of an instance - * @return {Number} complexity - */ - complexity: function() { - return 1; - } - }); - - /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement}) - * @static - * @memberOf fabric.Text - * @see: http://www.w3.org/TR/SVG/text.html#TextElement - */ - fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat( - 'x y dx dy font-family font-style font-weight font-size text-decoration text-anchor'.split(' ')); - - /** - * Default SVG font size - * @static - * @memberOf fabric.Text - */ - fabric.Text.DEFAULT_SVG_FONT_SIZE = 16; - - /** - * Returns fabric.Text instance from an SVG element (not yet implemented) - * @static - * @memberOf fabric.Text - * @param {SVGElement} element Element to parse - * @param {Object} [options] Options object - * @return {fabric.Text} Instance of fabric.Text - */ - fabric.Text.fromElement = function(element, options) { - if (!element) { - return null; - } - - var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES); - options = fabric.util.object.extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes); - - if ('dx' in parsedAttributes) { - options.left += parsedAttributes.dx; - } - if ('dy' in parsedAttributes) { - options.top += parsedAttributes.dy; - } - if (!('fontSize' in options)) { - options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE; - } - - if (!options.originX) { - options.originX = 'left'; - } - - var text = new fabric.Text(element.textContent, options), - /* - Adjust positioning: - x/y attributes in SVG correspond to the bottom-left corner of text bounding box - top/left properties in Fabric correspond to center point of text bounding box - */ - offX = 0; - - if (text.originX === 'left') { - offX = text.getWidth() / 2; - } - if (text.originX === 'right') { - offX = -text.getWidth() / 2; - } - text.set({ - left: text.getLeft() + offX, - top: text.getTop() - text.getHeight() / 2 - }); - - return text; - }; - /* _FROM_SVG_END_ */ - - /** - * Returns fabric.Text instance from an object representation - * @static - * @memberOf fabric.Text - * @param {Object} object Object to create an instance from - * @return {fabric.Text} Instance of fabric.Text - */ - fabric.Text.fromObject = function(object) { - return new fabric.Text(object.text, clone(object)); - }; - - fabric.util.createAccessors(fabric.Text); - -})(typeof exports !== 'undefined' ? exports : this); - - -}).call(this,_dereq_("buffer").Buffer) -},{"buffer":2,"canvas":1,"jsdom":1}]},{},[6])(6) -}); \ No newline at end of file diff --git a/dist/html2canvas.svg.min.js b/dist/html2canvas.svg.min.js deleted file mode 100644 index 852f5a9d4..000000000 --- a/dist/html2canvas.svg.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - html2canvas 0.5.0-beta3 - Copyright (c) 2016 Niklas von Hertzen - - Released under License -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n;"undefined"!=typeof window?n=window:"undefined"!=typeof global?n=global:"undefined"!=typeof self&&(n=self),(n.html2canvas||(n.html2canvas={})).svg=e()}}(function(){var define,module,exports;return function e(n,f,o){function d(t,l){if(!f[t]){if(!n[t]){var s="function"==typeof require&&require;if(!l&&s)return s(t,!0);if(i)return i(t,!0);var u=new Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}var a=f[t]={exports:{}};n[t][0].call(a.exports,function(e){var f=n[t][1][e];return d(f?f:e)},a,a.exports,e,n,f,o)}return f[t].exports}for(var i="function"==typeof require&&require,t=0;t0?e>>>0:0;else if("string"===i)d=o.byteLength(e,n);else{if("object"!==i||null===e)throw new TypeError("must start with number, buffer, array or string");"Buffer"===e.type&&K(e.data)&&(e=e.data),d=+e.length>0?Math.floor(+e.length):0}if(d>L)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+L.toString(16)+" bytes");var t;o.TYPED_ARRAY_SUPPORT?t=o._augment(new Uint8Array(d)):(t=this,t.length=d,t._isBuffer=!0);var l;if(o.TYPED_ARRAY_SUPPORT&&"number"==typeof e.byteLength)t._set(e);else if(A(e))if(o.isBuffer(e))for(l=0;d>l;l++)t[l]=e.readUInt8(l);else for(l=0;d>l;l++)t[l]=(e[l]%256+256)%256;else if("string"===i)t.write(e,0,n);else if("number"===i&&!o.TYPED_ARRAY_SUPPORT&&!f)for(l=0;d>l;l++)t[l]=0;return d>0&&d<=o.poolSize&&(t.parent=M),t}function d(e,n,f){if(!(this instanceof d))return new d(e,n,f);var i=new o(e,n,f);return delete i.parent,i}function i(e,n,f,o){f=Number(f)||0;var d=e.length-f;o?(o=Number(o),o>d&&(o=d)):o=d;var i=n.length;if(i%2!==0)throw new Error("Invalid hex string");o>i/2&&(o=i/2);for(var t=0;o>t;t++){var l=parseInt(n.substr(2*t,2),16);if(isNaN(l))throw new Error("Invalid hex string");e[f+t]=l}return t}function t(e,n,f,o){var d=G(C(n,e.length-f),e,f,o);return d}function l(e,n,f,o){var d=G(D(n),e,f,o);return d}function s(e,n,f,o){return l(e,n,f,o)}function u(e,n,f,o){var d=G(F(n),e,f,o);return d}function a(e,n,f,o){var d=G(E(n,e.length-f),e,f,o,2);return d}function p(e,n,f){return I.fromByteArray(0===n&&f===e.length?e:e.slice(n,f))}function c(e,n,f){var o="",d="";f=Math.min(e.length,f);for(var i=n;f>i;i++)e[i]<=127?(o+=H(d)+String.fromCharCode(e[i]),d=""):d+="%"+e[i].toString(16);return o+H(d)}function y(e,n,f){var o="";f=Math.min(e.length,f);for(var d=n;f>d;d++)o+=String.fromCharCode(127&e[d]);return o}function m(e,n,f){var o="";f=Math.min(e.length,f);for(var d=n;f>d;d++)o+=String.fromCharCode(e[d]);return o}function r(e,n,f){var o=e.length;(!n||0>n)&&(n=0),(!f||0>f||f>o)&&(f=o);for(var d="",i=n;f>i;i++)d+=B(e[i]);return d}function v(e,n,f){for(var o=e.slice(n,f),d="",i=0;ie)throw new RangeError("offset is not uint");if(e+n>f)throw new RangeError("Trying to access beyond buffer length")}function b(e,n,f,d,i,t){if(!o.isBuffer(e))throw new TypeError("buffer must be a Buffer instance");if(n>i||t>n)throw new RangeError("value is out of bounds");if(f+d>e.length)throw new RangeError("index out of range")}function g(e,n,f,o){0>n&&(n=65535+n+1);for(var d=0,i=Math.min(e.length-f,2);i>d;d++)e[f+d]=(n&255<<8*(o?d:1-d))>>>8*(o?d:1-d)}function h(e,n,f,o){0>n&&(n=4294967295+n+1);for(var d=0,i=Math.min(e.length-f,4);i>d;d++)e[f+d]=n>>>8*(o?d:3-d)&255}function x(e,n,f,o,d,i){if(n>d||i>n)throw new RangeError("value is out of bounds");if(f+o>e.length)throw new RangeError("index out of range");if(0>f)throw new RangeError("index out of range")}function j(e,n,f,o,d){return d||x(e,n,f,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,n,f,o,23,4),f+4}function k(e,n,f,o,d){return d||x(e,n,f,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,n,f,o,52,8),f+8}function q(e){if(e=z(e).replace(O,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function z(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function A(e){return K(e)||o.isBuffer(e)||e&&"object"==typeof e&&"number"==typeof e.length}function B(e){return 16>e?"0"+e.toString(16):e.toString(16)}function C(e,n){var f,o=e.length,d=null;n=n||1/0;for(var i=[],t=0;o>t;t++){if(f=e.charCodeAt(t),f>55295&&57344>f){if(!d){if(f>56319){(n-=3)>-1&&i.push(239,191,189);continue}if(t+1===o){(n-=3)>-1&&i.push(239,191,189);continue}d=f;continue}if(56320>f){(n-=3)>-1&&i.push(239,191,189),d=f;continue}f=d-55296<<10|f-56320|65536,d=null}else d&&((n-=3)>-1&&i.push(239,191,189),d=null);if(128>f){if((n-=1)<0)break;i.push(f)}else if(2048>f){if((n-=2)<0)break;i.push(f>>6|192,63&f|128)}else if(65536>f){if((n-=3)<0)break;i.push(f>>12|224,f>>6&63|128,63&f|128)}else{if(!(2097152>f))throw new Error("Invalid code point");if((n-=4)<0)break;i.push(f>>18|240,f>>12&63|128,f>>6&63|128,63&f|128)}}return i}function D(e){for(var n=[],f=0;f>8,d=f%256,i.push(d),i.push(o);return i}function F(e){return I.toByteArray(q(e))}function G(e,n,f,o,d){d&&(o-=o%d);for(var i=0;o>i&&!(i+f>=n.length||i>=e.length);i++)n[i+f]=e[i];return i}function H(e){try{return decodeURIComponent(e)}catch(n){return String.fromCharCode(65533)}}var I=e("base64-js"),J=e("ieee754"),K=e("is-array");f.Buffer=o,f.SlowBuffer=d,f.INSPECT_MAX_BYTES=50,o.poolSize=8192;var L=1073741823,M={};o.TYPED_ARRAY_SUPPORT=function(){try{var e=new ArrayBuffer(0),n=new Uint8Array(e);return n.foo=function(){return 42},42===n.foo()&&"function"==typeof n.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(f){return!1}}(),o.isBuffer=function(e){return!(null==e||!e._isBuffer)},o.compare=function(e,n){if(!o.isBuffer(e)||!o.isBuffer(n))throw new TypeError("Arguments must be Buffers");for(var f=e.length,d=n.length,i=0,t=Math.min(f,d);t>i&&e[i]===n[i];i++);return i!==t&&(f=e[i],d=n[i]),d>f?-1:f>d?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,n){if(!K(e))throw new TypeError("Usage: Buffer.concat(list[, length])");if(0===e.length)return new o(0);if(1===e.length)return e[0];var f;if(void 0===n)for(n=0,f=0;f>>1;break;case"utf8":case"utf-8":f=C(e).length;break;case"base64":f=F(e).length;break;default:f=e.length}return f},o.prototype.length=void 0,o.prototype.parent=void 0,o.prototype.toString=function(e,n,f){var o=!1;if(n>>>=0,f=void 0===f||1/0===f?this.length:f>>>0,e||(e="utf8"),0>n&&(n=0),f>this.length&&(f=this.length),n>=f)return"";for(;;)switch(e){case"hex":return r(this,n,f);case"utf8":case"utf-8":return c(this,n,f);case"ascii":return y(this,n,f);case"binary":return m(this,n,f);case"base64":return p(this,n,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,n,f);default:if(o)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),o=!0}},o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return 0===o.compare(this,e)},o.prototype.inspect=function(){var e="",n=f.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},o.prototype.compare=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return o.compare(this,e)},o.prototype.get=function(e){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(e)},o.prototype.set=function(e,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(e,n)},o.prototype.write=function(e,n,f,o){if(isFinite(n))isFinite(f)||(o=f,f=void 0);else{var d=o;o=n,n=f,f=d}if(n=Number(n)||0,0>f||0>n||n>this.length)throw new RangeError("attempt to write outside buffer bounds");var p=this.length-n;f?(f=Number(f),f>p&&(f=p)):f=p,o=String(o||"utf8").toLowerCase();var c;switch(o){case"hex":c=i(this,e,n,f);break;case"utf8":case"utf-8":c=t(this,e,n,f);break;case"ascii":c=l(this,e,n,f);break;case"binary":c=s(this,e,n,f);break;case"base64":c=u(this,e,n,f);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":c=a(this,e,n,f);break;default:throw new TypeError("Unknown encoding: "+o)}return c},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},o.prototype.slice=function(e,n){var f=this.length;e=~~e,n=void 0===n?f:~~n,0>e?(e+=f,0>e&&(e=0)):e>f&&(e=f),0>n?(n+=f,0>n&&(n=0)):n>f&&(n=f),e>n&&(n=e);var d;if(o.TYPED_ARRAY_SUPPORT)d=o._augment(this.subarray(e,n));else{var i=n-e;d=new o(i,void 0,!0);for(var t=0;i>t;t++)d[t]=this[t+e]}return d.length&&(d.parent=this.parent||this),d},o.prototype.readUIntLE=function(e,n,f){e>>>=0,n>>>=0,f||w(e,n,this.length);for(var o=this[e],d=1,i=0;++i>>=0,n>>>=0,f||w(e,n,this.length);for(var o=this[e+--n],d=1;n>0&&(d*=256);)o+=this[e+--n]*d;return o},o.prototype.readUInt8=function(e,n){return n||w(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,n){return n||w(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,n){return n||w(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,n){return n||w(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,n){return n||w(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,n,f){e>>>=0,n>>>=0,f||w(e,n,this.length);for(var o=this[e],d=1,i=0;++i=d&&(o-=Math.pow(2,8*n)),o},o.prototype.readIntBE=function(e,n,f){e>>>=0,n>>>=0,f||w(e,n,this.length);for(var o=n,d=1,i=this[e+--o];o>0&&(d*=256);)i+=this[e+--o]*d;return d*=128,i>=d&&(i-=Math.pow(2,8*n)),i},o.prototype.readInt8=function(e,n){return n||w(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,n){n||w(e,2,this.length);var f=this[e]|this[e+1]<<8;return 32768&f?4294901760|f:f},o.prototype.readInt16BE=function(e,n){n||w(e,2,this.length);var f=this[e+1]|this[e]<<8;return 32768&f?4294901760|f:f},o.prototype.readInt32LE=function(e,n){return n||w(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,n){return n||w(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,n){return n||w(e,4,this.length),J.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,n){return n||w(e,4,this.length),J.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,n){return n||w(e,8,this.length),J.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,n){return n||w(e,8,this.length),J.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,n,f,o){e=+e,n>>>=0,f>>>=0,o||b(this,e,n,f,Math.pow(2,8*f),0);var d=1,i=0;for(this[n]=255&e;++i>>0&255;return n+f},o.prototype.writeUIntBE=function(e,n,f,o){e=+e,n>>>=0,f>>>=0,o||b(this,e,n,f,Math.pow(2,8*f),0);var d=f-1,i=1;for(this[n+d]=255&e;--d>=0&&(i*=256);)this[n+d]=e/i>>>0&255;return n+f},o.prototype.writeUInt8=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,1,255,0),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=e,n+1},o.prototype.writeUInt16LE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8):g(this,e,n,!0),n+2},o.prototype.writeUInt16BE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=e):g(this,e,n,!1),n+2},o.prototype.writeUInt32LE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=e):h(this,e,n,!0),n+4},o.prototype.writeUInt32BE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=e):h(this,e,n,!1),n+4},o.prototype.writeIntLE=function(e,n,f,o){e=+e,n>>>=0,o||b(this,e,n,f,Math.pow(2,8*f-1)-1,-Math.pow(2,8*f-1));var d=0,i=1,t=0>e?1:0;for(this[n]=255&e;++d>0)-t&255;return n+f},o.prototype.writeIntBE=function(e,n,f,o){e=+e,n>>>=0,o||b(this,e,n,f,Math.pow(2,8*f-1)-1,-Math.pow(2,8*f-1));var d=f-1,i=1,t=0>e?1:0;for(this[n+d]=255&e;--d>=0&&(i*=256);)this[n+d]=(e/i>>0)-t&255;return n+f},o.prototype.writeInt8=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,1,127,-128),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[n]=e,n+1},o.prototype.writeInt16LE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8):g(this,e,n,!0),n+2},o.prototype.writeInt16BE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=e):g(this,e,n,!1),n+2},o.prototype.writeInt32LE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):h(this,e,n,!0),n+4},o.prototype.writeInt32BE=function(e,n,f){return e=+e,n>>>=0,f||b(this,e,n,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),o.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=e):h(this,e,n,!1),n+4},o.prototype.writeFloatLE=function(e,n,f){return j(this,e,n,!0,f)},o.prototype.writeFloatBE=function(e,n,f){return j(this,e,n,!1,f)},o.prototype.writeDoubleLE=function(e,n,f){return k(this,e,n,!0,f)},o.prototype.writeDoubleBE=function(e,n,f){return k(this,e,n,!1,f)},o.prototype.copy=function(e,n,f,d){var i=this;if(f||(f=0),d||0===d||(d=this.length),n>=e.length&&(n=e.length),n||(n=0),d>0&&f>d&&(d=f),d===f)return 0;if(0===e.length||0===i.length)return 0;if(0>n)throw new RangeError("targetStart out of bounds");if(0>f||f>=i.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length),e.length-nt||!o.TYPED_ARRAY_SUPPORT)for(var l=0;t>l;l++)e[l+n]=this[l+f];else e._set(this.subarray(f,f+t),n);return t},o.prototype.fill=function(e,n,f){if(e||(e=0),n||(n=0),f||(f=this.length),n>f)throw new RangeError("end < start");if(f!==n&&0!==this.length){if(0>n||n>=this.length)throw new RangeError("start out of bounds");if(0>f||f>this.length)throw new RangeError("end out of bounds");var o;if("number"==typeof e)for(o=n;f>o;o++)this[o]=e;else{var d=C(e.toString()),i=d.length;for(o=n;f>o;o++)this[o]=d[o%i]}return this}},o.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(o.TYPED_ARRAY_SUPPORT)return new o(this).buffer;for(var e=new Uint8Array(this.length),n=0,f=e.length;f>n;n+=1)e[n]=this[n];return e.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var N=o.prototype;o._augment=function(e){return e.constructor=o,e._isBuffer=!0,e._get=e.get,e._set=e.set,e.get=N.get,e.set=N.set,e.write=N.write,e.toString=N.toString,e.toLocaleString=N.toString,e.toJSON=N.toJSON,e.equals=N.equals,e.compare=N.compare,e.copy=N.copy,e.slice=N.slice,e.readUIntLE=N.readUIntLE,e.readUIntBE=N.readUIntBE,e.readUInt8=N.readUInt8,e.readUInt16LE=N.readUInt16LE,e.readUInt16BE=N.readUInt16BE,e.readUInt32LE=N.readUInt32LE,e.readUInt32BE=N.readUInt32BE,e.readIntLE=N.readIntLE,e.readIntBE=N.readIntBE,e.readInt8=N.readInt8,e.readInt16LE=N.readInt16LE,e.readInt16BE=N.readInt16BE,e.readInt32LE=N.readInt32LE,e.readInt32BE=N.readInt32BE,e.readFloatLE=N.readFloatLE,e.readFloatBE=N.readFloatBE,e.readDoubleLE=N.readDoubleLE,e.readDoubleBE=N.readDoubleBE,e.writeUInt8=N.writeUInt8,e.writeUIntLE=N.writeUIntLE,e.writeUIntBE=N.writeUIntBE,e.writeUInt16LE=N.writeUInt16LE,e.writeUInt16BE=N.writeUInt16BE,e.writeUInt32LE=N.writeUInt32LE,e.writeUInt32BE=N.writeUInt32BE,e.writeIntLE=N.writeIntLE,e.writeIntBE=N.writeIntBE,e.writeInt8=N.writeInt8,e.writeInt16LE=N.writeInt16LE,e.writeInt16BE=N.writeInt16BE,e.writeInt32LE=N.writeInt32LE,e.writeInt32BE=N.writeInt32BE,e.writeFloatLE=N.writeFloatLE,e.writeFloatBE=N.writeFloatBE,e.writeDoubleLE=N.writeDoubleLE,e.writeDoubleBE=N.writeDoubleBE,e.fill=N.fill,e.inspect=N.inspect,e.toArrayBuffer=N.toArrayBuffer,e};var O=/[^+\/0-9A-z\-]/g},{"base64-js":3,ieee754:4,"is-array":5}],3:[function(e,n,f){var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(e){"use strict";function n(e){var n=e.charCodeAt(0);return n===t||n===p?62:n===l||n===c?63:s>n?-1:s+10>n?n-s+26+26:a+26>n?n-a:u+26>n?n-u+26:void 0}function f(e){function f(e){u[p++]=e}var o,d,t,l,s,u;if(e.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var a=e.length;s="="===e.charAt(a-2)?2:"="===e.charAt(a-1)?1:0,u=new i(3*e.length/4-s),t=s>0?e.length-4:e.length;var p=0;for(o=0,d=0;t>o;o+=4,d+=3)l=n(e.charAt(o))<<18|n(e.charAt(o+1))<<12|n(e.charAt(o+2))<<6|n(e.charAt(o+3)),f((16711680&l)>>16),f((65280&l)>>8),f(255&l);return 2===s?(l=n(e.charAt(o))<<2|n(e.charAt(o+1))>>4,f(255&l)):1===s&&(l=n(e.charAt(o))<<10|n(e.charAt(o+1))<<4|n(e.charAt(o+2))>>2,f(l>>8&255),f(255&l)),u}function d(e){function n(e){return o.charAt(e)}function f(e){return n(e>>18&63)+n(e>>12&63)+n(e>>6&63)+n(63&e)}var d,i,t,l=e.length%3,s="";for(d=0,t=e.length-l;t>d;d+=3)i=(e[d]<<16)+(e[d+1]<<8)+e[d+2],s+=f(i);switch(l){case 1:i=e[e.length-1],s+=n(i>>2),s+=n(i<<4&63),s+="==";break;case 2:i=(e[e.length-2]<<8)+e[e.length-1],s+=n(i>>10),s+=n(i>>4&63),s+=n(i<<2&63),s+="="}return s}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,t="+".charCodeAt(0),l="/".charCodeAt(0),s="0".charCodeAt(0),u="a".charCodeAt(0),a="A".charCodeAt(0),p="-".charCodeAt(0),c="_".charCodeAt(0);e.toByteArray=f,e.fromByteArray=d}("undefined"==typeof f?this.base64js={}:f)},{}],4:[function(e,n,f){f.read=function(e,n,f,o,d){var i,t,l=8*d-o-1,s=(1<>1,a=-7,p=f?d-1:0,c=f?-1:1,y=e[n+p];for(p+=c,i=y&(1<<-a)-1,y>>=-a,a+=l;a>0;i=256*i+e[n+p],p+=c,a-=8);for(t=i&(1<<-a)-1,i>>=-a,a+=o;a>0;t=256*t+e[n+p],p+=c,a-=8);if(0===i)i=1-u;else{if(i===s)return t?0/0:1/0*(y?-1:1);t+=Math.pow(2,o),i-=u}return(y?-1:1)*t*Math.pow(2,i-o)},f.write=function(e,n,f,o,d,i){var t,l,s,u=8*i-d-1,a=(1<>1,c=23===d?Math.pow(2,-24)-Math.pow(2,-77):0,y=o?0:i-1,m=o?1:-1,r=0>n||0===n&&0>1/n?1:0;for(n=Math.abs(n),isNaN(n)||1/0===n?(l=isNaN(n)?1:0,t=a):(t=Math.floor(Math.log(n)/Math.LN2),n*(s=Math.pow(2,-t))<1&&(t--,s*=2),n+=t+p>=1?c/s:c*Math.pow(2,1-p),n*s>=2&&(t++,s/=2),t+p>=a?(l=0,t=a):t+p>=1?(l=(n*s-1)*Math.pow(2,d),t+=p):(l=n*Math.pow(2,p-1)*Math.pow(2,d),t=0));d>=8;e[f+y]=255&l,y+=m,l/=256,d-=8);for(t=t<0;e[f+y]=255&t,y+=m,t/=256,u-=8);e[f+y-m]|=128*r}},{}],5:[function(e,n){var f=Array.isArray,o=Object.prototype.toString;n.exports=f||function(e){return!!e&&"[object Array]"==o.call(e)}},{}],6:[function(_dereq_,module,exports){(function(Buffer){var fabric=fabric||{version:"1.4.11"};"undefined"!=typeof exports&&(exports.fabric=fabric),"undefined"!=typeof document&&"undefined"!=typeof window?(fabric.document=document,fabric.window=window):(fabric.document=_dereq_("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],fabric.DPI=96;var Cufon=function(){function e(e){var n=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(n["units-per-em"],10),this.family=n["font-family"].toLowerCase(),this.weight=n["font-weight"],this.style=n["font-style"]||"normal",this.viewBox=function(){var e=n.bbox.split(/\s+/),f={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return f.width=f.maxX-f.minX,f.height=f.maxY-f.minY,f.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},f}(),this.ascent=-parseInt(n.ascent,10),this.descent=-parseInt(n.descent,10),this.height=-this.ascent+this.descent}function n(){var e={},n={oblique:"italic",italic:"oblique"};this.add=function(n){(e[n.style]||(e[n.style]={}))[n.weight]=n},this.get=function(f,o){var d=e[f]||e[n[f]]||e.normal||e.italic||e.oblique;if(!d)return null;if(o={normal:400,bold:700}[o]||parseInt(o,10),d[o])return d[o];var i,t,l={1:1,99:0}[o%100],s=[];void 0===l&&(l=o>400),500==o&&(o=400);for(var u in d)u=parseInt(u,10),(!i||i>u)&&(i=u),(!t||u>t)&&(t=u),s.push(u);return i>o&&(o=i),o>t&&(o=t),s.sort(function(e,n){return(l?e>o&&n>o?n>e:e>n:o>e&&o>n?e>n:n>e)?-1:1}),d[s[0]]}}function f(){function e(e,n){return e.contains?e.contains(n):16&e.compareDocumentPosition(n)}function n(n){var f=n.relatedTarget;f&&!e(this,f)&&o(this)}function f(){o(this)}function o(e){setTimeout(function(){y.replace(e,w.get(e).options,!0)},10)}this.attach=function(e){void 0===e.onmouseenter?(i(e,"mouseover",n),i(e,"mouseout",n)):(i(e,"mouseenter",f),i(e,"mouseleave",f))}}function o(){function e(e){return e.cufid||(e.cufid=++f)}var n={},f=0;this.get=function(f){var o=e(f);return n[o]||(n[o]={})}}function d(e){var n={},f={};this.get=function(f){return void 0!=n[f]?n[f]:e[f]},this.getSize=function(e,n){return f[e]||(f[e]=new r.Size(this.get(e),n))},this.extend=function(e){for(var f in e)n[f]=e[f];return this}}function i(e,n,f){e.addEventListener?e.addEventListener(n,f,!1):e.attachEvent&&e.attachEvent("on"+n,function(){return f.call(e,fabric.window.event)})}function t(e,n){var f=w.get(e);return f.options?e:(n.hover&&n.hoverables[e.nodeName.toLowerCase()]&&b.attach(e),f.options=n,e)}function l(e){var n={};return function(f){return n.hasOwnProperty(f)||(n[f]=e.apply(null,arguments)),n[f]}}function s(e,n){n||(n=r.getStyle(e));for(var f,o=r.quotedList(n.get("fontFamily").toLowerCase()),d=0,i=o.length;i>d;++d)if(f=o[d],x[f])return x[f].get(n.get("fontStyle"),n.get("fontWeight"));return null}function u(e){return fabric.document.getElementsByTagName(e)}function a(){for(var e,n={},f=0,o=arguments.length;o>f;++f)for(e in arguments[f])n[e]=arguments[f][e];return n}function p(e,n,f,o,d,i){var t=o.separate;if("none"==t)return h[o.engine].apply(null,arguments);var l,s=fabric.document.createDocumentFragment(),u=n.split(k[t]),a="words"==t;a&&v&&(/^\s/.test(n)&&u.unshift(""),/\s$/.test(n)&&u.push(""));for(var p=0,c=u.length;c>p;++p)l=h[o.engine](e,a?r.textAlign(u[p],f,p,c):u[p],f,o,d,i,c-1>p),l&&s.appendChild(l);return s}function c(e,n){for(var f,o,d,i,l=t(e,n).firstChild;l;l=d){if(d=l.nextSibling,i=!1,1==l.nodeType){if(!l.firstChild)continue;if(!/cufon/.test(l.className)){arguments.callee(l,n);continue}i=!0}if(o||(o=r.getStyle(e).extend(n)),f||(f=s(e,o)),f)if(i)h[n.engine](f,null,o,n,l,e);else{var u=l.data;if("undefined"!=typeof G_vmlCanvasManager&&(u=u.replace(/\r/g,"\n")),""!==u){var a=p(f,u,o,n,l,e);a?l.parentNode.replaceChild(a,l):l.parentNode.removeChild(l)}}}}var y=function(){return y.replace.apply(null,arguments)},m=y.DOM={ready:function(){var e=!1,n={loaded:1,complete:1},f=[],o=function(){if(!e){e=!0;for(var n;n=f.shift();n());}};return fabric.document.addEventListener&&(fabric.document.addEventListener("DOMContentLoaded",o,!1),fabric.window.addEventListener("pageshow",o,!1)),!fabric.window.opera&&fabric.document.readyState&&function(){n[fabric.document.readyState]?o():setTimeout(arguments.callee,10)}(),fabric.document.readyState&&fabric.document.createStyleSheet&&function(){try{fabric.document.body.doScroll("left"),o()}catch(e){setTimeout(arguments.callee,1)}}(),i(fabric.window,"load",o),function(n){arguments.length?e?n():f.push(n):o()}}()},r=y.CSS={Size:function(e,n){this.value=parseFloat(e),this.unit=String(e).match(/[a-z%]*$/)[0]||"px",this.convert=function(e){return e/n*this.value},this.convertFrom=function(e){return e/this.value*n},this.toString=function(){return this.value+this.unit}},getStyle:function(e){return new d(e.style)},quotedList:l(function(e){for(var n,f=[],o=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g;n=o.exec(e);)f.push(n[3]||n[1]);return f}),ready:function(){var e=!1,n=[],f=function(){e=!0;for(var f;f=n.shift();f());},o=Object.prototype.propertyIsEnumerable?u("style"):{length:0},d=u("link");return m.ready(function(){for(var e,n=0,i=0,t=d.length;e=d[i],t>i;++i)e.disabled||"stylesheet"!=e.rel.toLowerCase()||++n;fabric.document.styleSheets.length>=o.length+n?f():setTimeout(arguments.callee,10)}),function(f){e?f():n.push(f)}}(),supports:function(e,n){var f=fabric.document.createElement("span").style;return void 0===f[e]?!1:(f[e]=n,f[e]===n)},textAlign:function(e,n,f,o){return"right"==n.get("textAlign")?f>0&&(e=" "+e):o-1>f&&(e+=" "),e},textDecoration:function(e,n){n||(n=this.getStyle(e));for(var f={underline:null,overline:null,"line-through":null},o=e;o.parentNode&&1==o.parentNode.nodeType;){var d=!0;for(var i in f)f[i]||(-1!=n.get("textDecoration").indexOf(i)&&(f[i]=n.get("color")),d=!1);if(d)break;n=this.getStyle(o=o.parentNode)}return f},textShadow:l(function(e){if("none"==e)return null;for(var n,f=[],o={},d=0,i=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/gi;n=i.exec(e);)","==n[0]?(f.push(o),o={},d=0):n[1]?o.color=n[1]:o[["offX","offY","blur"][d++]]=n[2];return f.push(o),f}),color:l(function(e){var n={};return n.color=e.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(e,f,o){return n.opacity=parseFloat(o),"rgb("+f+")"}),n}),textTransform:function(e,n){return e[{uppercase:"toUpperCase",lowercase:"toLowerCase"}[n.get("textTransform")]||"toString"]()}},v=0==" ".split(/\s+/).length,w=new o,b=new f,g=[],h={},x={},j={engine:null,hover:!1,hoverables:{a:!0},printable:!0,selector:fabric.window.Sizzle||fabric.window.jQuery&&function(e){return jQuery(e)}||fabric.window.dojo&&dojo.query||fabric.window.$$&&function(e){return $$(e)}||fabric.window.$&&function(e){return $(e)}||fabric.document.querySelectorAll&&function(e){return fabric.document.querySelectorAll(e)}||u,separate:"words",textShadow:"none"},k={words:/\s+/,characters:""};return y.now=function(){return m.ready(),y},y.refresh=function(){for(var e=g.splice(0,g.length),n=0,f=e.length;f>n;++n)y.replace.apply(null,e[n]);return y},y.registerEngine=function(e,n){return n?(h[e]=n,y.set("engine",e)):y},y.registerFont=function(f){var o=new e(f),d=o.family;return x[d]||(x[d]=new n),x[d].add(o),y.set("fontFamily",'"'+d+'"')},y.replace=function(e,n,f){return n=a(j,n),n.engine?("string"==typeof n.textShadow&&n.textShadow&&(n.textShadow=r.textShadow(n.textShadow)),f||g.push(arguments),(e.nodeType||"string"==typeof e)&&(e=[e]),r.ready(function(){for(var f=0,o=e.length;o>f;++f){var d=e[f];"string"==typeof d?y.replace(n.selector(d),n,!0):c(d,n)}}),y):y},y.replaceElement=function(e,n){return n=a(j,n),"string"==typeof n.textShadow&&n.textShadow&&(n.textShadow=r.textShadow(n.textShadow)),c(e,n)},y.engines=h,y.fonts=x,y.getOptions=function(){return a(j)},y.set=function(e,n){return j[e]=n,y},y}();Cufon.registerEngine("canvas",function(){function e(e,n){var f,o=0,d=0,i=[],t=/([mrvxe])([^a-z]*)/g;e:for(var l=0;f=t.exec(e);++l){var s=f[2].split(",");switch(f[1]){case"v":i[l]={m:"bezierCurveTo",a:[o+~~s[0],d+~~s[1],o+~~s[2],d+~~s[3],o+=~~s[4],d+=~~s[5]]};break;case"r":i[l]={m:"lineTo",a:[o+=~~s[0],d+=~~s[1]]};break;case"m":i[l]={m:"moveTo",a:[o=~~s[0],d=~~s[1]]};break;case"x":i[l]={m:"closePath",a:[]};break;case"e":break e}n[i[l].m].apply(n,i[l].a)}return i}function n(e,n){for(var f=0,o=e.length;o>f;++f){var d=e[f];n[d.m].apply(n,d.a)}}var f=Cufon.CSS.supports("display","inline-block"),o=!f&&("BackCompat"==fabric.document.compatMode||/frameset|transitional/i.test(fabric.document.doctype.publicId)),d=fabric.document.createElement("style");d.type="text/css";var i=fabric.document.createTextNode(".cufon-canvas{text-indent:0}@media screen,projection{.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle"+(o?"":";font-size:1px;line-height:1px")+"}.cufon-canvas .cufon-alt{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden}"+(f?".cufon-canvas canvas{position:relative}":".cufon-canvas canvas{position:absolute}")+"}@media print{.cufon-canvas{padding:0 !important}.cufon-canvas canvas{display:none}.cufon-canvas .cufon-alt{display:inline}}");try{d.appendChild(i)}catch(t){d.setAttribute("type","text/css"),d.styleSheet.cssText=i.data}return fabric.document.getElementsByTagName("head")[0].appendChild(d),function(o,d,i,t,l){function s(){T.save();var e=0,n=0,f=[{left:0}];t.backgroundColor&&(T.save(),T.fillStyle=t.backgroundColor,T.translate(0,o.ascent),T.fillRect(0,0,A+10,(-o.ascent+o.descent)*D),T.restore()),"right"===t.textAlign?(T.translate(G[n],0),f[0].left=G[n]*U):"center"===t.textAlign&&(T.translate(G[n]/2,0),f[0].left=G[n]/2*U);for(var d=0,i=z.length;i>d;++d)if("\n"!==z[d]){var l=o.glyphs[z[d]]||o.missingGlyph;if(l){var s=Number(l.w||o.w)+y;t.textBackgroundColor&&(T.save(),T.fillStyle=t.textBackgroundColor,T.translate(0,o.ascent),T.fillRect(0,0,s+10,-o.ascent+o.descent),T.restore()),T.translate(s,0),e+=s,d==i-1&&(f[f.length-1].width=e*U,f[f.length-1].height=(-o.ascent+o.descent)*U)}}else{n++;var u=-o.ascent-o.ascent/5*t.lineHeight,a=f[f.length-1],p={left:0};a.width=e*U,a.height=(-o.ascent+o.descent)*U,"right"===t.textAlign?(T.translate(-A,u),T.translate(G[n],0),p.left=G[n]*U):"center"===t.textAlign?(T.translate(-e-G[n-1]/2,u),T.translate(G[n]/2,0),p.left=G[n]/2*U):T.translate(-e,u),f.push(p),e=0}T.restore(),Cufon.textOptions.boundaries=f}function u(f){T.fillStyle=f||Cufon.textOptions.color||i.get("color");var d=0,l=0;"right"===t.textAlign?T.translate(G[l],0):"center"===t.textAlign&&T.translate(G[l]/2,0);for(var s=0,u=z.length;u>s;++s)if("\n"!==z[s]){var a=o.glyphs[z[s]]||o.missingGlyph;if(a){var p=Number(a.w||o.w)+y;W&&(T.save(),T.strokeStyle=T.fillStyle,T.lineWidth+=T.lineWidth,T.beginPath(),W.underline&&(T.moveTo(0,-o.face["underline-position"]+.5),T.lineTo(p,-o.face["underline-position"]+.5)),W.overline&&(T.moveTo(0,o.ascent+.5),T.lineTo(p,o.ascent+.5)),W["line-through"]&&(T.moveTo(0,-o.descent+.5),T.lineTo(p,-o.descent+.5)),T.stroke(),T.restore()),X&&(T.save(),T.transform(1,0,-.25,1,0,0)),T.beginPath(),a.d&&(a.code?n(a.code,T):a.code=e("m"+a.d,T)),T.fill(),t.strokeStyle&&(T.closePath(),T.save(),T.lineWidth=t.strokeWidth,T.strokeStyle=t.strokeStyle,T.stroke(),T.restore()),X&&T.restore(),T.translate(p,0),d+=p}}else{l++;var c=-o.ascent-o.ascent/5*t.lineHeight;"right"===t.textAlign?(T.translate(-A,c),T.translate(G[l],0)):"center"===t.textAlign?(T.translate(-d-G[l-1]/2,c),T.translate(G[l]/2,0)):T.translate(-d,c),d=0}}var a=null===d,p=o.viewBox,c=i.getSize("fontSize",o.baseSize),y=i.get("letterSpacing");y="normal"==y?0:c.convertFrom(parseInt(y,10));var m=0,r=0,v=0,w=0,b=t.textShadow,g=[];if(Cufon.textOptions.shadowOffsets=[],Cufon.textOptions.shadows=null,b){Cufon.textOptions.shadows=b;for(var h=0,x=b.length;x>h;++h){var j=b[h],k=c.convertFrom(parseFloat(j.offX)),q=c.convertFrom(parseFloat(j.offY));g[h]=[k,q]}}for(var z=Cufon.CSS.textTransform(a?l.alt:d,i).split(""),A=0,B=null,C=0,D=1,E=[],h=0,x=z.length;x>h;++h)if("\n"!==z[h]){var F=o.glyphs[z[h]]||o.missingGlyph;F&&(A+=B=Number(F.w||o.w)+y)}else D++,A>C&&(C=A),E.push(A),A=0;E.push(A),A=Math.max(C,A);for(var G=[],h=E.length;h--;)G[h]=A-E[h];if(null===B)return null;r+=p.width-B,w+=p.minX;var H,I;if(a)H=l,I=l.firstChild;else if(H=fabric.document.createElement("span"),H.className="cufon cufon-canvas",H.alt=d,I=fabric.document.createElement("canvas"),H.appendChild(I),t.printable){var J=fabric.document.createElement("span"); -J.className="cufon-alt",J.appendChild(fabric.document.createTextNode(d)),H.appendChild(J)}var K=H.style,L=I.style||{},M=c.convert(p.height-m+v),N=Math.ceil(M),O=N/M;I.width=Math.ceil(c.convert(A+r-w)*O),I.height=N,m+=p.minY,L.top=Math.round(c.convert(m-o.ascent))+"px",L.left=Math.round(c.convert(w))+"px";var P=Math.ceil(c.convert(A*O)),Q=P+"px",R=c.convert(o.height),S=(t.lineHeight-1)*c.convert(-o.ascent/5)*(D-1);Cufon.textOptions.width=P,Cufon.textOptions.height=R*D+S,Cufon.textOptions.lines=D,Cufon.textOptions.totalLineHeight=S,f?(K.width=Q,K.height=R+"px"):(K.paddingLeft=Q,K.paddingBottom=R-1+"px");var T=Cufon.textOptions.context||I.getContext("2d"),U=N/p.height;Cufon.textOptions.fontAscent=o.ascent*U,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,h=g.length;h--;)V[h]=[g[h][0]*U,g[h][1]*U];T.save(),T.scale(U,U),T.translate(-w-1/U*I.width/2+(Cufon.fonts[o.family].offsetLeft||0),-m-Cufon.textOptions.height/U/2+(Cufon.fonts[o.family].offsetTop||0)),T.lineWidth=o.face["underline-thickness"],T.save();var W=Cufon.getTextDecoration(t),X="italic"===t.fontStyle;if(T.save(),s(),b)for(var h=0,x=b.length;x>h;++h){var j=b[h];T.save(),T.translate.apply(T,g[h]),u(j.color),T.restore()}return u(),T.restore(),T.restore(),T.restore(),H}}()),Cufon.registerEngine("vml",function(){function e(e,f){return n(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function n(e,n){if(/px$/i.test(n))return parseFloat(n);var f=e.style.left,o=e.runtimeStyle.left;e.runtimeStyle.left=e.currentStyle.left,e.style.left=n;var d=e.style.pixelLeft;return e.style.left=f,e.runtimeStyle.left=o,d}if(fabric.document.namespaces){var f=fabric.document.createElement("canvas");if(!(f&&f.getContext&&f.getContext.apply)){null==fabric.document.namespaces.cvml&&fabric.document.namespaces.add("cvml","urn:schemas-microsoft-com:vml");var o=fabric.document.createElement("cvml:shape");if(o.style.behavior="url(#default#VML)",o.coordsize)return o=null,fabric.document.write(''),function(f,o,d,i,t,l,s){var u=null===o;u&&(o=t.alt);var a=f.viewBox,p=d.computedFontSize||(d.computedFontSize=new Cufon.CSS.Size(e(l,d.get("fontSize"))+"px",f.baseSize)),c=d.computedLSpacing;void 0==c&&(c=d.get("letterSpacing"),d.computedLSpacing=c="normal"==c?0:~~p.convertFrom(n(l,c)));var y,m;if(u)y=t,m=t.firstChild;else{if(y=fabric.document.createElement("span"),y.className="cufon cufon-vml",y.alt=o,m=fabric.document.createElement("span"),m.className="cufon-vml-canvas",y.appendChild(m),i.printable){var r=fabric.document.createElement("span");r.className="cufon-alt",r.appendChild(fabric.document.createTextNode(o)),y.appendChild(r)}s||y.appendChild(fabric.document.createElement("cvml:shape"))}var v=y.style,w=m.style,b=p.convert(a.height),g=Math.ceil(b),h=g/b,x=a.minX,j=a.minY;w.height=g,w.top=Math.round(p.convert(j-f.ascent)),w.left=Math.round(p.convert(x)),v.height=p.convert(f.height)+"px";for(var k,q,z=(Cufon.getTextDecoration(i),d.get("color")),A=Cufon.CSS.textTransform(o,d).split(""),B=0,C=0,D=null,E=i.textShadow,F=0,G=0,H=A.length;H>F;++F)k=f.glyphs[A[F]]||f.missingGlyph,k&&(B+=D=~~(k.w||f.w)+c);if(null===D)return null;var I,J=-x+B+(a.width-D),K=p.convert(J*h),L=Math.round(K),M=J+","+a.height,N="r"+M+"nsnf";for(F=0;H>F;++F)if(k=f.glyphs[A[F]]||f.missingGlyph){u?(q=m.childNodes[G],q.firstChild&&q.removeChild(q.firstChild)):(q=fabric.document.createElement("cvml:shape"),m.appendChild(q)),q.stroked="f",q.coordsize=M,q.coordorigin=I=x-C+","+j,q.path=(k.d?"m"+k.d+"xe":"")+"m"+I+N,q.fillcolor=z;var O=q.style;if(O.width=L,O.height=g,E){var P,Q=E[0],R=E[1],S=Cufon.CSS.color(Q.color),T=fabric.document.createElement("cvml:shadow");T.on="t",T.color=S.color,T.offset=Q.offX+","+Q.offY,R&&(P=Cufon.CSS.color(R.color),T.type="double",T.color2=P.color,T.offset2=R.offX+","+R.offY),T.opacity=S.opacity||P&&P.opacity||1,q.appendChild(T)}C+=~~(k.w||f.w)+c,++G}return v.width=Math.max(Math.ceil(p.convert(B*h)),0),y}}}}()),Cufon.getTextDecoration=function(e){return{underline:"underline"===e.textDecoration,overline:"overline"===e.textDecoration,"line-through":"line-through"===e.textDecoration}},"undefined"!=typeof exports&&(exports.Cufon=Cufon),"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(e){return 10>e?"0"+e:e}function quote(e){return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,function(e){var n=meta[e];return"string"==typeof n?n:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,n){var f,o,d,i,t,l=gap,s=n[e];switch(s&&"object"==typeof s&&"function"==typeof s.toJSON&&(s=s.toJSON(e)),"function"==typeof rep&&(s=rep.call(n,e,s)),typeof s){case"string":return quote(s);case"number":return isFinite(s)?String(s):"null";case"boolean":case"null":return String(s);case"object":if(!s)return"null";if(gap+=indent,t=[],"[object Array]"===Object.prototype.toString.apply(s)){for(i=s.length,f=0;i>f;f+=1)t[f]=str(f,s)||"null";return d=0===t.length?"[]":gap?"[\n"+gap+t.join(",\n"+gap)+"\n"+l+"]":"["+t.join(",")+"]",gap=l,d}if(rep&&"object"==typeof rep)for(i=rep.length,f=0;i>f;f+=1)"string"==typeof rep[f]&&(o=rep[f],d=str(o,s),d&&t.push(quote(o)+(gap?": ":":")+d));else for(o in s)Object.prototype.hasOwnProperty.call(s,o)&&(d=str(o,s),d&&t.push(quote(o)+(gap?": ":":")+d));return d=0===t.length?"{}":gap?"{\n"+gap+t.join(",\n"+gap)+"\n"+l+"}":"{"+t.join(",")+"}",gap=l,d}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx,escapable,gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(e,n,f){var o;if(gap="",indent="","number"==typeof f)for(o=0;f>o;o+=1)indent+=" ";else"string"==typeof f&&(indent=f);if(rep=n,n&&"function"!=typeof n&&("object"!=typeof n||"number"!=typeof n.length))throw new Error("JSON.stringify");return str("",{"":e})}),"function"!=typeof JSON.parse&&(cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,JSON.parse=function(text,reviver){function walk(e,n){var f,o,d=e[n];if(d&&"object"==typeof d)for(f in d)Object.prototype.hasOwnProperty.call(d,f)&&(o=walk(d,f),void 0!==o?d[f]=o:delete d[f]);return reviver.call(e,n,d)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),function(){function e(e,n){this.__eventListeners[e]&&(n?fabric.util.removeFromArray(this.__eventListeners[e],n):this.__eventListeners[e].length=0)}function n(e,n){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var f in e)this.on(f,e[f]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(n);return this}function f(n,f){if(this.__eventListeners){if(0===arguments.length)this.__eventListeners={};else if(1===arguments.length&&"object"==typeof arguments[0])for(var o in n)e.call(this,o,n[o]);else e.call(this,n,f);return this}}function o(e,n){if(this.__eventListeners){var f=this.__eventListeners[e];if(f){for(var o=0,d=f.length;d>o;o++)f[o].call(this,n||{});return this}}}fabric.Observable={observe:n,stopObserving:f,fire:o,on:n,off:f,trigger:o}}(),fabric.Collection={add:function(){this._objects.push.apply(this._objects,arguments);for(var e=0,n=arguments.length;n>e;e++)this._onObjectAdded(arguments[e]);return this.renderOnAddRemove&&this.renderAll(),this},insertAt:function(e,n,f){var o=this.getObjects();return f?o[n]=e:o.splice(n,0,e),this._onObjectAdded(e),this.renderOnAddRemove&&this.renderAll(),this},remove:function(){for(var e,n=this.getObjects(),f=0,o=arguments.length;o>f;f++)e=n.indexOf(arguments[f]),-1!==e&&(n.splice(e,1),this._onObjectRemoved(arguments[f]));return this.renderOnAddRemove&&this.renderAll(),this},forEachObject:function(e,n){for(var f=this.getObjects(),o=f.length;o--;)e.call(n,f[o],o,f);return this},getObjects:function(e){return"undefined"==typeof e?this._objects:this._objects.filter(function(n){return n.type===e})},item:function(e){return this.getObjects()[e]},isEmpty:function(){return 0===this.getObjects().length},size:function(){return this.getObjects().length},contains:function(e){return this.getObjects().indexOf(e)>-1},complexity:function(){return this.getObjects().reduce(function(e,n){return e+=n.complexity?n.complexity():0},0)}},function(e){var n=Math.sqrt,f=Math.atan2,o=Math.PI/180;fabric.util={removeFromArray:function(e,n){var f=e.indexOf(n);return-1!==f&&e.splice(f,1),e},getRandomInt:function(e,n){return Math.floor(Math.random()*(n-e+1))+e},degreesToRadians:function(e){return e*o},radiansToDegrees:function(e){return e/o},rotatePoint:function(e,n,f){var o=Math.sin(f),d=Math.cos(f);e.subtractEquals(n);var i=e.x*d-e.y*o,t=e.x*o+e.y*d;return new fabric.Point(i,t).addEquals(n)},transformPoint:function(e,n,f){return f?new fabric.Point(n[0]*e.x+n[1]*e.y,n[2]*e.x+n[3]*e.y):new fabric.Point(n[0]*e.x+n[1]*e.y+n[4],n[2]*e.x+n[3]*e.y+n[5])},invertTransform:function(e){var n=e.slice(),f=1/(e[0]*e[3]-e[1]*e[2]);n=[f*e[3],-f*e[1],-f*e[2],f*e[0],0,0];var o=fabric.util.transformPoint({x:e[4],y:e[5]},n);return n[4]=-o.x,n[5]=-o.y,n},toFixed:function(e,n){return parseFloat(Number(e).toFixed(n))},parseUnit:function(e){var n=/\D{0,2}$/.exec(e),f=parseFloat(e);switch(n[0]){case"mm":return f*fabric.DPI/25.4;case"cm":return f*fabric.DPI/2.54;case"in":return f*fabric.DPI;case"pt":return f*fabric.DPI/72;case"pc":return f*fabric.DPI/72*12;default:return f}},falseFunction:function(){return!1},getKlass:function(e,n){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(n)[e]},resolveNamespace:function(n){if(!n)return fabric;for(var f=n.split("."),o=f.length,d=e||fabric.window,i=0;o>i;++i)d=d[f[i]];return d},loadImage:function(e,n,f,o){if(!e)return void(n&&n.call(f,e));var d=fabric.util.createImage();d.onload=function(){n&&n.call(f,d),d=d.onload=d.onerror=null},d.onerror=function(){fabric.log("Error loading "+d.src),n&&n.call(f,null,!0),d=d.onload=d.onerror=null},0!==e.indexOf("data")&&"undefined"!=typeof o&&(d.crossOrigin=o),d.src=e},enlivenObjects:function(e,n,f,o){function d(){++t===l&&n&&n(i)}e=e||[];var i=[],t=0,l=e.length;return l?void e.forEach(function(e,n){if(!e||!e.type)return void d();var t=fabric.util.getKlass(e.type,f);t.async?t.fromObject(e,function(f,t){t||(i[n]=f,o&&o(e,i[n])),d()}):(i[n]=t.fromObject(e),o&&o(e,i[n]),d())}):void(n&&n(i))},groupSVGElements:function(e,n,f){var o;return o=new fabric.PathGroup(e,n),"undefined"!=typeof f&&o.setSourcePath(f),o},populateWithProperties:function(e,n,f){if(f&&"[object Array]"===Object.prototype.toString.call(f))for(var o=0,d=f.length;d>o;o++)f[o]in e&&(n[f[o]]=e[f[o]])},drawDashedLine:function(e,o,d,i,t,l){var s=i-o,u=t-d,a=n(s*s+u*u),p=f(u,s),c=l.length,y=0,m=!0;for(e.save(),e.translate(o,d),e.moveTo(0,0),e.rotate(p),o=0;a>o;)o+=l[y++%c],o>a&&(o=a),e[m?"lineTo":"moveTo"](o,0),m=!m;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),e.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(_dereq_("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){for(var n=e.prototype,f=n.stateProperties.length;f--;){var o=n.stateProperties[f],d=o.charAt(0).toUpperCase()+o.slice(1),i="set"+d,t="get"+d;n[t]||(n[t]=function(e){return new Function('return this.get("'+e+'")')}(o)),n[i]||(n[i]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(o))}},clipContext:function(e,n){n.save(),n.beginPath(),e.clipTo(n),n.clip()},multiplyTransformMatrices:function(e,n){for(var f=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],o=[[n[0],n[2],n[4]],[n[1],n[3],n[5]],[0,0,1]],d=[],i=0;3>i;i++){d[i]=[];for(var t=0;3>t;t++){for(var l=0,s=0;3>s;s++)l+=f[i][s]*o[s][t];d[i][t]=l}}return[d[0][0],d[1][0],d[0][1],d[1][1],d[0][2],d[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(e,n,f,o){o>0&&(n>o?n-=o:n=0,f>o?f-=o:f=0);for(var d=!0,i=e.getImageData(n,f,2*o||1,2*o||1),t=3,l=i.data.length;l>t;t+=4){var s=i.data[t];if(d=0>=s,d===!1)break}return i=null,d}}}("undefined"!=typeof exports?exports:this),function(){function e(e,d,t,l,s,u,a){var p=i.call(arguments);if(o[p])return o[p];var c=Math.PI,y=a*(c/180),m=Math.sin(y),r=Math.cos(y),v=0,w=0;t=Math.abs(t),l=Math.abs(l);var b=-r*e-m*d,g=-r*d+m*e,h=t*t,x=l*l,j=g*g,k=b*b,q=4*h*x-h*j-x*k,z=0;if(0>q){var A=Math.sqrt(1-.25*q/(h*x));t*=A,l*=A}else z=(s===u?-.5:.5)*Math.sqrt(q/(h*j+x*k));var B=z*t*g/l,C=-z*l*b/t,D=r*B-m*C+e/2,E=m*B+r*C+d/2,F=f(1,0,(b-B)/t,(g-C)/l),G=f((b-B)/t,(g-C)/l,(-b-B)/t,(-g-C)/l);0===u&&G>0?G-=2*c:1===u&&0>G&&(G+=2*c);for(var H=Math.ceil(Math.abs(G/(.5*c))),I=[],J=G/H,K=8/3*Math.sin(J/4)*Math.sin(J/4)/Math.sin(J/2),L=F+J,M=0;H>M;M++)I[M]=n(F,L,r,m,t,l,D,E,K,v,w),v=I[M][4],w=I[M][5],F+=J,L+=J;return o[p]=I,I}function n(e,n,f,o,t,l,s,u,a,p,c){var y=i.call(arguments);if(d[y])return d[y];var m=Math.cos(e),r=Math.sin(e),v=Math.cos(n),w=Math.sin(n),b=f*t*v-o*l*w+s,g=o*t*v+f*l*w+u,h=p+a*(-f*t*r-o*l*m),x=c+a*(-o*t*r+f*l*m),j=b+a*(f*t*w+o*l*v),k=g+a*(o*t*w-f*l*v);return d[y]=[h,x,j,k,b,g],d[y]}function f(e,n,f,o){var d=Math.atan2(n,e),i=Math.atan2(o,f);return i>=d?i-d:2*Math.PI-(d-i)}var o={},d={},i=Array.prototype.join;fabric.util.drawArc=function(n,f,o,d){for(var i=d[0],t=d[1],l=d[2],s=d[3],u=d[4],a=d[5],p=d[6],c=[[],[],[],[]],y=e(a-f,p-o,i,t,s,u,l),m=0,r=y.length;r>m;m++)c[m][0]=y[m][0]+f,c[m][1]=y[m][1]+o,c[m][2]=y[m][2]+f,c[m][3]=y[m][3]+o,c[m][4]=y[m][4]+f,c[m][5]=y[m][5]+o,n.bezierCurveTo.apply(n,c[m])}}(),function(){function e(e,n){for(var f=d.call(arguments,2),o=[],i=0,t=e.length;t>i;i++)o[i]=f.length?e[i][n].apply(e[i],f):e[i][n].call(e[i]);return o}function n(e,n){return o(e,n,function(e,n){return e>=n})}function f(e,n){return o(e,n,function(e,n){return n>e})}function o(e,n,f){if(e&&0!==e.length){var o=e.length-1,d=n?e[o][n]:e[o];if(n)for(;o--;)f(e[o][n],d)&&(d=e[o][n]);else for(;o--;)f(e[o],d)&&(d=e[o]);return d}}var d=Array.prototype.slice;fabric.util.array={invoke:e,min:f,max:n}}(),function(){function e(e,n){for(var f in n)e[f]=n[f];return e}function n(n){return e({},n)}fabric.util.object={extend:e,clone:n}}(),function(){function e(e){return e.replace(/-+(.)?/g,function(e,n){return n?n.toUpperCase():""})}function n(e,n){return e.charAt(0).toUpperCase()+(n?e.slice(1):e.slice(1).toLowerCase())}function f(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}fabric.util.string={camelize:e,capitalize:n,escapeXml:f}}(),function(){function e(){}function n(e){var n=this.constructor.superclass.prototype[e];return arguments.length>1?n.apply(this,o.call(arguments,1)):n.call(this)}function f(){function f(){this.initialize.apply(this,arguments)}var i=null,l=o.call(arguments,0);"function"==typeof l[0]&&(i=l.shift()),f.superclass=i,f.subclasses=[],i&&(e.prototype=i.prototype,f.prototype=new e,i.subclasses.push(f));for(var s=0,u=l.length;u>s;s++)t(f,l[s],i);return f.prototype.initialize||(f.prototype.initialize=d),f.prototype.constructor=f,f.prototype.callSuper=n,f}var o=Array.prototype.slice,d=function(){},i=function(){for(var e in{toString:1})if("toString"===e)return!1;return!0}(),t=function(e,n,f){for(var o in n)e.prototype[o]=o in e.prototype&&"function"==typeof e.prototype[o]&&(n[o]+"").indexOf("callSuper")>-1?function(e){return function(){var o=this.constructor.superclass;this.constructor.superclass=f;var d=n[e].apply(this,arguments);return this.constructor.superclass=o,"initialize"!==e?d:void 0}}(o):n[o],i&&(n.toString!==Object.prototype.toString&&(e.prototype.toString=n.toString),n.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=n.valueOf))};fabric.util.createClass=f}(),function(){function e(e){var n,f,o=Array.prototype.slice.call(arguments,1),d=o.length;for(f=0;d>f;f++)if(n=typeof e[o[f]],!/^(?:function|object|unknown)$/.test(n))return!1;return!0}function n(e,n){return{handler:n,wrappedHandler:f(e,n)}}function f(e,n){return function(f){n.call(t(e),f||fabric.window.event)}}function o(e,n){return function(f){if(r[e]&&r[e][n])for(var o=r[e][n],d=0,i=o.length;i>d;d++)o[d].call(this,f||fabric.window.event)}}function d(e,n){e||(e=fabric.window.event);var f=e.target||(typeof e.srcElement!==s?e.srcElement:null),o=fabric.util.getScrollLeftTop(f,n);return{x:v(e)+o.left,y:w(e)+o.top}}function i(e,n,f){var o="touchend"===e.type?"changedTouches":"touches";return e[o]&&e[o][0]?e[o][0][n]-(e[o][0][n]-e[o][0][f])||e[f]:e[f]}var t,l,s="unknown",u=function(){var e=0;return function(n){return n.__uniqueID||(n.__uniqueID="uniqueID__"+e++)}}();!function(){var e={};t=function(n){return e[n]},l=function(n,f){e[n]=f}}();var a,p,c=e(fabric.document.documentElement,"addEventListener","removeEventListener")&&e(fabric.window,"addEventListener","removeEventListener"),y=e(fabric.document.documentElement,"attachEvent","detachEvent")&&e(fabric.window,"attachEvent","detachEvent"),m={},r={};c?(a=function(e,n,f){e.addEventListener(n,f,!1)},p=function(e,n,f){e.removeEventListener(n,f,!1)}):y?(a=function(e,f,o){var d=u(e);l(d,e),m[d]||(m[d]={}),m[d][f]||(m[d][f]=[]);var i=n(d,o);m[d][f].push(i),e.attachEvent("on"+f,i.wrappedHandler)},p=function(e,n,f){var o,d=u(e);if(m[d]&&m[d][n])for(var i=0,t=m[d][n].length;t>i;i++)o=m[d][n][i],o&&o.handler===f&&(e.detachEvent("on"+n,o.wrappedHandler),m[d][n][i]=null)}):(a=function(e,n,f){var d=u(e);if(r[d]||(r[d]={}),!r[d][n]){r[d][n]=[];var i=e["on"+n];i&&r[d][n].push(i),e["on"+n]=o(d,n)}r[d][n].push(f)},p=function(e,n,f){var o=u(e);if(r[o]&&r[o][n])for(var d=r[o][n],i=0,t=d.length;t>i;i++)d[i]===f&&d.splice(i,1)}),fabric.util.addListener=a,fabric.util.removeListener=p;var v=function(e){return typeof e.clientX!==s?e.clientX:0},w=function(e){return typeof e.clientY!==s?e.clientY:0};fabric.isTouchSupported&&(v=function(e){return i(e,"pageX","clientX")},w=function(e){return i(e,"pageY","clientY")}),fabric.util.getPointer=d,fabric.util.object.extend(fabric.util,fabric.Observable)}(),function(){function e(e,n){var f=e.style;if(!f)return e;if("string"==typeof n)return e.style.cssText+=";"+n,n.indexOf("opacity")>-1?i(e,n.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var o in n)if("opacity"===o)i(e,n[o]);else{var d="float"===o||"cssFloat"===o?"undefined"==typeof f.styleFloat?"cssFloat":"styleFloat":o;f[d]=n[o]}return e}var n=fabric.document.createElement("div"),f="string"==typeof n.style.opacity,o="string"==typeof n.style.filter,d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,i=function(e){return e};f?i=function(e,n){return e.style.opacity=n,e}:o&&(i=function(e,n){var f=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(f.zoom=1),d.test(f.filter)?(n=n>=.9999?"":"alpha(opacity="+100*n+")",f.filter=f.filter.replace(d,n)):f.filter+=" alpha(opacity="+100*n+")",e}),fabric.util.setStyle=e}(),function(){function e(e){return"string"==typeof e?fabric.document.getElementById(e):e}function n(e,n){var f=fabric.document.createElement(e);for(var o in n)"class"===o?f.className=n[o]:"for"===o?f.htmlFor=n[o]:f.setAttribute(o,n[o]);return f}function f(e,n){e&&-1===(" "+e.className+" ").indexOf(" "+n+" ")&&(e.className+=(e.className?" ":"")+n)}function o(e,f,o){return"string"==typeof f&&(f=n(f,o)),e.parentNode&&e.parentNode.replaceChild(f,e),f.appendChild(e),f}function d(e,n){var f,o,d=0,i=0,t=fabric.document.documentElement,l=fabric.document.body||{scrollLeft:0,scrollTop:0};for(o=e;e&&e.parentNode&&!f;)e=e.parentNode,e!==fabric.document&&"fixed"===fabric.util.getElementStyle(e,"position")&&(f=e),e!==fabric.document&&o!==n&&"absolute"===fabric.util.getElementStyle(e,"position")?(d=0,i=0):e===fabric.document?(d=l.scrollLeft||t.scrollLeft||0,i=l.scrollTop||t.scrollTop||0):(d+=e.scrollLeft||0,i+=e.scrollTop||0);return{left:d,top:i}}function i(e){var n,f,o=e&&e.ownerDocument,d={left:0,top:0},i={left:0,top:0},t={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!o)return{left:0,top:0};for(var l in t)i[t[l]]+=parseInt(a(e,l),10)||0;return n=o.documentElement,"undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),f=fabric.util.getScrollLeftTop(e,null),{left:d.left+f.left-(n.clientLeft||0)+i.left,top:d.top+f.top-(n.clientTop||0)+i.top}}var t,l=Array.prototype.slice,s=function(e){return l.call(e,0)};try{t=s(fabric.document.childNodes)instanceof Array}catch(u){}t||(s=function(e){for(var n=new Array(e.length),f=e.length;f--;)n[f]=e[f];return n});var a;a=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(e,n){return fabric.document.defaultView.getComputedStyle(e,null)[n]}:function(e,n){var f=e.style[n];return!f&&e.currentStyle&&(f=e.currentStyle[n]),f},function(){function e(e){return"undefined"!=typeof e.onselectstart&&(e.onselectstart=fabric.util.falseFunction),o?e.style[o]="none":"string"==typeof e.unselectable&&(e.unselectable="on"),e}function n(e){return"undefined"!=typeof e.onselectstart&&(e.onselectstart=null),o?e.style[o]="":"string"==typeof e.unselectable&&(e.unselectable=""),e}var f=fabric.document.documentElement.style,o="userSelect"in f?"userSelect":"MozUserSelect"in f?"MozUserSelect":"WebkitUserSelect"in f?"WebkitUserSelect":"KhtmlUserSelect"in f?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=e,fabric.util.makeElementSelectable=n}(),function(){function e(e,n){var f=fabric.document.getElementsByTagName("head")[0],o=fabric.document.createElement("script"),d=!0;o.onload=o.onreadystatechange=function(e){if(d){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;d=!1,n(e||fabric.window.event),o=o.onload=o.onreadystatechange=null}},o.src=e,f.appendChild(o)}fabric.util.getScript=e}(),fabric.util.getById=e,fabric.util.toArray=s,fabric.util.makeElement=n,fabric.util.addClass=f,fabric.util.wrapElement=o,fabric.util.getScrollLeftTop=d,fabric.util.getElementOffset=i,fabric.util.getElementStyle=a}(),function(){function e(e,n){return e+(/\?/.test(e)?"&":"?")+n}function n(){}function f(f,d){d||(d={});var i,t=d.method?d.method.toUpperCase():"GET",l=d.onComplete||function(){},s=o();return s.onreadystatechange=function(){4===s.readyState&&(l(s),s.onreadystatechange=n)},"GET"===t&&(i=null,"string"==typeof d.parameters&&(f=e(f,d.parameters))),s.open(t,f,!0),("POST"===t||"PUT"===t)&&s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(i),s}var o=function(){for(var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],n=e.length;n--;)try{var f=e[n]();if(f)return e[n]}catch(o){}}();fabric.util.request=f}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(e){"undefined"!=typeof console[e]&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(e){"use strict";function n(e){return e in j?j[e]:e}function f(e,n,f){var o,d="[object Array]"===Object.prototype.toString.call(n);return"fill"!==e&&"stroke"!==e||"none"!==n?"fillRule"===e?n="evenodd"===n?"destination-over":n:"strokeDashArray"===e?n=n.replace(/,/g," ").split(/\s+/).map(function(e){return parseInt(e)}):"transformMatrix"===e?n=f&&f.transformMatrix?x(f.transformMatrix,r.parseTransformAttribute(n)):r.parseTransformAttribute(n):"visible"===e?(n="none"===n||"hidden"===n?!1:!0,f&&f.visible===!1&&(n=!1)):"originX"===e?n="start"===n?"left":"end"===n?"right":"center":o=d?n.map(h):h(n):n="",!d&&isNaN(o)?n:o}function o(e){for(var n in k)if(e[n]&&"undefined"!=typeof e[k[n]]&&0!==e[n].indexOf("url(")){var f=new r.Color(e[n]);e[n]=f.setAlpha(g(f.getAlpha()*e[k[n]],2)).toRgba()}return e}function d(e,n){var f=e.match(/(normal|italic)?\s*(normal|small-caps)?\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\s*(\d+)px(?:\/(normal|[\d\.]+))?\s+(.*)/);if(f){var o=f[1],d=f[3],i=f[4],t=f[5],l=f[6];o&&(n.fontStyle=o),d&&(n.fontWeight=isNaN(parseFloat(d))?d:parseFloat(d)),i&&(n.fontSize=parseFloat(i)),l&&(n.fontFamily=l),t&&(n.lineHeight="normal"===t?1:t)}}function i(e,o){var i,t;e.replace(/;$/,"").split(";").forEach(function(e){var l=e.split(":");i=n(l[0].trim().toLowerCase()),t=f(i,l[1].trim()),"font"===i?d(t,o):o[i]=t})}function t(e,o){var i,t;for(var l in e)"undefined"!=typeof e[l]&&(i=n(l.toLowerCase()),t=f(i,e[l]),"font"===i?d(t,o):o[i]=t)}function l(e){var n={};for(var f in r.cssRules)if(s(e,f.split(" ")))for(var o in r.cssRules[f])n[o]=r.cssRules[f][o];return n}function s(e,n){var f,o=!0;return f=a(e,n.pop()),f&&n.length&&(o=u(e,n)),f&&o&&0===n.length}function u(e,n){for(var f,o=!0;e.parentNode&&1===e.parentNode.nodeType&&n.length;)o&&(f=n.pop()),e=e.parentNode,o=a(e,f);return 0===n.length}function a(e,n){var f,o=e.nodeName,d=e.getAttribute("class"),i=e.getAttribute("id");if(f=new RegExp("^"+o,"i"),n=n.replace(f,""),i&&n.length&&(f=new RegExp("#"+i+"(?![a-zA-Z\\-]+)","i"),n=n.replace(f,"")),d&&n.length){d=d.split(" ");for(var t=d.length;t--;)f=new RegExp("\\."+d[t]+"(?![a-zA-Z\\-]+)","i"),n=n.replace(f,"")}return 0===n.length}function p(e){for(var n=e.getElementsByTagName("use");n.length;){for(var f,o=n[0],d=o.getAttribute("xlink:href").substr(1),i=o.getAttribute("x")||0,t=o.getAttribute("y")||0,l=e.getElementById(d).cloneNode(!0),s=(o.getAttribute("transform")||"")+" translate("+i+", "+t+")",u=0,a=o.attributes,p=a.length;p>u;u++){var c=a.item(u);"x"!==c.nodeName&&"y"!==c.nodeName&&"xlink:href"!==c.nodeName&&("transform"===c.nodeName?s=s+" "+c.nodeValue:l.setAttribute(c.nodeName,c.nodeValue))}l.setAttribute("transform",s),l.removeAttribute("id"),f=o.parentNode,f.replaceChild(l,o)}}function c(e,n){if(n[3]=n[0]=n[0]>n[3]?n[3]:n[0],1!==n[0]||1!==n[3]||0!==n[4]||0!==n[5]){for(var f=e.ownerDocument.createElement("g");null!=e.firstChild;)f.appendChild(e.firstChild);f.setAttribute("transform","matrix("+n[0]+" "+n[1]+" "+n[2]+" "+n[3]+" "+n[4]+" "+n[5]+")"),e.appendChild(f)}}function y(e){var n=e.objects,f=e.options;return n=n.map(function(e){return r[w(e.type)].fromObject(e)}),{objects:n,options:f}}function m(e,n,f){n[f]&&n[f].toSVG&&e.push('','')}var r=e.fabric||(e.fabric={}),v=r.util.object.extend,w=r.util.string.capitalize,b=r.util.object.clone,g=r.util.toFixed,h=r.util.parseUnit,x=r.util.multiplyTransformMatrices,j={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX"},k={stroke:"strokeOpacity",fill:"fillOpacity"};r.parseTransformAttribute=function(){function e(e,n){var f=n[0];e[0]=Math.cos(f),e[1]=Math.sin(f),e[2]=-Math.sin(f),e[3]=Math.cos(f)}function n(e,n){var f=n[0],o=2===n.length?n[1]:n[0];e[0]=f,e[3]=o}function f(e,n){e[2]=n[0]}function o(e,n){e[1]=n[0]}function d(e,n){e[4]=n[0],2===n.length&&(e[5]=n[1])}var i=[1,0,0,1,0,0],t="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",l="(?:\\s+,?\\s*|,\\s*)",s="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",u="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",a="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+l+"("+t+")"+l+"("+t+"))?\\s*\\))",p="(?:(scale)\\s*\\(\\s*("+t+")(?:"+l+"("+t+"))?\\s*\\))",c="(?:(translate)\\s*\\(\\s*("+t+")(?:"+l+"("+t+"))?\\s*\\))",y="(?:(matrix)\\s*\\(\\s*("+t+")"+l+"("+t+")"+l+"("+t+")"+l+"("+t+")"+l+"("+t+")"+l+"("+t+")\\s*\\))",m="(?:"+y+"|"+c+"|"+p+"|"+a+"|"+s+"|"+u+")",v="(?:"+m+"(?:"+l+m+")*)",w="^\\s*(?:"+v+"?)\\s*$",b=new RegExp(w),g=new RegExp(m,"g");return function(t){var l=i.concat(),s=[];if(!t||t&&!b.test(t))return l;t.replace(g,function(t){var u=new RegExp(m).exec(t).filter(function(e){return""!==e&&null!=e}),a=u[1],p=u.slice(2).map(parseFloat);switch(a){case"translate":d(l,p);break;case"rotate":p[0]=r.util.degreesToRadians(p[0]),e(l,p);break;case"scale":n(l,p);break;case"skewX":f(l,p);break;case"skewY":o(l,p);break;case"matrix":l=p}s.push(l.concat()),l=i.concat()});for(var u=s[0];s.length>1;)s.shift(),u=r.util.multiplyTransformMatrices(u,s[0]);return u}}(),r.parseSVGDocument=function(){function e(e,n){for(;e&&(e=e.parentNode);)if(n.test(e.nodeName))return!0;return!1}var n=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,f="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",o=new RegExp("^\\s*("+f+"+)\\s*,?\\s*("+f+"+)\\s*,?\\s*("+f+"+)\\s*,?\\s*("+f+"+)\\s*$");return function(f,d,i){if(f){var t=new Date;p(f);var l,s,u=f.getAttribute("viewBox"),a=h(f.getAttribute("width")||"100%"),y=h(f.getAttribute("height")||"100%");if(u&&(u=u.match(o))){var m=parseFloat(u[1]),v=parseFloat(u[2]),w=1,g=1;l=parseFloat(u[3]),s=parseFloat(u[4]),a&&a!==l&&(w=a/l),y&&y!==s&&(g=y/s),c(f,[w,0,0,g,w*-m,g*-v])}var x=r.util.toArray(f.getElementsByTagName("*"));if(0===x.length&&r.isLikelyNode){x=f.selectNodes('//*[name(.)!="svg"]');for(var j=[],k=0,q=x.length;q>k;k++)j[k]=x[k];x=j}var z=x.filter(function(f){return n.test(f.tagName)&&!e(f,/^(?:pattern|defs)$/)});if(!z||z&&!z.length)return void(d&&d([],{}));var A={width:a?a:l,height:y?y:s,widthAttr:a,heightAttr:y};r.gradientDefs=r.getGradientDefs(f),r.cssRules=r.getCSSRules(f),r.parseElements(z,function(e){r.documentParsingTime=new Date-t,d&&d(e,A)},b(A),i)}}}();var q={has:function(e,n){n(!1)},get:function(){},set:function(){}};v(r,{getGradientDefs:function(e){var n,f,o,d,i=e.getElementsByTagName("linearGradient"),t=e.getElementsByTagName("radialGradient"),l=0,s=[],u={},a={};for(s.length=i.length+t.length,f=i.length;f--;)s[l++]=i[f];for(f=t.length;f--;)s[l++]=t[f];for(;l--;)n=s[l],d=n.getAttribute("xlink:href"),o=n.getAttribute("id"),d&&(a[o]=d.substr(1)),u[o]=n;for(o in a){var p=u[a[o]].cloneNode(!0);for(n=u[o];p.firstChild;)n.appendChild(p.firstChild)}return u},parseAttributes:function(e,d){if(e){var i,t={};e.parentNode&&/^symbol|[g|a]$/i.test(e.parentNode.nodeName)&&(t=r.parseAttributes(e.parentNode,d));var s=d.reduce(function(o,d){return i=e.getAttribute(d),i&&(d=n(d),i=f(d,i,t),o[d]=i),o},{});return s=v(s,v(l(e),r.parseStyleAttribute(e))),o(v(t,s))}},parseElements:function(e,n,f,o){new r.ElementsParser(e,n,f,o).parse()},parseStyleAttribute:function(e){var n={},f=e.getAttribute("style");return f?("string"==typeof f?i(f,n):t(f,n),n):n -},parsePointsAttribute:function(e){if(!e)return null;e=e.replace(/,/g," ").trim(),e=e.split(/\s+/);var n,f,o=[];for(n=0,f=e.length;f>n;n+=2)o.push({x:parseFloat(e[n]),y:parseFloat(e[n+1])});return o},getCSSRules:function(e){for(var o,d=e.getElementsByTagName("style"),i={},t=0,l=d.length;l>t;t++){var s=d[0].textContent;s=s.replace(/\/\*[\s\S]*?\*\//g,""),o=s.match(/[^{]*\{[\s\S]*?\}/g),o=o.map(function(e){return e.trim()}),o.forEach(function(e){for(var o=e.match(/([\s\S]*?)\s*\{([^}]*)\}/),d={},t=o[2].trim(),l=t.replace(/;$/,"").split(/\s*;\s*/),s=0,u=l.length;u>s;s++){var a=l[s].split(/\s*:\s*/),p=n(a[0]),c=f(p,a[1],a[0]);d[p]=c}e=o[1],e.split(",").forEach(function(e){i[e.trim()]=r.util.object.clone(d)})})}return i},loadSVGFromURL:function(e,n,f){function o(o){var d=o.responseXML;d&&!d.documentElement&&r.window.ActiveXObject&&o.responseText&&(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(o.responseText.replace(//i,""))),d&&d.documentElement&&r.parseSVGDocument(d.documentElement,function(f,o){q.set(e,{objects:r.util.array.invoke(f,"toObject"),options:o}),n(f,o)},f)}e=e.replace(/^\n\s*/,"").trim(),q.has(e,function(f){f?q.get(e,function(e){var f=y(e);n(f.objects,f.options)}):new r.util.request(e,{method:"get",onComplete:o})})},loadSVGFromString:function(e,n,f){e=e.trim();var o;if("undefined"!=typeof DOMParser){var d=new DOMParser;d&&d.parseFromString&&(o=d.parseFromString(e,"text/xml"))}else r.window.ActiveXObject&&(o=new ActiveXObject("Microsoft.XMLDOM"),o.async="false",o.loadXML(e.replace(//i,"")));r.parseSVGDocument(o.documentElement,function(e,f){n(e,f)},f)},createSVGFontFacesMarkup:function(e){for(var n="",f=0,o=e.length;o>f;f++)"text"===e[f].type&&e[f].path&&(n+=["@font-face {","font-family: ",e[f].fontFamily,"; ","src: url('",e[f].path,"')","}"].join(""));return n&&(n=['"].join("")),n},createSVGRefElementsMarkup:function(e){var n=[];return m(n,e,"backgroundColor"),m(n,e,"overlayColor"),n.join("")}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(e,n,f,o){this.elements=e,this.callback=n,this.options=f,this.reviver=o},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.createObjects=function(){for(var e=0,n=this.elements.length;n>e;e++)!function(e,n){setTimeout(function(){e.createObject(e.elements[n],n)},0)}(this,e)},fabric.ElementsParser.prototype.createObject=function(e,n){var f=fabric[fabric.util.string.capitalize(e.tagName)];if(f&&f.fromElement)try{this._createObject(f,e,n)}catch(o){fabric.log(o)}else this.checkIfDone()},fabric.ElementsParser.prototype._createObject=function(e,n,f){if(e.async)e.fromElement(n,this.createCallback(f,n),this.options);else{var o=e.fromElement(n,this.options);this.resolveGradient(o,"fill"),this.resolveGradient(o,"stroke"),this.reviver&&this.reviver(n,o),this.instances[f]=o,this.checkIfDone()}},fabric.ElementsParser.prototype.createCallback=function(e,n){var f=this;return function(o){f.resolveGradient(o,"fill"),f.resolveGradient(o,"stroke"),f.reviver&&f.reviver(n,o),f.instances[e]=o,f.checkIfDone()}},fabric.ElementsParser.prototype.resolveGradient=function(e,n){var f=e.get(n);if(/^url\(/.test(f)){var o=f.slice(5,f.length-1);fabric.gradientDefs[o]&&e.set(n,fabric.Gradient.fromElement(fabric.gradientDefs[o],e))}},fabric.ElementsParser.prototype.checkIfDone=function(){0===--this.numElements&&(this.instances=this.instances.filter(function(e){return null!=e}),this.callback(this.instances))},function(e){"use strict";function n(e,n){this.x=e,this.y=n}var f=e.fabric||(e.fabric={});return f.Point?void f.warn("fabric.Point is already defined"):(f.Point=n,void(n.prototype={constructor:n,add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,f){return new n(this.x+(e.x-this.x)*f,this.y+(e.y-this.y)*f)},distanceFrom:function(e){var n=this.x-e.x,f=this.y-e.y;return Math.sqrt(n*n+f*f)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,n){this.x=e,this.y=n},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var n=this.x,f=this.y;this.x=e.x,this.y=e.y,e.x=n,e.y=f}}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var f=e.fabric||(e.fabric={});return f.Intersection?void f.warn("fabric.Intersection is already defined"):(f.Intersection=n,f.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},f.Intersection.intersectLineLine=function(e,o,d,i){var t,l=(i.x-d.x)*(e.y-d.y)-(i.y-d.y)*(e.x-d.x),s=(o.x-e.x)*(e.y-d.y)-(o.y-e.y)*(e.x-d.x),u=(i.y-d.y)*(o.x-e.x)-(i.x-d.x)*(o.y-e.y);if(0!==u){var a=l/u,p=s/u;a>=0&&1>=a&&p>=0&&1>=p?(t=new n("Intersection"),t.points.push(new f.Point(e.x+a*(o.x-e.x),e.y+a*(o.y-e.y)))):t=new n}else t=new n(0===l||0===s?"Coincident":"Parallel");return t},f.Intersection.intersectLinePolygon=function(e,f,o){for(var d=new n,i=o.length,t=0;i>t;t++){var l=o[t],s=o[(t+1)%i],u=n.intersectLineLine(e,f,l,s);d.appendPoints(u.points)}return d.points.length>0&&(d.status="Intersection"),d},f.Intersection.intersectPolygonPolygon=function(e,f){for(var o=new n,d=e.length,i=0;d>i;i++){var t=e[i],l=e[(i+1)%d],s=n.intersectLinePolygon(t,l,f);o.appendPoints(s.points)}return o.points.length>0&&(o.status="Intersection"),o},void(f.Intersection.intersectPolygonRectangle=function(e,o,d){var i=o.min(d),t=o.max(d),l=new f.Point(t.x,i.y),s=new f.Point(i.x,t.y),u=n.intersectLinePolygon(i,l,e),a=n.intersectLinePolygon(l,t,e),p=n.intersectLinePolygon(t,s,e),c=n.intersectLinePolygon(s,i,e),y=new n;return y.appendPoints(u.points),y.appendPoints(a.points),y.appendPoints(p.points),y.appendPoints(c.points),y.points.length>0&&(y.status="Intersection"),y}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function f(e,n,f){return 0>f&&(f+=1),f>1&&(f-=1),1/6>f?e+6*(n-e)*f:.5>f?n:2/3>f?e+(n-e)*(2/3-f)*6:e}var o=e.fabric||(e.fabric={});return o.Color?void o.warn("fabric.Color is already defined."):(o.Color=n,o.Color.prototype={_tryParsingColor:function(e){var f;return e in n.colorNameMap&&(e=n.colorNameMap[e]),"transparent"===e?void this.setSource([255,255,255,0]):(f=n.sourceFromHex(e),f||(f=n.sourceFromRgb(e)),f||(f=n.sourceFromHsl(e)),void(f&&this.setSource(f)))},_rgbToHsl:function(e,n,f){e/=255,n/=255,f/=255;var d,i,t,l=o.util.array.max([e,n,f]),s=o.util.array.min([e,n,f]);if(t=(l+s)/2,l===s)d=i=0;else{var u=l-s;switch(i=t>.5?u/(2-l-s):u/(l+s),l){case e:d=(n-f)/u+(f>n?6:0);break;case n:d=(f-e)/u+2;break;case f:d=(e-n)/u+4}d/=6}return[Math.round(360*d),Math.round(100*i),Math.round(100*t)]},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHsl:function(){var e=this.getSource(),n=this._rgbToHsl(e[0],e[1],e[2]);return"hsl("+n[0]+","+n[1]+"%,"+n[2]+"%)"},toHsla:function(){var e=this.getSource(),n=this._rgbToHsl(e[0],e[1],e[2]);return"hsla("+n[0]+","+n[1]+"%,"+n[2]+"%,"+e[3]+")"},toHex:function(){var e,n,f,o=this.getSource();return e=o[0].toString(16),e=1===e.length?"0"+e:e,n=o[1].toString(16),n=1===n.length?"0"+n:n,f=o[2].toString(16),f=1===f.length?"0"+f:f,e.toUpperCase()+n.toUpperCase()+f.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var n=this.getSource();return n[3]=e,this.setSource(n),this},toGrayscale:function(){var e=this.getSource(),n=parseInt((.3*e[0]+.59*e[1]+.11*e[2]).toFixed(0),10),f=e[3];return this.setSource([n,n,n,f]),this},toBlackWhite:function(e){var n=this.getSource(),f=(.3*n[0]+.59*n[1]+.11*n[2]).toFixed(0),o=n[3];return e=e||127,f=Number(f)l;l++)f.push(Math.round(i[l]*(1-d)+t[l]*d));return f[3]=o,this.setSource(f),this}},o.Color.reRGBa=/^rgba?\(\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*,\s*(\d{1,3}(?:\.\d+)?\%?)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/,o.Color.reHSLa=/^hsla?\(\s*(\d{1,3})\s*,\s*(\d{1,3}\%)\s*,\s*(\d{1,3}\%)\s*(?:\s*,\s*(\d+(?:\.\d+)?)\s*)?\)$/,o.Color.reHex=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/i,o.Color.colorNameMap={aqua:"#00FFFF",black:"#000000",blue:"#0000FF",fuchsia:"#FF00FF",gray:"#808080",green:"#008000",lime:"#00FF00",maroon:"#800000",navy:"#000080",olive:"#808000",orange:"#FFA500",purple:"#800080",red:"#FF0000",silver:"#C0C0C0",teal:"#008080",white:"#FFFFFF",yellow:"#FFFF00"},o.Color.fromRgb=function(e){return n.fromSource(n.sourceFromRgb(e))},o.Color.sourceFromRgb=function(e){var f=e.match(n.reRGBa);if(f){var o=parseInt(f[1],10)/(/%$/.test(f[1])?100:1)*(/%$/.test(f[1])?255:1),d=parseInt(f[2],10)/(/%$/.test(f[2])?100:1)*(/%$/.test(f[2])?255:1),i=parseInt(f[3],10)/(/%$/.test(f[3])?100:1)*(/%$/.test(f[3])?255:1);return[parseInt(o,10),parseInt(d,10),parseInt(i,10),f[4]?parseFloat(f[4]):1]}},o.Color.fromRgba=n.fromRgb,o.Color.fromHsl=function(e){return n.fromSource(n.sourceFromHsl(e))},o.Color.sourceFromHsl=function(e){var o=e.match(n.reHSLa);if(o){var d,i,t,l=(parseFloat(o[1])%360+360)%360/360,s=parseFloat(o[2])/(/%$/.test(o[2])?100:1),u=parseFloat(o[3])/(/%$/.test(o[3])?100:1);if(0===s)d=i=t=u;else{var a=.5>=u?u*(s+1):u+s-u*s,p=2*u-a;d=f(p,a,l+1/3),i=f(p,a,l),t=f(p,a,l-1/3)}return[Math.round(255*d),Math.round(255*i),Math.round(255*t),o[4]?parseFloat(o[4]):1]}},o.Color.fromHsla=n.fromHsl,o.Color.fromHex=function(e){return n.fromSource(n.sourceFromHex(e))},o.Color.sourceFromHex=function(e){if(e.match(n.reHex)){var f=e.slice(e.indexOf("#")+1),o=3===f.length,d=o?f.charAt(0)+f.charAt(0):f.substring(0,2),i=o?f.charAt(1)+f.charAt(1):f.substring(2,4),t=o?f.charAt(2)+f.charAt(2):f.substring(4,6);return[parseInt(d,16),parseInt(i,16),parseInt(t,16),1]}},void(o.Color.fromSource=function(e){var f=new n;return f.setSource(e),f}))}("undefined"!=typeof exports?exports:this),function(){function e(e){var n,f,o,d=e.getAttribute("style"),i=e.getAttribute("offset");if(i=parseFloat(i)/(/%$/.test(i)?100:1),i=0>i?0:i>1?1:i,d){var t=d.split(/\s*;\s*/);""===t[t.length-1]&&t.pop();for(var l=t.length;l--;){var s=t[l].split(/\s*:\s*/),u=s[0].trim(),a=s[1].trim();"stop-color"===u?n=a:"stop-opacity"===u&&(o=a)}}return n||(n=e.getAttribute("stop-color")||"rgb(0,0,0)"),o||(o=e.getAttribute("stop-opacity")),n=new fabric.Color(n),f=n.getAlpha(),o=isNaN(parseFloat(o))?1:parseFloat(o),o*=f,{offset:i,color:n.toRgb(),opacity:o}}function n(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}function f(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}function o(e,n,f){var o,d=0,i=1,t="";for(var l in n)o=parseFloat(n[l],10),i="string"==typeof n[l]&&/^\d+%$/.test(n[l])?.01:1,"x1"===l||"x2"===l||"r2"===l?(i*="objectBoundingBox"===f?e.width:1,d="objectBoundingBox"===f?e.left||0:0):("y1"===l||"y2"===l)&&(i*="objectBoundingBox"===f?e.height:1,d="objectBoundingBox"===f?e.top||0:0),n[l]=o*i+d;if("ellipse"===e.type&&null!==n.r2&&"objectBoundingBox"===f&&e.rx!==e.ry){var s=e.ry/e.rx;t=" scale(1, "+s+")",n.y1&&(n.y1/=s),n.y2&&(n.y2/=s)}return t}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(e){e||(e={});var n={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",n={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(n.r1=e.coords.r1||0,n.r2=e.coords.r2||0),this.coords=n,this.colorStops=e.colorStops.slice(),e.gradientTransform&&(this.gradientTransform=e.gradientTransform),this.offsetX=e.offsetX||this.offsetX,this.offsetY=e.offsetY||this.offsetY},addColorStop:function(e){for(var n in e){var f=new fabric.Color(e[n]);this.colorStops.push({offset:n,color:f.toRgb(),opacity:f.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(e){var n,f,o=fabric.util.object.clone(this.coords);if(this.colorStops.sort(function(e,n){return e.offset-n.offset}),!e.group||"path-group"!==e.group.type)for(var d in o)"x1"===d||"x2"===d||"r2"===d?o[d]+=this.offsetX-e.width/2:("y1"===d||"y2"===d)&&(o[d]+=this.offsetY-e.height/2);f='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(f+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),"linear"===this.type?n=["\n']:"radial"===this.type&&(n=["\n']);for(var i=0;i\n');return n.push("linear"===this.type?"\n":"\n"),n.join("")},toLive:function(e){var n;if(this.type){"linear"===this.type?n=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):"radial"===this.type&&(n=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var f=0,o=this.colorStops.length;o>f;f++){var d=this.colorStops[f].color,i=this.colorStops[f].opacity,t=this.colorStops[f].offset;"undefined"!=typeof i&&(d=new fabric.Color(d).setAlpha(i).toRgba()),n.addColorStop(parseFloat(t),d)}return n}}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(d,i){var t,l=d.getElementsByTagName("stop"),s="linearGradient"===d.nodeName?"linear":"radial",u=d.getAttribute("gradientUnits")||"objectBoundingBox",a=d.getAttribute("gradientTransform"),p=[],c={};"linear"===s?c=n(d):"radial"===s&&(c=f(d));for(var y=l.length;y--;)p.push(e(l[y]));t=o(i,c,u);var m=new fabric.Gradient({type:s,coords:c,colorStops:p,offsetX:-i.left,offsetY:-i.top});return(a||""!==t)&&(m.gradientTransform=fabric.parseTransformAttribute((a||"")+t)),m},forObject:function(e,n){return n||(n={}),o(e,n.coords,"userSpaceOnUse"),new fabric.Gradient(n)}})}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,initialize:function(e){if(e||(e={}),this.id=fabric.Object.__uid++,e.source)if("string"==typeof e.source)if("undefined"!=typeof fabric.util.getFunctionBody(e.source))this.source=new Function(fabric.util.getFunctionBody(e.source));else{var n=this;this.source=fabric.util.createImage(),fabric.util.loadImage(e.source,function(e){n.source=e})}else this.source=e.source;e.repeat&&(this.repeat=e.repeat),e.offsetX&&(this.offsetX=e.offsetX),e.offsetY&&(this.offsetY=e.offsetY)},toObject:function(){var e;return"function"==typeof this.source?e=String(this.source):"string"==typeof this.source.src&&(e=this.source.src),{source:e,repeat:this.repeat,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(e){var n="function"==typeof this.source?this.source():this.source,f=n.width/e.getWidth(),o=n.height/e.getHeight(),d="";return n.src?d=n.src:n.toDataURL&&(d=n.toDataURL()),''},toLive:function(e){var n="function"==typeof this.source?this.source():this.source;if(!n)return"";if("undefined"!=typeof n.src){if(!n.complete)return"";if(0===n.naturalWidth||0===n.naturalHeight)return""}return e.createPattern(n,this.repeat)}}),function(e){"use strict";var n=e.fabric||(e.fabric={});return n.Shadow?void n.warn("fabric.Shadow is already defined."):(n.Shadow=n.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){"string"==typeof e&&(e=this._parseShadow(e));for(var f in e)this[f]=e[f];this.id=n.Object.__uid++},_parseShadow:function(e){var f=e.trim(),o=n.Shadow.reOffsetsAndBlur.exec(f)||[],d=f.replace(n.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:d.trim(),offsetX:parseInt(o[1],10)||0,offsetY:parseInt(o[2],10)||0,blur:parseInt(o[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var n="SourceAlpha";return!e||e.fill!==this.color&&e.stroke!==this.color||(n="SourceGraphic"),''},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},f=n.Shadow.prototype;return this.color!==f.color&&(e.color=this.color),this.blur!==f.blur&&(e.blur=this.blur),this.offsetX!==f.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==f.offsetY&&(e.offsetY=this.offsetY),e}}),void(n.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/))}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)return void fabric.warn("fabric.StaticCanvas is already defined.");var e=fabric.util.object.extend,n=fabric.util.getElementOffset,f=fabric.util.removeFromArray,o=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,n){n||(n={}),this._initStatic(e,n),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},_initStatic:function(e,n){this._objects=[],this._createLowerCanvas(e),this._initOptions(n),this._setImageSmoothing(),n.overlayImage&&this.setOverlayImage(n.overlayImage,this.renderAll.bind(this)),n.backgroundImage&&this.setBackgroundImage(n.backgroundImage,this.renderAll.bind(this)),n.backgroundColor&&this.setBackgroundColor(n.backgroundColor,this.renderAll.bind(this)),n.overlayColor&&this.setOverlayColor(n.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=n(this.lowerCanvasEl),this},setOverlayImage:function(e,n,f){return this.__setBgOverlayImage("overlayImage",e,n,f)},setBackgroundImage:function(e,n,f){return this.__setBgOverlayImage("backgroundImage",e,n,f)},setOverlayColor:function(e,n){return this.__setBgOverlayColor("overlayColor",e,n)},setBackgroundColor:function(e,n){return this.__setBgOverlayColor("backgroundColor",e,n)},_setImageSmoothing:function(){var e=this.getContext();e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.webkitImageSmoothingEnabled=this.imageSmoothingEnabled,e.mozImageSmoothingEnabled=this.imageSmoothingEnabled,e.msImageSmoothingEnabled=this.imageSmoothingEnabled,e.oImageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(e,n,f,o){return"string"==typeof n?fabric.util.loadImage(n,function(n){this[e]=new fabric.Image(n,o),f&&f()},this):(this[e]=n,f&&f()),this},__setBgOverlayColor:function(e,n,f){if(n&&n.source){var o=this;fabric.util.loadImage(n.source,function(d){o[e]=new fabric.Pattern({source:d,repeat:n.repeat,offsetX:n.offsetX,offsetY:n.offsetY}),f&&f()})}else this[e]=n,f&&f();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");if(e.style||(e.style={}),!e)throw o;return this._initCanvasElement(e),e},_initCanvasElement:function(e){if(fabric.util.createCanvasElement(e),"undefined"==typeof e.getContext)throw o},_initOptions:function(e){for(var n in e)this[n]=e[n];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0,this.lowerCanvasEl.style&&(this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,n){return this.setDimensions({width:e},n)},setHeight:function(e,n){return this.setDimensions({height:e},n)},setDimensions:function(e,n){var f;n=n||{};for(var o in e)f=e[o],n.cssOnly||(this._setBackstoreDimension(o,e[o]),f+="px"),n.backstoreOnly||this._setCssDimension(o,f);return n.cssOnly||this.renderAll(),this.calcOffset(),this},_setBackstoreDimension:function(e,n){return this.lowerCanvasEl[e]=n,this.upperCanvasEl&&(this.upperCanvasEl[e]=n),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=n),this[e]=n,this},_setCssDimension:function(e,n){return this.lowerCanvasEl.style[e]=n,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=n),this.wrapperEl&&(this.wrapperEl.style[e]=n),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(e){this.viewportTransform=e,this.renderAll();for(var n=0,f=this._objects.length;f>n;n++)this._objects[n].setCoords();return this},zoomToPoint:function(e,n){var f=e;e=fabric.util.transformPoint(e,fabric.util.invertTransform(this.viewportTransform)),this.viewportTransform[0]=n,this.viewportTransform[3]=n;var o=fabric.util.transformPoint(e,this.viewportTransform);this.viewportTransform[4]+=f.x-o.x,this.viewportTransform[5]+=f.y-o.y,this.renderAll();for(var d=0,i=this._objects.length;i>d;d++)this._objects[d].setCoords();return this},setZoom:function(e){return this.zoomToPoint(new fabric.Point(0,0),e),this},absolutePan:function(e){this.viewportTransform[4]=-e.x,this.viewportTransform[5]=-e.y,this.renderAll();for(var n=0,f=this._objects.length;f>n;n++)this._objects[n].setCoords();return this},relativePan:function(e){return this.absolutePan(new fabric.Point(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,n){if(n){e.save();var f=this.viewportTransform;e.transform(f[0],f[1],f[2],f[3],f[4],f[5]),n.render(e),e.restore(),this.controlsAboveOverlay||n._renderControls(e)}},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.canvas=this,e.setCoords(),this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var n=this[e===!0&&this.interactive?"contextTop":"contextContainer"],f=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(n),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,n),this._renderBackground(n),this._renderObjects(n,f),this._renderActiveGroup(n,f),this.clipTo&&n.restore(),this._renderOverlay(n),this.controlsAboveOverlay&&this.interactive&&this.drawControls(n),this.fire("after:render"),this},_renderObjects:function(e,n){var f,o;if(n)for(f=0,o=this._objects.length;o>f;++f)this._objects[f]&&!n.contains(this._objects[f])&&this._draw(e,this._objects[f]);else for(f=0,o=this._objects.length;o>f;++f)this._draw(e,this._objects[f])},_renderActiveGroup:function(e,n){if(n){var f=[];this.forEachObject(function(e){n.contains(e)&&f.push(e)}),n._set("objects",f),this._draw(e,n)}},_renderBackground:function(e){this.backgroundColor&&(e.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(e):this.backgroundColor,e.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),this.backgroundImage&&this._draw(e,this.backgroundImage)},_renderOverlay:function(e){this.overlayColor&&(e.fillStyle=this.overlayColor.toLive?this.overlayColor.toLive(e):this.overlayColor,e.fillRect(this.overlayColor.offsetX||0,this.overlayColor.offsetY||0,this.width,this.height)),this.overlayImage&&this._draw(e,this.overlayImage)},renderTop:function(){var e=this.contextTop||this.contextContainer;this.clearContext(e),this.selection&&this._groupSelector&&this._drawSelection();var n=this.getActiveGroup();return n&&n.render(e),this._renderOverlay(e),this.fire("after:render"),this},getCenter:function(){return{top:this.getHeight()/2,left:this.getWidth()/2}},centerObjectH:function(e){return this._centerObject(e,new fabric.Point(this.getCenter().left,e.getCenterPoint().y)),this.renderAll(),this},centerObjectV:function(e){return this._centerObject(e,new fabric.Point(e.getCenterPoint().x,this.getCenter().top)),this.renderAll(),this},centerObject:function(e){var n=this.getCenter();return this._centerObject(e,new fabric.Point(n.left,n.top)),this.renderAll(),this},_centerObject:function(e,n){return e.setPositionByOrigin(n,"center","center"),this},toDatalessJSON:function(e){return this.toDatalessObject(e)},toObject:function(e){return this._toObjectMethod("toObject",e)},toDatalessObject:function(e){return this._toObjectMethod("toDatalessObject",e)},_toObjectMethod:function(n,f){var o=this.getActiveGroup();o&&this.discardActiveGroup();var d={objects:this._toObjects(n,f)};return e(d,this.__serializeBgOverlay()),fabric.util.populateWithProperties(this,d,f),o&&(this.setActiveGroup(new fabric.Group(o.getObjects(),{originX:"center",originY:"center"})),o.forEachObject(function(e){e.set("active",!0)}),this._currentTransform&&(this._currentTransform.target=this.getActiveGroup())),d},_toObjects:function(e,n){return this.getObjects().map(function(f){return this._toObject(f,e,n)},this)},_toObject:function(e,n,f){var o;this.includeDefaultValues||(o=e.includeDefaultValues,e.includeDefaultValues=!1);var d=e[n](f);return this.includeDefaultValues||(e.includeDefaultValues=o),d},__serializeBgOverlay:function(){var e={background:this.backgroundColor&&this.backgroundColor.toObject?this.backgroundColor.toObject():this.backgroundColor};return this.overlayColor&&(e.overlay=this.overlayColor.toObject?this.overlayColor.toObject():this.overlayColor),this.backgroundImage&&(e.backgroundImage=this.backgroundImage.toObject()),this.overlayImage&&(e.overlayImage=this.overlayImage.toObject()),e},svgViewportTransformation:!0,toSVG:function(e,n){e||(e={});var f=[];return this._setSVGPreamble(f,e),this._setSVGHeader(f,e),this._setSVGBgOverlayColor(f,"backgroundColor"),this._setSVGBgOverlayImage(f,"backgroundImage"),this._setSVGObjects(f,n),this._setSVGBgOverlayColor(f,"overlayColor"),this._setSVGBgOverlayImage(f,"overlayImage"),f.push(""),f.join("")},_setSVGPreamble:function(e,n){n.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,n){var f,o,d;n.viewBox?(f=n.viewBox.width,o=n.viewBox.height):(f=this.width,o=this.height,this.svgViewportTransformation||(d=this.viewportTransform,f/=d[0],o/=d[3])),e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,n){var f=this.getActiveGroup();f&&this.discardActiveGroup();for(var o=0,d=this.getObjects(),i=d.length;i>o;o++)e.push(d[o].toSVG(n));f&&(this.setActiveGroup(new fabric.Group(f.getObjects())),f.forEachObject(function(e){e.set("active",!0)}))},_setSVGBgOverlayImage:function(e,n){this[n]&&this[n].toSVG&&e.push(this[n].toSVG())},_setSVGBgOverlayColor:function(e,n){this[n]&&this[n].source?e.push('"):this[n]&&"overlayColor"===n&&e.push('")},sendToBack:function(e){return f(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return f(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,n){var o=this._objects.indexOf(e);if(0!==o){var d=this._findNewLowerIndex(e,o,n);f(this._objects,e),this._objects.splice(d,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,n,f){var o;if(f){o=n;for(var d=n-1;d>=0;--d){var i=e.intersectsWithObject(this._objects[d])||e.isContainedWithinObject(this._objects[d])||this._objects[d].isContainedWithinObject(e);if(i){o=d;break}}}else o=n-1;return o},bringForward:function(e,n){var o=this._objects.indexOf(e);if(o!==this._objects.length-1){var d=this._findNewUpperIndex(e,o,n);f(this._objects,e),this._objects.splice(d,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,n,f){var o;if(f){o=n;for(var d=n+1;d"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var n=fabric.util.createCanvasElement();if(!n||!n.getContext)return null;var f=n.getContext("2d");if(!f)return null;switch(e){case"getImageData":return"undefined"!=typeof f.getImageData;case"setLineDash":return"undefined"!=typeof f.setLineDash;case"toDataURL":return"undefined"!=typeof n.toDataURL;case"toDataURLWithQuality":try{return n.toDataURL("image/jpeg",0),!0}catch(o){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(this.shadow){var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY}},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,n=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var n=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(n),this.canvas.contextTop.moveTo(n.x,n.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var n=new fabric.Point(e.x,e.y);this._addPoint(n)},_render:function(){var e=this.canvas.contextTop,n=this.canvas.viewportTransform,f=this._points[0],o=this._points[1];e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),e.beginPath(),2===this._points.length&&f.x===o.x&&f.y===o.y&&(f.x-=.5,o.x+=.5),e.moveTo(f.x,f.y);for(var d=1,i=this._points.length;i>d;d++){var t=f.midPointFrom(o);e.quadraticCurveTo(f.x,f.y,t.x,t.y),f=this._points[d],o=this._points[d+1]}e.lineTo(f.x,f.y),e.stroke(),e.restore()},_getSVGPathData:function(){return this.box=this.getPathBoundingBox(this._points),this.convertPointsToSVGPath(this._points,this.box.minX,this.box.minY)},getPathBoundingBox:function(f){for(var o=[],d=[],i=f[0],t=f[1],l=i,s=1,u=f.length;u>s;s++){var a=i.midPointFrom(t);o.push(l.x),o.push(a.x),d.push(l.y),d.push(a.y),i=f[s],t=f[s+1],l=a}return o.push(i.x),d.push(i.y),{minX:e(o),minY:e(d),maxX:n(o),maxY:n(d)}},convertPointsToSVGPath:function(e,n,f){var o=[],d=new fabric.Point(e[0].x-n,e[0].y-f),i=new fabric.Point(e[1].x-n,e[1].y-f);o.push("M ",e[0].x-n," ",e[0].y-f," ");for(var t=1,l=e.length;l>t;t++){var s=d.midPointFrom(i);o.push("Q ",d.x," ",d.y," ",s.x," ",s.y," "),d=new fabric.Point(e[t].x-n,e[t].y-f),t+1f;f++){var d=this.points[f],i=new fabric.Circle({radius:d.radius,left:d.x,top:d.y,originX:"center",originY:"center",fill:d.fill});this.shadow&&i.setShadow(this.shadow),n.push(i)}var t=new fabric.Group(n,{originX:"center",originY:"center"});t.canvas=this.canvas,this.canvas.add(t),this.canvas.fire("path:created",{path:t}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.renderAll()},addPoint:function(e){var n=new fabric.Point(e.x,e.y),f=fabric.util.getRandomInt(Math.max(0,this.width-20),this.width+20)/2,o=new fabric.Color(this.color).setAlpha(fabric.util.getRandomInt(0,100)/100).toRgba();return n.radius=f,n.fill=o,this.points.push(n),n}}),fabric.SprayBrush=fabric.util.createClass(fabric.BaseBrush,{width:10,density:20,dotWidth:1,dotWidthVariance:1,randomOpacity:!1,optimizeOverlapping:!0,initialize:function(e){this.canvas=e,this.sprayChunks=[]},onMouseDown:function(e){this.sprayChunks.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.addSprayChunk(e),this.render()},onMouseMove:function(e){this.addSprayChunk(e),this.render()},onMouseUp:function(){var e=this.canvas.renderOnAddRemove;this.canvas.renderOnAddRemove=!1;for(var n=[],f=0,o=this.sprayChunks.length;o>f;f++)for(var d=this.sprayChunks[f],i=0,t=d.length;t>i;i++){var l=new fabric.Rect({width:d[i].width,height:d[i].width,left:d[i].x+1,top:d[i].y+1,originX:"center",originY:"center",fill:this.color});this.shadow&&l.setShadow(this.shadow),n.push(l)}this.optimizeOverlapping&&(n=this._getOptimizedRects(n));var s=new fabric.Group(n,{originX:"center",originY:"center"});s.canvas=this.canvas,this.canvas.add(s),this.canvas.fire("path:created",{path:s}),this.canvas.clearContext(this.canvas.contextTop),this._resetShadow(),this.canvas.renderOnAddRemove=e,this.canvas.renderAll()},_getOptimizedRects:function(e){for(var n,f={},o=0,d=e.length;d>o;o++)n=e[o].left+""+e[o].top,f[n]||(f[n]=e[o]);var i=[];for(n in f)i.push(f[n]);return i},render:function(){var e=this.canvas.contextTop;e.fillStyle=this.color;var n=this.canvas.viewportTransform;e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]);for(var f=0,o=this.sprayChunkPoints.length;o>f;f++){var d=this.sprayChunkPoints[f];"undefined"!=typeof d.opacity&&(e.globalAlpha=d.opacity),e.fillRect(d.x,d.y,d.width,d.width)}e.restore()},addSprayChunk:function(e){this.sprayChunkPoints=[];for(var n,f,o,d=this.width/2,i=0;i1&&this.setWidth(t).setHeight(l),a.scale(o,o),f.left&&(f.left*=o),f.top&&(f.top*=o),f.width?f.width*=o:1>o&&(f.width=t),f.height?f.height*=o:1>o&&(f.height=l),u?this._tempRemoveBordersControlsFromGroup(u):s&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var p=this.__toDataURL(e,n,f);return this.width=d,this.height=i,a.scale(1/o,1/o),this.setWidth(d).setHeight(i),u?this._restoreBordersControlsOnGroup(u):s&&this.setActiveObject&&this.setActiveObject(s),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),p},toDataURLWithMultiplier:function(e,n,f){return this.toDataURL({format:e,multiplier:n,quality:f})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,n,f){return this.loadFromJSON(e,n,f)},loadFromJSON:function(e,n,f){if(e){var o="string"==typeof e?JSON.parse(e):e;this.clear();var d=this;return this._enlivenObjects(o.objects,function(){d._setBgOverlay(o,n)},f),this}},_setBgOverlay:function(e,n){var f=this,o={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(e.backgroundImage||e.overlayImage||e.background||e.overlay))return void(n&&n());var d=function(){o.backgroundImage&&o.overlayImage&&o.backgroundColor&&o.overlayColor&&(f.renderAll(),n&&n())};this.__setBgOverlay("backgroundImage",e.backgroundImage,o,d),this.__setBgOverlay("overlayImage",e.overlayImage,o,d),this.__setBgOverlay("backgroundColor",e.background,o,d),this.__setBgOverlay("overlayColor",e.overlay,o,d),d()},__setBgOverlay:function(e,n,f,o){var d=this;return n?void("backgroundImage"===e||"overlayImage"===e?fabric.Image.fromObject(n,function(n){d[e]=n,f[e]=!0,o&&o()}):this["set"+fabric.util.string.capitalize(e,!0)](n,function(){f[e]=!0,o&&o()})):void(f[e]=!0)},_enlivenObjects:function(e,n,f){var o=this;if(!e||0===e.length)return void(n&&n());var d=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,n){o.insertAt(e,n,!0)}),o.renderOnAddRemove=d,n&&n()},null,f)},_toDataURL:function(e,n){this.clone(function(f){n(f.toDataURL(e))})},_toDataURLWithMultiplier:function(e,n,f){this.clone(function(o){f(o.toDataURLWithMultiplier(e,n))})},clone:function(e,n){var f=JSON.stringify(this.toJSON(n));this.cloneWithoutData(function(n){n.loadFromJSON(f,function(){e&&e(n)})})},cloneWithoutData:function(e){var n=fabric.document.createElement("canvas");n.width=this.getWidth(),n.height=this.getHeight();var f=new fabric.Canvas(n);f.clipTo=this.clipTo,this.backgroundImage?(f.setBackgroundImage(this.backgroundImage.src,function(){f.renderAll(),e&&e(f)}),f.backgroundImageOpacity=this.backgroundImageOpacity,f.backgroundImageStretch=this.backgroundImageStretch):e&&e(f)}}),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend,o=n.util.toFixed,d=n.util.string.capitalize,i=n.util.degreesToRadians,t=n.StaticCanvas.supports("setLineDash");n.Object||(n.Object=n.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,lockScalingFlip:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){!e.fill||!e.fill.colorStops||e.fill instanceof n.Gradient||this.set("fill",new n.Gradient(e.fill))},_initPattern:function(e){!e.fill||!e.fill.source||e.fill instanceof n.Pattern||this.set("fill",new n.Pattern(e.fill)),!e.stroke||!e.stroke.source||e.stroke instanceof n.Pattern||this.set("stroke",new n.Pattern(e.stroke))},_initClipping:function(e){if(e.clipTo&&"string"==typeof e.clipTo){var f=n.util.getFunctionBody(e.clipTo);"undefined"!=typeof f&&(this.clipTo=new Function("ctx",f))}},setOptions:function(e){for(var n in e)this.set(n,e[n]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,n){this.group&&this.group.transform(e,n),e.globalAlpha=this.opacity;var f=n?this._getLeftTopCoords():this.getCenterPoint();e.translate(f.x,f.y),e.rotate(i(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var f=n.Object.NUM_FRACTION_DIGITS,d={type:this.type,originX:this.originX,originY:this.originY,left:o(this.left,f),top:o(this.top,f),width:o(this.width,f),height:o(this.height,f),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:o(this.strokeWidth,f),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:o(this.strokeMiterLimit,f),scaleX:o(this.scaleX,f),scaleY:o(this.scaleY,f),angle:o(this.getAngle(),f),flipX:this.flipX,flipY:this.flipY,opacity:o(this.opacity,f),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(d=this._removeDefaultValues(d)),n.util.populateWithProperties(this,d,e),d},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var f=n.util.getKlass(e.type).prototype,o=f.stateProperties;return o.forEach(function(n){e[n]===f[n]&&delete e[n]}),e},toString:function(){return"#"},get:function(e){return this[e]},_setObject:function(e){for(var n in e)this._set(n,e[n])},set:function(e,n){return"object"==typeof e?this._setObject(e):"function"==typeof n&&"clipTo"!==e?this._set(e,n(this.get(e))):this._set(e,n),this},_set:function(e,f){var d="scaleX"===e||"scaleY"===e;return d&&(f=this._constrainScale(f)),"scaleX"===e&&0>f?(this.flipX=!this.flipX,f*=-1):"scaleY"===e&&0>f?(this.flipY=!this.flipY,f*=-1):"width"===e||"height"===e?this.minScaleLimit=o(Math.min(.1,1/Math.max(this.width,this.height)),2):"shadow"!==e||!f||f instanceof n.Shadow||(f=new n.Shadow(f)),this[e]=f,this},toggle:function(e){var n=this.get(e);return"boolean"==typeof n&&this.set(e,!n),this},setSourcePath:function(e){return this.sourcePath=e,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:[1,0,0,1,0,0]},render:function(e,f){if(0!==this.width&&0!==this.height&&this.visible){if(e.save(),this._setupFillRule(e),this._transform(e,f),this._setStrokeStyles(e),this._setFillStyles(e),this.group&&"path-group"===this.group.type){e.translate(-this.group.width/2,-this.group.height/2);var o=this.transformMatrix;o&&e.transform.apply(e,o)}e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this._setShadow(e),this.clipTo&&n.util.clipContext(this,e),this._render(e,f),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreFillRule(e),e.restore()}},_transform:function(e,n){var f=this.transformMatrix;f&&!this.group&&e.setTransform.apply(e,f),n||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_renderControls:function(e,f){var o=this.getViewportTransform();if(e.save(),this.active&&!f){var d;this.group&&(d=n.util.transformPoint(this.group.getCenterPoint(),o),e.translate(d.x,d.y),e.rotate(i(this.group.angle))),d=n.util.transformPoint(this.getCenterPoint(),o,null!=this.group),this.group&&(d.x*=this.group.scaleX,d.y*=this.group.scaleY),e.translate(d.x,d.y),e.rotate(i(this.angle)),this.drawBorders(e),this.drawControls(e)}e.restore()},_setShadow:function(e){this.shadow&&(e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY)},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_renderFill:function(e){if(this.fill){if(e.save(),this.fill.toLive&&e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0),this.fill.gradientTransform){var n=this.fill.gradientTransform;e.transform.apply(e,n)}"destination-over"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)}},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(e.save(),this.strokeDashArray)1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),t?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke();else{if(this.stroke.gradientTransform){var n=this.stroke.gradientTransform;e.transform.apply(e,n)}this._stroke?this._stroke(e):e.stroke()}this._removeShadow(e),e.restore()}},clone:function(e,f){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(f),e):new n.Object(this.toObject(f))},cloneAsImage:function(e){var f=this.toDataURL();return n.util.loadImage(f,function(f){e&&e(new n.Image(f))}),this},toDataURL:function(e){e||(e={});var f=n.util.createCanvasElement(),o=this.getBoundingRect();f.width=o.width,f.height=o.height,n.util.wrapElement(f,"div");var d=new n.Canvas(f);"jpg"===e.format&&(e.format="jpeg"),"jpeg"===e.format&&(d.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new n.Point(f.width/2,f.height/2),"center","center");var t=this.canvas;d.add(this);var l=d.toDataURL(e);return this.set(i).setCoords(),this.canvas=t,d.dispose(),d=null,l},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,f){f||(f={});var o={colorStops:[]};o.type=f.type||(f.r1||f.r2?"radial":"linear"),o.coords={x1:f.x1,y1:f.y1,x2:f.x2,y2:f.y2},(f.r1||f.r2)&&(o.coords.r1=f.r1,o.coords.r2=f.r2);for(var d in f.colorStops){var i=new n.Color(f.colorStops[d]);o.colorStops.push({offset:d,color:i.toRgb(),opacity:i.getAlpha()})}return this.set(e,n.Gradient.forObject(this,o))},setPatternFill:function(e){return this.set("fill",new n.Pattern(e))},setShadow:function(e){return this.set("shadow",e?new n.Shadow(e):null)},setColor:function(e){return this.set("fill",e),this},setAngle:function(e){var n=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return n&&this._setOriginToCenter(),this.set("angle",e),n&&this._resetOrigin(),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,n){n=n||this.canvas.getPointer(e);var f=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:n.x-f.x,y:n.y-f.y}},_setupFillRule:function(e){this.fillRule&&(this._prevFillRule=e.globalCompositeOperation,e.globalCompositeOperation=this.fillRule)},_restoreFillRule:function(e){this.fillRule&&this._prevFillRule&&(e.globalCompositeOperation=this._prevFillRule)}}),n.util.createAccessors(n.Object),n.Object.prototype.rotate=n.Object.prototype.setAngle,f(n.Object.prototype,n.Observable),n.Object.NUM_FRACTION_DIGITS=2,n.Object.__uid=0)}("undefined"!=typeof exports?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(n,f,o){var d=n.x,i=n.y,t=this.stroke?this.strokeWidth:0;return"left"===f?d=n.x+(this.getWidth()+t*this.scaleX)/2:"right"===f&&(d=n.x-(this.getWidth()+t*this.scaleX)/2),"top"===o?i=n.y+(this.getHeight()+t*this.scaleY)/2:"bottom"===o&&(i=n.y-(this.getHeight()+t*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(d,i),n,e(this.angle))},translateToOriginPoint:function(n,f,o){var d=n.x,i=n.y,t=this.stroke?this.strokeWidth:0;return"left"===f?d=n.x-(this.getWidth()+t*this.scaleX)/2:"right"===f&&(d=n.x+(this.getWidth()+t*this.scaleX)/2),"top"===o?i=n.y-(this.getHeight()+t*this.scaleY)/2:"bottom"===o&&(i=n.y+(this.getHeight()+t*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(d,i),n,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,n){var f=this.getCenterPoint();return this.translateToOriginPoint(f,e,n)},toLocalPoint:function(n,f,o){var d,i,t=this.getCenterPoint(),l=this.stroke?this.strokeWidth:0;return f&&o?(d="left"===f?t.x-(this.getWidth()+l*this.scaleX)/2:"right"===f?t.x+(this.getWidth()+l*this.scaleX)/2:t.x,i="top"===o?t.y-(this.getHeight()+l*this.scaleY)/2:"bottom"===o?t.y+(this.getHeight()+l*this.scaleY)/2:t.y):(d=this.left,i=this.top),fabric.util.rotatePoint(new fabric.Point(n.x,n.y),t,-e(this.angle)).subtractEquals(new fabric.Point(d,i))},setPositionByOrigin:function(e,n,f){var o=this.translateToCenterPoint(e,n,f),d=this.translateToOriginPoint(o,this.originX,this.originY);this.set("left",d.x),this.set("top",d.y)},adjustPosition:function(n){var f=e(this.angle),o=this.getWidth()/2,d=Math.cos(f)*o,i=Math.sin(f)*o,t=this.getWidth(),l=Math.cos(f)*t,s=Math.sin(f)*t;"center"===this.originX&&"left"===n||"right"===this.originX&&"center"===n?(this.left-=d,this.top-=i):"left"===this.originX&&"center"===n||"center"===this.originX&&"right"===n?(this.left+=d,this.top+=i):"left"===this.originX&&"right"===n?(this.left+=l,this.top+=s):"right"===this.originX&&"left"===n&&(this.left-=l,this.top-=s),this.setCoords(),this.originX=n},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,n){var f=this.oCoords,o=new fabric.Point(f.tl.x,f.tl.y),d=new fabric.Point(f.tr.x,f.tr.y),i=new fabric.Point(f.bl.x,f.bl.y),t=new fabric.Point(f.br.x,f.br.y),l=fabric.Intersection.intersectPolygonRectangle([o,d,t,i],e,n);return"Intersection"===l.status},intersectsWithObject:function(e){function n(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var f=n(this.oCoords),o=n(e.oCoords),d=fabric.Intersection.intersectPolygonPolygon([f.tl,f.tr,f.br,f.bl],[o.tl,o.tr,o.br,o.bl]);return"Intersection"===d.status},isContainedWithinObject:function(e){var n=e.getBoundingRect(),f=new fabric.Point(n.left,n.top),o=new fabric.Point(n.left+n.width,n.top+n.height);return this.isContainedWithinRect(f,o)},isContainedWithinRect:function(e,n){var f=this.getBoundingRect();return f.left>=e.x&&f.left+f.width<=n.x&&f.top>=e.y&&f.top+f.height<=n.y},containsPoint:function(e){var n=this._getImageLines(this.oCoords),f=this._findCrossPoints(e,n);return 0!==f&&f%2===1},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,n){var f,o,d,i,t,l,s,u=0;for(var a in n)if(s=n[a],!(s.o.y=e.y&&s.d.y>=e.y||(s.o.x===s.d.x&&s.o.x>=e.x?(t=s.o.x,l=e.y):(f=0,o=(s.d.y-s.o.y)/(s.d.x-s.o.x),d=e.y-f*e.x,i=s.o.y-o*s.o.x,t=-(d-i)/(f-o),l=d+f*t),t>=e.x&&(u+=1),2!==u)))break;return u},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=fabric.util.array.min(e),f=fabric.util.array.max(e),o=Math.abs(n-f),d=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],i=fabric.util.array.min(d),t=fabric.util.array.max(d),l=Math.abs(i-t);return{left:n,top:i,width:o,height:l}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)e?-this.minScaleLimit:this.minScaleLimit:e},scale:function(e){return e=this._constrainScale(e),0>e&&(this.flipX=!this.flipX,this.flipY=!this.flipY,e*=-1),this.scaleX=e,this.scaleY=e,this.setCoords(),this},scaleToWidth:function(e){var n=this.getBoundingRectWidth()/this.getWidth();return this.scale(e/this.width/n)},scaleToHeight:function(e){var n=this.getBoundingRectHeight()/this.getHeight();return this.scale(e/this.height/n)},setCoords:function(){var n=this.strokeWidth>1?this.strokeWidth:0,f=e(this.angle),o=this.getViewportTransform(),d=function(e){return fabric.util.transformPoint(e,o)},i=this.width,t=this.height,l="round"===this.strokeLineCap||"square"===this.strokeLineCap,s="line"===this.type&&1===this.width,u="line"===this.type&&1===this.height,a=l&&u||"line"!==this.type,p=l&&s||"line"!==this.type;s?i=n:u&&(t=n),a&&(i+=n),p&&(t+=n),this.currentWidth=i*this.scaleX,this.currentHeight=t*this.scaleY,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var c=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),y=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),m=Math.cos(y+f)*c,r=Math.sin(y+f)*c,v=Math.sin(f),w=Math.cos(f),b=this.getCenterPoint(),g=new fabric.Point(this.currentWidth,this.currentHeight),h=new fabric.Point(b.x-m,b.y-r),x=new fabric.Point(h.x+g.x*w,h.y+g.x*v),j=new fabric.Point(h.x-g.y*v,h.y+g.y*w),k=new fabric.Point(h.x+g.x/2*w,h.y+g.x/2*v),q=d(h),z=d(x),A=d(new fabric.Point(x.x-g.y*v,x.y+g.y*w)),B=d(j),C=d(new fabric.Point(h.x-g.y/2*v,h.y+g.y/2*w)),D=d(k),E=d(new fabric.Point(x.x-g.y/2*v,x.y+g.y/2*w)),F=d(new fabric.Point(j.x+g.x/2*w,j.y+g.x/2*v)),G=d(new fabric.Point(k.x,k.y)),H=Math.cos(y+f)*this.padding*Math.sqrt(2),I=Math.sin(y+f)*this.padding*Math.sqrt(2);return q=q.add(new fabric.Point(-H,-I)),z=z.add(new fabric.Point(I,-H)),A=A.add(new fabric.Point(H,I)),B=B.add(new fabric.Point(-I,H)),C=C.add(new fabric.Point((-H-I)/2,(-I+H)/2)),D=D.add(new fabric.Point((I-H)/2,-(I+H)/2)),E=E.add(new fabric.Point((I+H)/2,(I-H)/2)),F=F.add(new fabric.Point((H-I)/2,(H+I)/2)),G=G.add(new fabric.Point((I-H)/2,-(I+H)/2)),this.oCoords={tl:q,tr:z,br:A,bl:B,ml:C,mt:D,mr:E,mb:F,mtr:G},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",n="destination-over"===this.fillRule?"evenodd":this.fillRule,f=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",o=this.strokeWidth?this.strokeWidth:"0",d=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",t=this.strokeLineJoin?this.strokeLineJoin:"miter",l=this.strokeMiterLimit?this.strokeMiterLimit:"4",s="undefined"!=typeof this.opacity?this.opacity:"1",u=this.visible?"":" visibility: hidden;",a=this.shadow&&"text"!==this.type?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",f,"; ","stroke-width: ",o,"; ","stroke-dasharray: ",d,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",t,"; ","stroke-miterlimit: ",l,"; ","fill: ",e,"; ","fill-rule: ",n,"; ","opacity: ",s,";",a,u].join("")},getSvgTransform:function(){if(this.group)return"";var e=fabric.util.toFixed,n=this.getAngle(),f=!this.canvas||this.canvas.svgViewportTransformation?this.getViewportTransform():[1,0,0,1,0,0],o=fabric.util.transformPoint(this.getCenterPoint(),f),d=fabric.Object.NUM_FRACTION_DIGITS,i="path-group"===this.type?"":"translate("+e(o.x,d)+" "+e(o.y,d)+")",t=0!==n?" rotate("+e(n,d)+")":"",l=1===this.scaleX&&1===this.scaleY&&1===f[0]&&1===f[3]?"":" scale("+e(this.scaleX*f[0],d)+" "+e(this.scaleY*f[3],d)+")",s="path-group"===this.type?this.width*f[0]:0,u=this.flipX?" matrix(-1 0 0 1 "+s+" 0) ":"",a="path-group"===this.type?this.height*f[3]:0,p=this.flipY?" matrix(1 0 0 -1 0 "+a+")":""; -return[i,t,l,u,p].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.join(" ")+")":""},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(e){"use strict";function n(e,n){var f=e.origin,o=e.axis1,d=e.axis2,i=e.dimension,t=n.nearest,l=n.center,s=n.farthest;return function(){switch(this.get(f)){case t:return Math.min(this.get(o),this.get(d));case l:return Math.min(this.get(o),this.get(d))+.5*this.get(i);case s:return Math.max(this.get(o),this.get(d))}}}var f=e.fabric||(e.fabric={}),o=f.util.object.extend,d={x1:1,x2:1,y1:1,y2:1},i=f.StaticCanvas.supports("setLineDash");return f.Line?void f.warn("fabric.Line is already defined"):(f.Line=f.util.createClass(f.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,initialize:function(e,n){n=n||{},e||(e=[0,0,0,0]),this.callSuper("initialize",n),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(n)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1)||1,this.height=Math.abs(this.y2-this.y1)||1,this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,n){return this[e]=n,"undefined"!=typeof d[e]&&this._setWidthHeight(),this},_getLeftToOriginX:n({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:n({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e,n){if(e.beginPath(),n){var f=this.getCenterPoint();e.translate(f.x,f.y)}if(!this.strokeDashArray||this.strokeDashArray&&i){var o=this.x1<=this.x2?-1:1,d=this.y1<=this.y2?-1:1;e.moveTo(1===this.width?0:o*this.width/2,1===this.height?0:d*this.height/2),e.lineTo(1===this.width?0:-1*o*this.width/2,1===this.height?0:-1*d*this.height/2)}e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=t},_renderDashedStroke:function(e){var n=this.x1<=this.x2?-1:1,o=this.y1<=this.y2?-1:1,d=1===this.width?0:n*this.width/2,i=1===this.height?0:o*this.height/2;e.beginPath(),f.util.drawDashedLine(e,d,i,-d,-i,this.strokeDashArray),e.closePath()},toObject:function(e){return o(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(e){var n=this._createBaseSVGMarkup(),f="";if(!this.group){var o=-this.width/2-(this.x1>this.x2?this.x2:this.x1),d=-this.height/2-(this.y1>this.y2?this.y2:this.y1);f="translate("+o+", "+d+") "}return n.push("\n'),e?e(n.join("")):n.join("")},complexity:function(){return 1}}),f.Line.ATTRIBUTE_NAMES=f.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),f.Line.fromElement=function(e,n){var d=f.parseAttributes(e,f.Line.ATTRIBUTE_NAMES),i=[d.x1||0,d.y1||0,d.x2||0,d.y2||0];return new f.Line(i,o(d,n))},void(f.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new f.Line(n,e)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";function n(e){return"radius"in e&&e.radius>0}var f=e.fabric||(e.fabric={}),o=2*Math.PI,d=f.util.object.extend;return f.Circle?void f.warn("fabric.Circle is already defined."):(f.Circle=f.util.createClass(f.Object,{type:"circle",radius:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("radius",e.radius||0)},_set:function(e,n){return this.callSuper("_set",e,n),"radius"===e&&this.setRadius(n),this},toObject:function(e){return d(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var n=this._createBaseSVGMarkup(),f=0,o=0;return this.group&&(f=this.left+this.radius,o=this.top+this.radius),n.push("\n'),e?e(n.join("")):n.join("")},_render:function(e,n){e.beginPath(),e.arc(n?this.left+this.radius:0,n?this.top+this.radius:0,this.radius,0,o,!1),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",2*e).set("height",2*e)},complexity:function(){return 1}}),f.Circle.ATTRIBUTE_NAMES=f.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),f.Circle.fromElement=function(e,o){o||(o={});var i=f.parseAttributes(e,f.Circle.ATTRIBUTE_NAMES);if(!n(i))throw new Error("value of `r` attribute is required and can not be negative");i.left=i.left||0,i.top=i.top||0;var t=new f.Circle(d(i,o));return t.left-=t.radius,t.top-=t.radius,t},void(f.Circle.fromObject=function(e){return new f.Circle(e)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={});return n.Triangle?void n.warn("fabric.Triangle is already defined"):(n.Triangle=n.util.createClass(n.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var n=this.width/2,f=this.height/2;e.beginPath(),e.moveTo(-n,f),e.lineTo(0,-f),e.lineTo(n,f),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var f=this.width/2,o=this.height/2;e.beginPath(),n.util.drawDashedLine(e,-f,o,0,-o,this.strokeDashArray),n.util.drawDashedLine(e,0,-o,f,o,this.strokeDashArray),n.util.drawDashedLine(e,f,o,-f,o,this.strokeDashArray),e.closePath()},toSVG:function(e){var n=this._createBaseSVGMarkup(),f=this.width/2,o=this.height/2,d=[-f+" "+o,"0 "+-o,f+" "+o].join(",");return n.push("'),e?e(n.join("")):n.join("")},complexity:function(){return 1}}),void(n.Triangle.fromObject=function(e){return new n.Triangle(e)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=2*Math.PI,o=n.util.object.extend;return n.Ellipse?void n.warn("fabric.Ellipse is already defined."):(n.Ellipse=n.util.createClass(n.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",2*this.get("rx")),this.set("height",2*this.get("ry"))},toObject:function(e){return o(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var n=this._createBaseSVGMarkup(),f=0,o=0;return this.group&&(f=this.left+this.rx,o=this.top+this.ry),n.push("\n'),e?e(n.join("")):n.join("")},_render:function(e,n){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(n?this.left+this.rx:0,n?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,f,!1),e.restore(),this._renderFill(e),this._renderStroke(e)},complexity:function(){return 1}}),n.Ellipse.ATTRIBUTE_NAMES=n.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),n.Ellipse.fromElement=function(e,f){f||(f={});var d=n.parseAttributes(e,n.Ellipse.ATTRIBUTE_NAMES);d.left=d.left||0,d.top=d.top||0;var i=new n.Ellipse(o(d,f));return i.top-=i.ry,i.left-=i.rx,i},void(n.Ellipse.fromObject=function(e){return new n.Ellipse(e)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;if(n.Rect)return void console.warn("fabric.Rect is already defined");var o=n.Object.prototype.stateProperties.concat();o.push("rx","ry","x","y"),n.Rect=n.util.createClass(n.Object,{stateProperties:o,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e,n){if(1===this.width&&1===this.height)return void e.fillRect(0,0,1,1);var f=this.rx?Math.min(this.rx,this.width/2):0,o=this.ry?Math.min(this.ry,this.height/2):0,d=this.width,i=this.height,t=n?this.left:-this.width/2,l=n?this.top:-this.height/2,s=0!==f||0!==o,u=.4477152502;e.beginPath(),e.moveTo(t+f,l),e.lineTo(t+d-f,l),s&&e.bezierCurveTo(t+d-u*f,l,t+d,l+u*o,t+d,l+o),e.lineTo(t+d,l+i-o),s&&e.bezierCurveTo(t+d,l+i-u*o,t+d-u*f,l+i,t+d-f,l+i),e.lineTo(t+f,l+i),s&&e.bezierCurveTo(t+u*f,l+i,t,l+i-u*o,t,l+i-o),e.lineTo(t,l+o),s&&e.bezierCurveTo(t,l+u*o,t+u*f,l,t+f,l),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var f=-this.width/2,o=-this.height/2,d=this.width,i=this.height;e.beginPath(),n.util.drawDashedLine(e,f,o,f+d,o,this.strokeDashArray),n.util.drawDashedLine(e,f+d,o,f+d,o+i,this.strokeDashArray),n.util.drawDashedLine(e,f+d,o+i,f,o+i,this.strokeDashArray),n.util.drawDashedLine(e,f,o+i,f,o,this.strokeDashArray),e.closePath()},toObject:function(e){var n=f(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0});return this.includeDefaultValues||this._removeDefaultValues(n),n},toSVG:function(e){var n=this._createBaseSVGMarkup(),f=this.left,o=this.top;return this.group||(f=-this.width/2,o=-this.height/2),n.push("\n'),e?e(n.join("")):n.join("")},complexity:function(){return 1}}),n.Rect.ATTRIBUTE_NAMES=n.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),n.Rect.fromElement=function(e,o){if(!e)return null;o=o||{};var d=n.parseAttributes(e,n.Rect.ATTRIBUTE_NAMES);return d.left=d.left||0,d.top=d.top||0,new n.Rect(f(o?n.util.object.clone(o):{},d))},n.Rect.fromObject=function(e){return new n.Rect(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.toFixed;return n.Polyline?void n.warn("fabric.Polyline is already defined"):(n.Polyline=n.util.createClass(n.Object,{type:"polyline",points:null,initialize:function(e,n){n=n||{},this.set("points",e),this.callSuper("initialize",n),this._calcDimensions()},_calcDimensions:function(){return n.Polygon.prototype._calcDimensions.call(this)},_applyPointOffset:function(){return n.Polygon.prototype._applyPointOffset.call(this)},toObject:function(e){return n.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){for(var n=[],o=this._createBaseSVGMarkup(),d=0,i=this.points.length;i>d;d++)n.push(f(this.points[d].x,2),",",f(this.points[d].y,2)," ");return o.push("\n'),e?e(o.join("")):o.join("")},_render:function(e){var n;e.beginPath(),this._applyPointOffset&&(this.group&&"path-group"===this.group.type||this._applyPointOffset(),this._applyPointOffset=null),e.moveTo(this.points[0].x,this.points[0].y);for(var f=0,o=this.points.length;o>f;f++)n=this.points[f],e.lineTo(n.x,n.y);this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var f,o;e.beginPath();for(var d=0,i=this.points.length;i>d;d++)f=this.points[d],o=this.points[d+1]||f,n.util.drawDashedLine(e,f.x,f.y,o.x,o.y,this.strokeDashArray)},complexity:function(){return this.get("points").length}}),n.Polyline.ATTRIBUTE_NAMES=n.SHARED_ATTRIBUTES.concat(),n.Polyline.fromElement=function(e,f){if(!e)return null;f||(f={});var o=n.parsePointsAttribute(e.getAttribute("points")),d=n.parseAttributes(e,n.Polyline.ATTRIBUTE_NAMES);return null===o?null:new n.Polyline(o,n.util.object.extend(d,f))},void(n.Polyline.fromObject=function(e){var f=e.points;return new n.Polyline(f,e,!0)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend,o=n.util.array.min,d=n.util.array.max,i=n.util.toFixed;return n.Polygon?void n.warn("fabric.Polygon is already defined"):(n.Polygon=n.util.createClass(n.Object,{type:"polygon",points:null,initialize:function(e,n){n=n||{},this.points=e,this.callSuper("initialize",n),this._calcDimensions()},_calcDimensions:function(){var e=this.points,n=o(e,"x"),f=o(e,"y"),i=d(e,"x"),t=d(e,"y");this.width=i-n||1,this.height=t-f||1,this.left=n,this.top=f},_applyPointOffset:function(){this.points.forEach(function(e){e.x-=this.left+this.width/2,e.y-=this.top+this.height/2},this)},toObject:function(e){return f(this.callSuper("toObject",e),{points:this.points.concat()})},toSVG:function(e){for(var n=[],f=this._createBaseSVGMarkup(),o=0,d=this.points.length;d>o;o++)n.push(i(this.points[o].x,2),",",i(this.points[o].y,2)," ");return f.push("\n'),e?e(f.join("")):f.join("")},_render:function(e){var n;e.beginPath(),this._applyPointOffset&&(this.group&&"path-group"===this.group.type||this._applyPointOffset(),this._applyPointOffset=null),e.moveTo(this.points[0].x,this.points[0].y);for(var f=0,o=this.points.length;o>f;f++)n=this.points[f],e.lineTo(n.x,n.y);this._renderFill(e),(this.stroke||this.strokeDashArray)&&(e.closePath(),this._renderStroke(e))},_renderDashedStroke:function(e){var f,o;e.beginPath();for(var d=0,i=this.points.length;i>d;d++)f=this.points[d],o=this.points[d+1]||this.points[0],n.util.drawDashedLine(e,f.x,f.y,o.x,o.y,this.strokeDashArray);e.closePath()},complexity:function(){return this.points.length}}),n.Polygon.ATTRIBUTE_NAMES=n.SHARED_ATTRIBUTES.concat(),n.Polygon.fromElement=function(e,o){if(!e)return null;o||(o={});var d=n.parsePointsAttribute(e.getAttribute("points")),i=n.parseAttributes(e,n.Polygon.ATTRIBUTE_NAMES);return null===d?null:new n.Polygon(d,f(i,o))},void(n.Polygon.fromObject=function(e){return new n.Polygon(e.points,e,!0)}))}("undefined"!=typeof exports?exports:this),function(e){"use strict";function n(e){return"H"===e[0]?e[1]:e[e.length-2]}function f(e){return"V"===e[0]?e[1]:e[e.length-1]}var o=e.fabric||(e.fabric={}),d=o.util.array.min,i=o.util.array.max,t=o.util.object.extend,l=Object.prototype.toString,s=o.util.drawArc,u={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},a={m:"l",M:"L"};return o.Path?void o.warn("fabric.Path is already defined"):(o.Path=o.util.createClass(o.Object,{type:"path",path:null,initialize:function(e,n){if(n=n||{},this.setOptions(n),!e)throw new Error("`path` argument is required");var f="[object Array]"===l.call(e);this.path=f?e:e.match&&e.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi),this.path&&(f||(this.path=this._parsePath()),this._initializePath(n),n.sourcePath&&this.setSourcePath(n.sourcePath))},_initializePath:function(e){var n="width"in e&&null!=e.width,f="height"in e&&null!=e.width,o="left"in e,d="top"in e,i=o?this.left:0,l=d?this.top:0;n&&f?(d||(this.top=this.height/2),o||(this.left=this.width/2)):(t(this,this._parseDimensions()),n&&(this.width=e.width),f&&(this.height=e.height)),this.pathOffset=this.pathOffset||this._calculatePathOffset(i,l)},_calculatePathOffset:function(e,n){return{x:this.left-e-this.width/2,y:this.top-n-this.height/2}},_render:function(e,n){var f,o,d,i,t,l=null,u=0,a=0,p=0,c=0,y=0,m=0,r=-(this.width/2+this.pathOffset.x),v=-(this.height/2+this.pathOffset.y);n&&(r+=this.width/2,v+=this.height/2);for(var w=0,b=this.path.length;b>w;++w){switch(f=this.path[w],f[0]){case"l":p+=f[1],c+=f[2],e.lineTo(p+r,c+v);break;case"L":p=f[1],c=f[2],e.lineTo(p+r,c+v);break;case"h":p+=f[1],e.lineTo(p+r,c+v);break;case"H":p=f[1],e.lineTo(p+r,c+v);break;case"v":c+=f[1],e.lineTo(p+r,c+v);break;case"V":c=f[1],e.lineTo(p+r,c+v);break;case"m":p+=f[1],c+=f[2],u=p,a=c,e.moveTo(p+r,c+v);break;case"M":p=f[1],c=f[2],u=p,a=c,e.moveTo(p+r,c+v);break;case"c":o=p+f[5],d=c+f[6],y=p+f[3],m=c+f[4],e.bezierCurveTo(p+f[1]+r,c+f[2]+v,y+r,m+v,o+r,d+v),p=o,c=d;break;case"C":p=f[5],c=f[6],y=f[3],m=f[4],e.bezierCurveTo(f[1]+r,f[2]+v,y+r,m+v,p+r,c+v);break;case"s":o=p+f[3],d=c+f[4],y=y?2*p-y:p,m=m?2*c-m:c,e.bezierCurveTo(y+r,m+v,p+f[1]+r,c+f[2]+v,o+r,d+v),y=p+f[1],m=c+f[2],p=o,c=d;break;case"S":o=f[3],d=f[4],y=2*p-y,m=2*c-m,e.bezierCurveTo(y+r,m+v,f[1]+r,f[2]+v,o+r,d+v),p=o,c=d,y=f[1],m=f[2];break;case"q":o=p+f[3],d=c+f[4],y=p+f[1],m=c+f[2],e.quadraticCurveTo(y+r,m+v,o+r,d+v),p=o,c=d;break;case"Q":o=f[3],d=f[4],e.quadraticCurveTo(f[1]+r,f[2]+v,o+r,d+v),p=o,c=d,y=f[1],m=f[2];break;case"t":o=p+f[1],d=c+f[2],null===l[0].match(/[QqTt]/)?(y=p,m=c):"t"===l[0]?(y=2*p-i,m=2*c-t):"q"===l[0]&&(y=2*p-y,m=2*c-m),i=y,t=m,e.quadraticCurveTo(y+r,m+v,o+r,d+v),p=o,c=d,y=p+f[1],m=c+f[2];break;case"T":o=f[1],d=f[2],y=2*p-y,m=2*c-m,e.quadraticCurveTo(y+r,m+v,o+r,d+v),p=o,c=d;break;case"a":s(e,p+r,c+v,[f[1],f[2],f[3],f[4],f[5],f[6]+p+r,f[7]+c+v]),p+=f[6],c+=f[7];break;case"A":s(e,p+r,c+v,[f[1],f[2],f[3],f[4],f[5],f[6]+r,f[7]+v]),p=f[6],c=f[7];break;case"z":case"Z":p=u,c=a,e.closePath()}l=f}},render:function(e,n){if(this.visible){e.save(),n&&e.translate(-this.width/2,-this.height/2);var f=this.transformMatrix;f&&e.transform(f[0],f[1],f[2],f[3],f[4],f[5]),n||this.transform(e),this._setStrokeStyles(e),this._setFillStyles(e),this._setShadow(e),this.clipTo&&o.util.clipContext(this,e),e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this._render(e,n),this._renderFill(e),this._renderStroke(e),this.clipTo&&e.restore(),this._removeShadow(e),e.restore()}},toString:function(){return"#"},toObject:function(e){var n=t(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(n.sourcePath=this.sourcePath),this.transformMatrix&&(n.transformMatrix=this.transformMatrix),n},toDatalessObject:function(e){var n=this.toObject(e);return this.sourcePath&&(n.path=this.sourcePath),delete n.sourcePath,n},toSVG:function(e){for(var n=[],f=this._createBaseSVGMarkup(),o=0,d=this.path.length;d>o;o++)n.push(this.path[o].join(" "));var i=n.join(" ");return f.push("\n"),e?e(f.join("")):f.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var e,n,f,o,d,i=[],t=[],l=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,s=0,p=this.path.length;p>s;s++){for(e=this.path[s],o=e.slice(1).trim(),t.length=0;f=l.exec(o);)t.push(f[0]);d=[e.charAt(0)];for(var c=0,y=t.length;y>c;c++)n=parseFloat(t[c]),isNaN(n)||d.push(n);var m=d[0],r=u[m.toLowerCase()],v=a[m]||m;if(d.length-1>r)for(var w=1,b=d.length;b>w;w+=r)i.push([m].concat(d.slice(w,w+r))),m=v;else i.push(d)}return i},_parseDimensions:function(){var e=[],n=[],f={};this.path.forEach(function(o,d){this._getCoordsFromCommand(o,d,e,n,f)},this);var o=d(e),t=d(n),l=i(e),s=i(n),u=l-o,a=s-t,p={left:this.left+(o+u/2),top:this.top+(t+a/2),width:u,height:a};return p},_getCoordsFromCommand:function(e,o,d,i,t){var l=!1;"H"!==e[0]&&(t.x=n(0===o?e:this.path[o-1])),"V"!==e[0]&&(t.y=f(0===o?e:this.path[o-1])),e[0]===e[0].toLowerCase()&&(l=!0);var s,u=this._getXY(e,l,t);s=parseInt(u.x,10),isNaN(s)||d.push(s),s=parseInt(u.y,10),isNaN(s)||i.push(s)},_getXY:function(e,o,d){var i=o?d.x+n(e):"V"===e[0]?d.x:n(e),t=o?d.y+f(e):"H"===e[0]?d.y:f(e);return{x:i,y:t}}}),o.Path.fromObject=function(e,n){"string"==typeof e.path?o.loadSVGFromURL(e.path,function(f){var d=f[0],i=e.path;delete e.path,o.util.object.extend(d,e),d.setSourcePath(i),n(d)}):n(new o.Path(e.path,e))},o.Path.ATTRIBUTE_NAMES=o.SHARED_ATTRIBUTES.concat(["d"]),o.Path.fromElement=function(e,n,f){var d=o.parseAttributes(e,o.Path.ATTRIBUTE_NAMES);n&&n(new o.Path(d.d,t(d,f)))},void(o.Path.async=!0))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend,o=n.util.array.invoke,d=n.Object.prototype.toObject;return n.PathGroup?void n.warn("fabric.PathGroup is already defined"):(n.PathGroup=n.util.createClass(n.Path,{type:"path-group",fill:"",initialize:function(e,n){n=n||{},this.paths=e||[];for(var f=this.paths.length;f--;)this.paths[f].group=this;this.setOptions(n),n.widthAttr&&(this.scaleX=n.widthAttr/n.width),n.heightAttr&&(this.scaleY=n.heightAttr/n.height),this.setCoords(),n.sourcePath&&this.setSourcePath(n.sourcePath)},render:function(e){if(this.visible){e.save();var f=this.transformMatrix;f&&e.transform(f[0],f[1],f[2],f[3],f[4],f[5]),this.transform(e),this._setShadow(e),this.clipTo&&n.util.clipContext(this,e);for(var o=0,d=this.paths.length;d>o;++o)this.paths[o].render(e,!0);this.clipTo&&e.restore(),this._removeShadow(e),e.restore()}},_set:function(e,n){if("fill"===e&&n&&this.isSameColor())for(var f=this.paths.length;f--;)this.paths[f]._set(e,n);return this.callSuper("_set",e,n)},toObject:function(e){var n=f(d.call(this,e),{paths:o(this.getObjects(),"toObject",e)});return this.sourcePath&&(n.sourcePath=this.sourcePath),n},toDatalessObject:function(e){var n=this.toObject(e);return this.sourcePath&&(n.paths=this.sourcePath),n},toSVG:function(e){for(var n=this.getObjects(),f="translate("+this.left+" "+this.top+")",o=["\n"],d=0,i=n.length;i>d;d++)o.push(n[d].toSVG(e));return o.push("\n"),e?e(o.join("")):o.join("")},toString:function(){return"#"},isSameColor:function(){var e=(this.getObjects()[0].get("fill")||"").toLowerCase();return this.getObjects().every(function(n){return(n.get("fill")||"").toLowerCase()===e})},complexity:function(){return this.paths.reduce(function(e,n){return e+(n&&n.complexity?n.complexity():0)},0)},getObjects:function(){return this.paths}}),n.PathGroup.fromObject=function(e,f){"string"==typeof e.paths?n.loadSVGFromURL(e.paths,function(o){var d=e.paths;delete e.paths;var i=n.util.groupSVGElements(o,e,d);f(i)}):n.util.enlivenObjects(e.paths,function(o){delete e.paths,f(new n.PathGroup(o,e))})},void(n.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend,o=n.util.array.min,d=n.util.array.max,i=n.util.array.invoke;if(!n.Group){var t={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};n.Group=n.util.createClass(n.Object,n.Collection,{type:"group",initialize:function(e,n){n=n||{},this._objects=e||[];for(var o=this._objects.length;o--;)this._objects[o].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),n&&f(this,n),this._setOpacityIfSame(),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var n=e.getLeft(),f=e.getTop();e.set({originalLeft:n,originalTop:f,left:n-this.left,top:f-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),e&&(this._objects.push(e),e.group=this),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,n){if(e in this.delegatedProperties){var f=this._objects.length;for(this[e]=n;f--;)this._objects[f].set(e,n)}else this[e]=n},toObject:function(e){return f(this.callSuper("toObject",e),{objects:i(this._objects,"toObject",e)})},render:function(e){if(this.visible){e.save(),this.clipTo&&n.util.clipContext(this,e);for(var f=0,o=this._objects.length;o>f;f++)this._renderObject(this._objects[f],e);this.clipTo&&e.restore(),e.restore()}},_renderControls:function(e,n){this.callSuper("_renderControls",e,n);for(var f=0,o=this._objects.length;o>f;f++)this._objects[f]._renderControls(e)},_renderObject:function(e,n){var f=e.hasRotatingPoint;e.visible&&(e.hasRotatingPoint=!1,e.render(n),e.hasRotatingPoint=f)},_restoreObjectsState:function(){return this._objects.forEach(this._restoreObjectState,this),this},_moveFlippedObject:function(e){var n=e.get("originX"),f=e.get("originY"),o=e.getCenterPoint();e.set({originX:"center",originY:"center",left:o.x,top:o.y}),this._toggleFlipping(e);var d=e.getPointByOrigin(n,f);return e.set({originX:n,originY:f,left:d.x,top:d.y}),this},_toggleFlipping:function(e){this.flipX&&(e.toggle("flipX"),e.set("left",-e.get("left")),e.setAngle(-e.getAngle())),this.flipY&&(e.toggle("flipY"),e.set("top",-e.get("top")),e.setAngle(-e.getAngle()))},_restoreObjectState:function(e){return this._setObjectPosition(e),e.setCoords(),e.hasControls=e.__origHasControls,delete e.__origHasControls,e.set("active",!1),e.setCoords(),delete e.group,this},_setObjectPosition:function(e){var n=this.getLeft(),f=this.getTop(),o=this._getRotatedLeftTop(e);e.set({angle:e.getAngle()+this.getAngle(),left:n+o.left,top:f+o.top,scaleX:e.get("scaleX")*this.get("scaleX"),scaleY:e.get("scaleY")*this.get("scaleY")})},_getRotatedLeftTop:function(e){var n=this.getAngle()*(Math.PI/180);return{left:-Math.sin(n)*e.getTop()*this.get("scaleY")+Math.cos(n)*e.getLeft()*this.get("scaleX"),top:Math.cos(n)*e.getTop()*this.get("scaleY")+Math.sin(n)*e.getLeft()*this.get("scaleX")}},destroy:function(){return this._objects.forEach(this._moveFlippedObject,this),this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},_setOpacityIfSame:function(){var e=this.getObjects(),n=e[0]?e[0].get("opacity"):1,f=e.every(function(e){return e.get("opacity")===n});f&&(this.opacity=n)},_calcBounds:function(e){for(var n,f=[],o=[],d=0,i=this._objects.length;i>d;++d){n=this._objects[d],n.setCoords();for(var t in n.oCoords)f.push(n.oCoords[t].x),o.push(n.oCoords[t].y)}this.set(this._getBounds(f,o,e))},_getBounds:function(e,f,i){var t=n.util.invertTransform(this.getViewportTransform()),l=n.util.transformPoint(new n.Point(o(e),o(f)),t),s=n.util.transformPoint(new n.Point(d(e),d(f)),t),u={width:s.x-l.x||0,height:s.y-l.y||0};return i||(u.left=(l.x+s.x)/2||0,u.top=(l.y+s.y)/2||0),u},toSVG:function(e){for(var n=["\n'],f=0,o=this._objects.length;o>f;f++)n.push(this._objects[f].toSVG(e));return n.push("\n"),e?e(n.join("")):n.join("")},get:function(e){if(e in t){if(this[e])return this[e];for(var n=0,f=this._objects.length;f>n;n++)if(this._objects[n][e])return!0;return!1}return e in this.delegatedProperties?this._objects[0]&&this._objects[0].get(e):this[e]}}),n.Group.fromObject=function(e,f){n.util.enlivenObjects(e.objects,function(o){delete e.objects,f&&f(new n.Group(o,e))})},n.Group.async=!0}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=fabric.util.object.extend;return e.fabric||(e.fabric={}),e.fabric.Image?void fabric.warn("fabric.Image is already defined."):(fabric.Image=fabric.util.createClass(fabric.Object,{type:"image",crossOrigin:"",initialize:function(e,n){n||(n={}),this.filters=[],this.callSuper("initialize",n),this._initElement(e,n),this._initConfig(n),n.filters&&(this.filters=n.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e,n){return this._element=e,this._originalElement=e,this._initConfig(),0!==this.filters.length&&this.applyFilters(n),this},setCrossOrigin:function(e){return this.crossOrigin=e,this._element.crossOrigin=e,this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},_stroke:function(e){e.save(),this._setStrokeStyles(e),e.beginPath(),e.strokeRect(-this.width/2,-this.height/2,this.width,this.height),e.closePath(),e.restore()},_renderDashedStroke:function(e){var n=-this.width/2,f=-this.height/2,o=this.width,d=this.height;e.save(),this._setStrokeStyles(e),e.beginPath(),fabric.util.drawDashedLine(e,n,f,n+o,f,this.strokeDashArray),fabric.util.drawDashedLine(e,n+o,f,n+o,f+d,this.strokeDashArray),fabric.util.drawDashedLine(e,n+o,f+d,n,f+d,this.strokeDashArray),fabric.util.drawDashedLine(e,n,f+d,n,f,this.strokeDashArray),e.closePath(),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{src:this._originalElement.src||this._originalElement._src,filters:this.filters.map(function(e){return e&&e.toObject()}),crossOrigin:this.crossOrigin})},toSVG:function(e){var n=[],f=-this.width/2,o=-this.height/2;if(this.group&&(f=this.left,o=this.top),n.push('\n','\n"),this.stroke||this.strokeDashArray){var d=this.fill;this.fill=null,n.push("\n'),this.fill=d}return n.push("\n"),e?e(n.join("")):n.join("")},getSrc:function(){return this.getElement()?this.getElement().src||this.getElement()._src:void 0},toString:function(){return'#'},clone:function(e,n){this.constructor.fromObject(this.toObject(n),e)},applyFilters:function(e){if(this._originalElement){if(0===this.filters.length)return this._element=this._originalElement,void(e&&e());var n=this._originalElement,f=fabric.util.createCanvasElement(),o=fabric.util.createImage(),d=this;return f.width=n.width,f.height=n.height,f.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(f)}),o.width=n.width,o.height=n.height,fabric.isLikelyNode?(o.src=f.toBuffer(void 0,fabric.Image.pngCompression),d._element=o,e&&e()):(o.onload=function(){d._element=o,e&&e(),o.onload=f=n=null},o.src=f.toDataURL("image/png")),this}},_render:function(e,n){this._element&&e.drawImage(this._element,n?this.left:-this.width/2,n?this.top:-this.height/2,this.width,this.height),this._renderStroke(e)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element&&this.crossOrigin&&(this._element.crossOrigin=this.crossOrigin)},_initFilters:function(e,n){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){n&&n(e)},"fabric.Image.filters"):n&&n()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement()?this.getElement().width||0:0,this.height="height"in e?e.height:this.getElement()?this.getElement().height||0:0 -},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,n){fabric.util.loadImage(e.src,function(f){fabric.Image.prototype._initFilters.call(e,e,function(o){e.filters=o||[];var d=new fabric.Image(f,e);n&&n(d)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,n,f){fabric.util.loadImage(e,function(e){n(new fabric.Image(e,f))},null,f&&f.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,f,o){var d=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(d["xlink:href"],f,n(o?fabric.util.object.clone(o):{},d))},fabric.Image.async=!0,void(fabric.Image.pngCompression=1))}("undefined"!=typeof exports?exports:this),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Brightness=n.util.createClass(n.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||0},applyTo:function(e){for(var n=e.getContext("2d"),f=n.getImageData(0,0,e.width,e.height),o=f.data,d=this.brightness,i=0,t=o.length;t>i;i+=4)o[i]+=d,o[i+1]+=d,o[i+2]+=d;n.putImageData(f,0,0)},toObject:function(){return f(this.callSuper("toObject"),{brightness:this.brightness})}}),n.Image.filters.Brightness.fromObject=function(e){return new n.Image.filters.Brightness(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Convolute=n.util.createClass(n.Image.filters.BaseFilter,{type:"Convolute",initialize:function(e){e=e||{},this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var f=n.util.createCanvasElement();this.tmpCtx=f.getContext("2d")},_createImageData:function(e,n){return this.tmpCtx.createImageData(e,n)},applyTo:function(e){for(var n=this.matrix,f=e.getContext("2d"),o=f.getImageData(0,0,e.width,e.height),d=Math.round(Math.sqrt(n.length)),i=Math.floor(d/2),t=o.data,l=o.width,s=o.height,u=l,a=s,p=this._createImageData(u,a),c=p.data,y=this.opaque?1:0,m=0;a>m;m++)for(var r=0;u>r;r++){for(var v=m,w=r,b=4*(m*u+r),g=0,h=0,x=0,j=0,k=0;d>k;k++)for(var q=0;d>q;q++){var z=v+k-i,A=w+q-i;if(!(0>z||z>s||0>A||A>l)){var B=4*(z*l+A),C=n[k*d+q];g+=t[B]*C,h+=t[B+1]*C,x+=t[B+2]*C,j+=t[B+3]*C}}c[b]=g,c[b+1]=h,c[b+2]=x,c[b+3]=j+y*(255-j)}f.putImageData(p,0,0)},toObject:function(){return f(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),n.Image.filters.Convolute.fromObject=function(e){return new n.Image.filters.Convolute(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.GradientTransparency=n.util.createClass(n.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){for(var n=e.getContext("2d"),f=n.getImageData(0,0,e.width,e.height),o=f.data,d=this.threshold,i=o.length,t=0,l=o.length;l>t;t+=4)o[t+3]=d+255*(i-t)/i;n.putImageData(f,0,0)},toObject:function(){return f(this.callSuper("toObject"),{threshold:this.threshold})}}),n.Image.filters.GradientTransparency.fromObject=function(e){return new n.Image.filters.GradientTransparency(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={});n.Image.filters.Grayscale=n.util.createClass(n.Image.filters.BaseFilter,{type:"Grayscale",applyTo:function(e){for(var n,f=e.getContext("2d"),o=f.getImageData(0,0,e.width,e.height),d=o.data,i=o.width*o.height*4,t=0;i>t;)n=(d[t]+d[t+1]+d[t+2])/3,d[t]=n,d[t+1]=n,d[t+2]=n,t+=4;f.putImageData(o,0,0)}}),n.Image.filters.Grayscale.fromObject=function(){return new n.Image.filters.Grayscale}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={});n.Image.filters.Invert=n.util.createClass(n.Image.filters.BaseFilter,{type:"Invert",applyTo:function(e){var n,f=e.getContext("2d"),o=f.getImageData(0,0,e.width,e.height),d=o.data,i=d.length;for(n=0;i>n;n+=4)d[n]=255-d[n],d[n+1]=255-d[n+1],d[n+2]=255-d[n+2];f.putImageData(o,0,0)}}),n.Image.filters.Invert.fromObject=function(){return new n.Image.filters.Invert}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Mask=n.util.createClass(n.Image.filters.BaseFilter,{type:"Mask",initialize:function(e){e=e||{},this.mask=e.mask,this.channel=[0,1,2,3].indexOf(e.channel)>-1?e.channel:0},applyTo:function(e){if(this.mask){var f,o=e.getContext("2d"),d=o.getImageData(0,0,e.width,e.height),i=d.data,t=this.mask.getElement(),l=n.util.createCanvasElement(),s=this.channel,u=d.width*d.height*4;l.width=t.width,l.height=t.height,l.getContext("2d").drawImage(t,0,0,t.width,t.height);var a=l.getContext("2d").getImageData(0,0,t.width,t.height),p=a.data;for(f=0;u>f;f+=4)i[f+3]=p[f+s];o.putImageData(d,0,0)}},toObject:function(){return f(this.callSuper("toObject"),{mask:this.mask.toObject(),channel:this.channel})}}),n.Image.filters.Mask.fromObject=function(e,f){n.util.loadImage(e.mask.src,function(o){e.mask=new n.Image(o,e.mask),f&&f(new n.Image.filters.Mask(e))})},n.Image.filters.Mask.async=!0}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Noise=n.util.createClass(n.Image.filters.BaseFilter,{type:"Noise",initialize:function(e){e=e||{},this.noise=e.noise||0},applyTo:function(e){for(var n,f=e.getContext("2d"),o=f.getImageData(0,0,e.width,e.height),d=o.data,i=this.noise,t=0,l=d.length;l>t;t+=4)n=(.5-Math.random())*i,d[t]+=n,d[t+1]+=n,d[t+2]+=n;f.putImageData(o,0,0)},toObject:function(){return f(this.callSuper("toObject"),{noise:this.noise})}}),n.Image.filters.Noise.fromObject=function(e){return new n.Image.filters.Noise(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Pixelate=n.util.createClass(n.Image.filters.BaseFilter,{type:"Pixelate",initialize:function(e){e=e||{},this.blocksize=e.blocksize||4},applyTo:function(e){var n,f,o,d,i,t,l,s=e.getContext("2d"),u=s.getImageData(0,0,e.width,e.height),a=u.data,p=u.height,c=u.width;for(f=0;p>f;f+=this.blocksize)for(o=0;c>o;o+=this.blocksize){n=4*f*c+4*o,d=a[n],i=a[n+1],t=a[n+2],l=a[n+3];for(var y=f,m=f+this.blocksize;m>y;y++)for(var r=o,v=o+this.blocksize;v>r;r++)n=4*y*c+4*r,a[n]=d,a[n+1]=i,a[n+2]=t,a[n+3]=l}s.putImageData(u,0,0)},toObject:function(){return f(this.callSuper("toObject"),{blocksize:this.blocksize})}}),n.Image.filters.Pixelate.fromObject=function(e){return new n.Image.filters.Pixelate(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.RemoveWhite=n.util.createClass(n.Image.filters.BaseFilter,{type:"RemoveWhite",initialize:function(e){e=e||{},this.threshold=e.threshold||30,this.distance=e.distance||20},applyTo:function(e){for(var n,f,o,d=e.getContext("2d"),i=d.getImageData(0,0,e.width,e.height),t=i.data,l=this.threshold,s=this.distance,u=255-l,a=Math.abs,p=0,c=t.length;c>p;p+=4)n=t[p],f=t[p+1],o=t[p+2],n>u&&f>u&&o>u&&a(n-f)n;n+=4)f=.3*i[n]+.59*i[n+1]+.11*i[n+2],i[n]=f+100,i[n+1]=f+50,i[n+2]=f+255;o.putImageData(d,0,0)}}),n.Image.filters.Sepia.fromObject=function(){return new n.Image.filters.Sepia}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={});n.Image.filters.Sepia2=n.util.createClass(n.Image.filters.BaseFilter,{type:"Sepia2",applyTo:function(e){var n,f,o,d,i=e.getContext("2d"),t=i.getImageData(0,0,e.width,e.height),l=t.data,s=l.length;for(n=0;s>n;n+=4)f=l[n],o=l[n+1],d=l[n+2],l[n]=(.393*f+.769*o+.189*d)/1.351,l[n+1]=(.349*f+.686*o+.168*d)/1.203,l[n+2]=(.272*f+.534*o+.131*d)/2.14;i.putImageData(t,0,0)}}),n.Image.filters.Sepia2.fromObject=function(){return new n.Image.filters.Sepia2}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Tint=n.util.createClass(n.Image.filters.BaseFilter,{type:"Tint",initialize:function(e){e=e||{},this.color=e.color||"#000000",this.opacity="undefined"!=typeof e.opacity?e.opacity:new n.Color(this.color).getAlpha()},applyTo:function(e){var f,o,d,i,t,l,s,u,a,p=e.getContext("2d"),c=p.getImageData(0,0,e.width,e.height),y=c.data,m=y.length;for(a=new n.Color(this.color).getSource(),o=a[0]*this.opacity,d=a[1]*this.opacity,i=a[2]*this.opacity,u=1-this.opacity,f=0;m>f;f+=4)t=y[f],l=y[f+1],s=y[f+2],y[f]=o+t*u,y[f+1]=d+l*u,y[f+2]=i+s*u;p.putImageData(c,0,0)},toObject:function(){return f(this.callSuper("toObject"),{color:this.color,opacity:this.opacity})}}),n.Image.filters.Tint.fromObject=function(e){return new n.Image.filters.Tint(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend;n.Image.filters.Multiply=n.util.createClass(n.Image.filters.BaseFilter,{type:"Multiply",initialize:function(e){e=e||{},this.color=e.color||"#000000"},applyTo:function(e){var f,o,d=e.getContext("2d"),i=d.getImageData(0,0,e.width,e.height),t=i.data,l=t.length;for(o=new n.Color(this.color).getSource(),f=0;l>f;f+=4)t[f]*=o[0]/255,t[f+1]*=o[1]/255,t[f+2]*=o[2]/255;d.putImageData(i,0,0)},toObject:function(){return f(this.callSuper("toObject"),{color:this.color})}}),n.Image.filters.Multiply.fromObject=function(e){return new n.Image.filters.Multiply(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric;n.Image.filters.Blend=n.util.createClass({type:"Blend",initialize:function(e){e=e||{},this.color=e.color||"#000",this.image=e.image||!1,this.mode=e.mode||"multiply",this.alpha=e.alpha||1},applyTo:function(e){var f,o,d,i,t,l,s,u=e.getContext("2d"),a=u.getImageData(0,0,e.width,e.height),p=a.data,c=!1;if(this.image){c=!0;var y=n.util.createCanvasElement();y.width=this.image.width,y.height=this.image.height;var m=new n.StaticCanvas(y);m.add(this.image);var r=m.getContext("2d");s=r.getImageData(0,0,m.width,m.height).data}else s=new n.Color(this.color).getSource(),f=s[0]*this.alpha,o=s[1]*this.alpha,d=s[2]*this.alpha;for(var v=0,w=p.length;w>v;v+=4)switch(i=p[v],t=p[v+1],l=p[v+2],c&&(f=s[v]*this.alpha,o=s[v+1]*this.alpha,d=s[v+2]*this.alpha),this.mode){case"multiply":p[v]=i*f/255,p[v+1]=t*o/255,p[v+2]=l*d/255;break;case"screen":p[v]=1-(1-i)*(1-f),p[v+1]=1-(1-t)*(1-o),p[v+2]=1-(1-l)*(1-d);break;case"add":p[v]=Math.min(255,i+f),p[v+1]=Math.min(255,t+o),p[v+2]=Math.min(255,l+d);break;case"diff":case"difference":p[v]=Math.abs(i-f),p[v+1]=Math.abs(t-o),p[v+2]=Math.abs(l-d);break;case"subtract":var b=i-f,g=t-o,h=l-d;p[v]=0>b?0:b,p[v+1]=0>g?0:g,p[v+2]=0>h?0:h;break;case"darken":p[v]=Math.min(i,f),p[v+1]=Math.min(t,o),p[v+2]=Math.min(l,d);break;case"lighten":p[v]=Math.max(i,f),p[v+1]=Math.max(t,o),p[v+2]=Math.max(l,d)}u.putImageData(a,0,0)}}),n.Image.filters.Blend.fromObject=function(e){return new n.Image.filters.Blend(e)}}("undefined"!=typeof exports?exports:this),function(e){"use strict";var n=e.fabric||(e.fabric={}),f=n.util.object.extend,o=n.util.object.clone,d=n.util.toFixed,i=n.StaticCanvas.supports("setLineDash");if(n.Text)return void n.warn("fabric.Text is already defined");var t=n.Object.prototype.stateProperties.concat();t.push("fontFamily","fontWeight","fontSize","text","textDecoration","textAlign","fontStyle","lineHeight","textBackgroundColor","useNative","path"),n.Text=n.util.createClass(n.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},_reNewline:/\r?\n/,type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textAlign:"left",fontStyle:"",lineHeight:1.3,textBackgroundColor:"",path:null,useNative:!0,stateProperties:t,stroke:null,shadow:null,initialize:function(e,n){n=n||{},this.text=e,this.__skipDimension=!0,this.setOptions(n),this.__skipDimension=!1,this._initDimensions()},_initDimensions:function(){if(!this.__skipDimension){var e=n.util.createCanvasElement();this._render(e.getContext("2d"))}},toString:function(){return"#'},_render:function(e){"undefined"==typeof Cufon||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var f=this.text.split(this._reNewline);this._setTextStyles(e),this.width=this._getTextWidth(e,f),this.height=this._getTextHeight(e,f),this.clipTo&&n.util.clipContext(this,e),this._renderTextBackground(e,f),this._translateForTextAlign(e),this._renderText(e,f),"left"!==this.textAlign&&"justify"!==this.textAlign&&e.restore(),this._renderTextDecoration(e,f),this.clipTo&&e.restore(),this._setBoundaries(e,f),this._totalLineHeight=0},_renderText:function(e,n){e.save(),this._setShadow(e),this._setupFillRule(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._restoreFillRule(e),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){"left"!==this.textAlign&&"justify"!==this.textAlign&&(e.save(),e.translate("center"===this.textAlign?this.width/2:this.width,0))},_setBoundaries:function(e,n){this._boundaries=[];for(var f=0,o=n.length;o>f;f++){var d=this._getLineWidth(e,n[f]),i=this._getLineLeftOffset(d);this._boundaries.push({height:this.fontSize*this.lineHeight,width:d,left:i})}},_setTextStyles:function(e){this._setFillStyles(e),this._setStrokeStyles(e),e.textBaseline="alphabetic",this.skipTextAlign||(e.textAlign=this.textAlign),e.font=this._getFontDeclaration()},_getTextHeight:function(e,n){return this.fontSize*n.length*this.lineHeight},_getTextWidth:function(e,n){for(var f=e.measureText(n[0]||"|").width,o=1,d=n.length;d>o;o++){var i=e.measureText(n[o]).width;i>f&&(f=i)}return f},_renderChars:function(e,n,f,o,d){n[e](f,o,d)},_renderTextLine:function(e,n,f,o,d,i){if(d-=this.fontSize/4,"justify"!==this.textAlign)return void this._renderChars(e,n,f,o,d,i);var t=n.measureText(f).width,l=this.width;if(l>t)for(var s=f.split(/\s+/),u=n.measureText(f.replace(/\s+/g,"")).width,a=l-u,p=s.length-1,c=a/p,y=0,m=0,r=s.length;r>m;m++)this._renderChars(e,n,s[m],o+y,d,i),y+=n.measureText(s[m]).width+c;else this._renderChars(e,n,f,o,d,i)},_getLeftOffset:function(){return n.isLikelyNode?0:-this.width/2},_getTopOffset:function(){return-this.height/2},_renderTextFill:function(e,n){if(this.fill||this._skipFillStrokeCheck){this._boundaries=[];for(var f=0,o=0,d=n.length;d>o;o++){var i=this._getHeightOfLine(e,o,n);f+=i,this._renderTextLine("fillText",e,n[o],this._getLeftOffset(),this._getTopOffset()+f,o)}}},_renderTextStroke:function(e,n){if(this.stroke&&0!==this.strokeWidth||this._skipFillStrokeCheck){var f=0;e.save(),this.strokeDashArray&&(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),i&&e.setLineDash(this.strokeDashArray)),e.beginPath();for(var o=0,d=n.length;d>o;o++){var t=this._getHeightOfLine(e,o,n);f+=t,this._renderTextLine("strokeText",e,n[o],this._getLeftOffset(),this._getTopOffset()+f,o)}e.closePath(),e.restore()}},_getHeightOfLine:function(){return this.fontSize*this.lineHeight},_renderTextBackground:function(e,n){this._renderTextBoxBackground(e),this._renderTextLinesBackground(e,n)},_renderTextBoxBackground:function(e){this.backgroundColor&&(e.save(),e.fillStyle=this.backgroundColor,e.fillRect(this._getLeftOffset(),this._getTopOffset(),this.width,this.height),e.restore())},_renderTextLinesBackground:function(e,n){if(this.textBackgroundColor){e.save(),e.fillStyle=this.textBackgroundColor;for(var f=0,o=n.length;o>f;f++)if(""!==n[f]){var d=this._getLineWidth(e,n[f]),i=this._getLineLeftOffset(d);e.fillRect(this._getLeftOffset()+i,this._getTopOffset()+f*this.fontSize*this.lineHeight,d,this.fontSize*this.lineHeight)}e.restore()}},_getLineLeftOffset:function(e){return"center"===this.textAlign?(this.width-e)/2:"right"===this.textAlign?this.width-e:0},_getLineWidth:function(e,n){return"justify"===this.textAlign?this.width:e.measureText(n).width},_renderTextDecoration:function(e,n){function f(f){for(var i=0,t=n.length;t>i;i++){var l=d._getLineWidth(e,n[i]),s=d._getLineLeftOffset(l);e.fillRect(d._getLeftOffset()+s,~~(f+i*d._getHeightOfLine(e,i,n)-o),l,1)}}if(this.textDecoration){var o=this._getTextHeight(e,n)/2,d=this;this.textDecoration.indexOf("underline")>-1&&f(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&f(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&f(this.fontSize*this.lineHeight-this.fontSize)}},_getFontDeclaration:function(){return[n.isLikelyNode?this.fontWeight:this.fontStyle,n.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",n.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,n){if(this.visible){e.save(),this._transform(e,n);var f=this.transformMatrix,o=this.group&&"path-group"===this.group.type;o&&e.translate(-this.group.width/2,-this.group.height/2),f&&e.transform(f[0],f[1],f[2],f[3],f[4],f[5]),o&&e.translate(this.left,this.top),this._render(e),e.restore()}},toObject:function(e){var n=f(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(n),n},toSVG:function(e){var n=[],f=this.text.split(this._reNewline),o=this._getSVGLeftTopOffsets(f),d=this._getSVGTextAndBg(o.lineTop,o.textLeft,f),i=this._getSVGShadows(o.lineTop,f);return o.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(n,d,i,o),e?e(n.join("")):n.join("")},_getSVGLeftTopOffsets:function(e){var n=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,f=-(this.width/2),o=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:f+(this.group&&"path-group"===this.group.type?this.left:0),textTop:o+(this.group&&"path-group"===this.group.type?this.top:0),lineTop:n}},_wrapSVGTextAndBg:function(e,n,f,o){e.push('\n',n.textBgRects.join(""),"',f.join(""),n.textSpans.join(""),"\n","\n")},_getSVGShadows:function(e,f){var o,i,t=[],l=1;if(!this.shadow||!this._boundaries)return t;for(o=0,i=f.length;i>o;o++)if(""!==f[o]){var s=this._boundaries&&this._boundaries[o]?this._boundaries[o].left:0;t.push('",n.util.string.escapeXml(f[o]),""),l=1}else l++;return t},_getSVGTextAndBg:function(e,n,f){var o=[],d=[],i=1;this._setSVGBg(d);for(var t=0,l=f.length;l>t;t++)""!==f[t]?(this._setSVGTextLineText(f[t],t,o,e,i,d),i=1):i++,this.textBackgroundColor&&this._boundaries&&this._setSVGTextLineBg(d,t,n,e);return{textSpans:o,textBgRects:d}},_setSVGTextLineText:function(e,f,o,i,t){var l=this._boundaries&&this._boundaries[f]?d(this._boundaries[f].left,2):0;o.push('",n.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,n,f,o){e.push("\n')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var f=e&&"string"==typeof e?new n.Color(e):"";return f&&f.getSource()&&1!==f.getAlpha()?'opacity="'+f.getAlpha()+'" fill="'+f.setAlpha(1).toRgb()+'"':'fill="'+e+'"'},_set:function(e,n){"fontFamily"===e&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+n+"$3")),this.callSuper("_set",e,n),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),n.Text.ATTRIBUTE_NAMES=n.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),n.Text.DEFAULT_SVG_FONT_SIZE=16,n.Text.fromElement=function(e,f){if(!e)return null;var o=n.parseAttributes(e,n.Text.ATTRIBUTE_NAMES);f=n.util.object.extend(f?n.util.object.clone(f):{},o),"dx"in o&&(f.left+=o.dx),"dy"in o&&(f.top+=o.dy),"fontSize"in f||(f.fontSize=n.Text.DEFAULT_SVG_FONT_SIZE),f.originX||(f.originX="left");var d=new n.Text(e.textContent,f),i=0;return"left"===d.originX&&(i=d.getWidth()/2),"right"===d.originX&&(i=-d.getWidth()/2),d.set({left:d.getLeft()+i,top:d.getTop()-d.getHeight()/2}),d},n.Text.fromObject=function(e){return new n.Text(e.text,o(e))},n.util.createAccessors(n.Text)}("undefined"!=typeof exports?exports:this)}).call(this,_dereq_("buffer").Buffer)},{buffer:2,canvas:1,jsdom:1}]},{},[6])(6)}); \ No newline at end of file From 4f48bc9b0c2f475639be917d08cd2583e670ed25 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 1 Aug 2017 18:32:37 +0800 Subject: [PATCH 007/377] Define browser build target as umd --- webpack.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 0c5b7d414..f4e4b7180 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,7 +4,8 @@ module.exports = { entry: './src/index.js', output: { filename: './dist/html2canvas.js', - library: 'html2canvas' + library: 'html2canvas', + libraryTarget: 'umd' }, module: { loaders: [{ From 7a3bad2fcb7362f67d551b7eabe72e63a4baa312 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 1 Aug 2017 18:51:59 +0800 Subject: [PATCH 008/377] Add missing Flow tags --- .eslintrc | 7 +++++++ package.json | 3 ++- src/BezierCurve.js | 2 ++ src/Feature.js | 4 ++++ src/Logger.js | 1 + src/index.js | 1 - 6 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.eslintrc b/.eslintrc index 024de94a0..468af0381 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,9 +1,16 @@ { "parser": "babel-eslint", "plugins": [ + "flowtype", "prettier" ], "rules": { + "flowtype/boolean-style": [ + 2, + "boolean" + ], + "flowtype/no-weak-types": 2, + "flowtype/delimiter-dangle": 2, "prettier/prettier": ["error", { "singleQuote": true, "bracketSpacing": false, diff --git a/package.json b/package.json index 4b1f543b3..b815494f2 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,8 @@ "babel-preset-flow": "6.23.0", "base64-arraybuffer": "0.1.5", "eslint": "4.2.0", - "eslint-plugin-prettier": "^2.1.2", + "eslint-plugin-flowtype": "2.35.0", + "eslint-plugin-prettier": "2.1.2", "flow-bin": "0.50.0", "prettier": "1.5.3", "rimraf": "2.6.1", diff --git a/src/BezierCurve.js b/src/BezierCurve.js index 458125d81..c7ec69a39 100644 --- a/src/BezierCurve.js +++ b/src/BezierCurve.js @@ -1,3 +1,5 @@ +/* @flow */ +'use strict'; import Vector from './Vector'; export default class BezierCurve { diff --git a/src/Feature.js b/src/Feature.js index b85a36b3b..b4af35f3f 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -1,3 +1,6 @@ +/* @flow */ +'use strict'; + const testRangeBounds = document => { const TEST_HEIGHT = 123; @@ -23,6 +26,7 @@ const testRangeBounds = document => { }; const FEATURES = { + // $FlowFixMe - get/set properties not yet supported get SUPPORT_RANGE_BOUNDS() { 'use strict'; const value = testRangeBounds(document); diff --git a/src/Logger.js b/src/Logger.js index 18d48a731..f75d60c8f 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -8,6 +8,7 @@ export default class Logger { this.start = Date.now(); } + // eslint-disable-next-line flowtype/no-weak-types log(...args: any) { Function.prototype.bind .call(window.console.log, window.console) diff --git a/src/index.js b/src/index.js index 9f2ed23bd..314a4a9ce 100644 --- a/src/index.js +++ b/src/index.js @@ -10,7 +10,6 @@ import Color from './Color'; export type Options = { async: boolean, imageTimeout: number, - renderer: Function, proxy: string, canvas: HTMLCanvasElement, allowTaint: true From 478155af64b1af46dff547a0f90d2b06cd7baed2 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 1 Aug 2017 20:54:18 +0800 Subject: [PATCH 009/377] Clone document before parsing it --- src/Bounds.js | 6 +- src/Clone.js | 160 +++++++++++++++++++++++++++++++++++++++++++ src/NodeContainer.js | 6 +- src/NodeParser.js | 18 +++-- src/index.js | 82 +++++++++++++++------- 5 files changed, 233 insertions(+), 39 deletions(-) create mode 100644 src/Clone.js diff --git a/src/Bounds.js b/src/Bounds.js index 5bab812d3..25f81e2b4 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -49,10 +49,8 @@ export const parseBounds = (node: HTMLElement, isTransformed: boolean): Bounds = }; const offsetBounds = (node: HTMLElement): Bounds => { - const parent = - node.offsetParent instanceof HTMLElement - ? offsetBounds(node.offsetParent) - : {top: 0, left: 0}; + // //$FlowFixMe + const parent = node.offsetParent ? offsetBounds(node.offsetParent) : {top: 0, left: 0}; return new Bounds( node.offsetLeft + parent.left, diff --git a/src/Clone.js b/src/Clone.js new file mode 100644 index 000000000..1d0d3d8e7 --- /dev/null +++ b/src/Clone.js @@ -0,0 +1,160 @@ +/* @flow */ +'use strict'; +import type {Bounds} from './Bounds'; +import type {Options} from './index'; + +const restoreOwnerScroll = (ownerDocument: Document, x: number, y: number) => { + if ( + ownerDocument.defaultView && + (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset) + ) { + ownerDocument.defaultView.scrollTo(x, y); + } +}; + +const cloneCanvasContents = (canvas: HTMLCanvasElement, clonedCanvas: HTMLCanvasElement) => { + try { + if (clonedCanvas) { + clonedCanvas.width = canvas.width; + clonedCanvas.height = canvas.height; + clonedCanvas + .getContext('2d') + .putImageData( + canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height), + 0, + 0 + ); + } + } catch (e) {} +}; + +const cloneNode = ( + node: Node, + referenceElement: [HTMLElement, ?HTMLElement], + scrolledElements: Array<[HTMLElement, number, number]> +) => { + const clone = + node.nodeType === Node.TEXT_NODE + ? document.createTextNode(node.nodeValue) + : node.cloneNode(false); + + if (referenceElement[0] === node && clone instanceof HTMLElement) { + referenceElement[1] = clone; + } + + for (let child = node.firstChild; child; child = child.nextSibling) { + if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') { + clone.appendChild(cloneNode(child, referenceElement, scrolledElements)); + } + } + + if (node instanceof HTMLElement) { + if (node.scrollTop !== 0 || node.scrollLeft !== 0) { + scrolledElements.push([node, node.scrollLeft, node.scrollTop]); + } + switch (node.nodeName) { + case 'CANVAS': + // $FlowFixMe + cloneCanvasContents(node, clone); + break; + case 'TEXTAREA': + case 'SELECT': + // $FlowFixMe + clone.value = node.value; + break; + } + } + + return clone; +}; + +const initNode = ([element, x, y]: [HTMLElement, number, number]) => { + element.scrollLeft = x; + element.scrollTop = y; +}; + +export const cloneWindow = ( + documentToBeCloned: Document, + ownerDocument: Document, + bounds: Bounds, + referenceElement: HTMLElement, + options: Options +): Promise<[HTMLIFrameElement, HTMLElement]> => { + const scrolledElements = []; + const referenceElementSearch = [referenceElement, null]; + if (!(documentToBeCloned.documentElement instanceof HTMLElement)) { + return Promise.reject(__DEV__ ? `Invalid document provided for cloning` : ''); + } + + const documentElement = cloneNode( + documentToBeCloned.documentElement, + referenceElementSearch, + scrolledElements + ); + + const cloneIframeContainer = ownerDocument.createElement('iframe'); + + cloneIframeContainer.className = 'html2canvas-container'; + cloneIframeContainer.style.visibility = 'hidden'; + cloneIframeContainer.style.position = 'fixed'; + cloneIframeContainer.style.left = '-10000px'; + cloneIframeContainer.style.top = '0px'; + cloneIframeContainer.style.border = '0'; + cloneIframeContainer.width = bounds.width.toString(); + cloneIframeContainer.height = bounds.height.toString(); + cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it + if (ownerDocument.body) { + ownerDocument.body.appendChild(cloneIframeContainer); + } else { + return Promise.reject( + __DEV__ ? `Body element not found in Document that is getting rendered` : '' + ); + } + return new Promise((resolve, reject) => { + const documentClone = cloneIframeContainer.contentWindow.document; + + /* Chrome doesn't detect relative background-images assigned in inline + Overflow tests + + + + + + + +
+

Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un peintre anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.

+
+
+
+ + + diff --git a/tests/cases/overflow.html b/tests/cases/overflow/overflow.html similarity index 59% rename from tests/cases/overflow.html rename to tests/cases/overflow/overflow.html index db6f08623..44716976c 100644 --- a/tests/cases/overflow.html +++ b/tests/cases/overflow/overflow.html @@ -3,7 +3,7 @@ Overflow tests - + + + Visible elements tests + + + - - -

Display:none and visible:hidden tests

-
This should be visible
-
display:none, This should be hidden
-
visibility:hidden, This should be hidden
-
-
display:none, This should be hidden
-
visibility:hidden, This should be hidden
+ + +
+

Display:none and visible:hidden tests

+
This should be visible
+
display:none, This should be hidden
+
visibility:hidden, This should be hidden
+
+
display:none, This should be hidden
+
visibility:hidden, This should be hidden
+
- + + From fe97851988d4b2724504f510147a9932af74fd8f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 20:57:55 +0800 Subject: [PATCH 017/377] Implement HTMLCanvasElement rendering --- src/CanvasRenderer.js | 4 ++-- src/ImageLoader.js | 18 +++++++++++++----- src/NodeContainer.js | 17 ++++++++++++++--- src/parsing/background.js | 4 ++-- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js index 3f613185a..1b6d890b8 100644 --- a/src/CanvasRenderer.js +++ b/src/CanvasRenderer.js @@ -12,7 +12,7 @@ import BezierCurve from './BezierCurve'; import type NodeContainer from './NodeContainer'; import type TextContainer from './TextContainer'; -import type {ImageStore} from './ImageLoader'; +import type {ImageStore, ImageElement} from './ImageLoader'; import type StackingContext from './StackingContext'; import { @@ -192,7 +192,7 @@ export default class CanvasRenderer { } } - resizeImage(image: HTMLImageElement, size: Size) { + resizeImage(image: ImageElement, size: Size) { if (image.width === size.width && image.height === size.height) { return image; } diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 2d844e2e4..e4c4e9c99 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -1,11 +1,11 @@ /* @flow */ 'use strict'; -import type NodeContainer from './NodeContainer'; import type Options from './index'; import type Logger from './Logger'; -type ImageCache = {[string]: Promise}; +export type ImageElement = Image | HTMLCanvasElement; +type ImageCache = {[string]: Promise}; export default class ImageLoader { origin: string; @@ -13,12 +13,14 @@ export default class ImageLoader { _link: HTMLAnchorElement; cache: ImageCache; logger: Logger; + _index: number; constructor(options: Options, logger: Logger) { this.options = options; this.origin = this.getOrigin(window.location.href); this.cache = {}; this.logger = logger; + this._index = 0; } loadImage(src: string): ?string { @@ -33,6 +35,12 @@ export default class ImageLoader { } } + loadCanvas(node: HTMLCanvasElement): string { + const key = String(this._index++); + this.cache[key] = Promise.resolve(node); + return key; + } + isInlineImage(src: string): boolean { return /data:image\/.*;base64,/i.test(src); } @@ -86,14 +94,14 @@ export default class ImageLoader { export class ImageStore { _keys: Array; - _images: Array; + _images: Array; - constructor(keys: Array, images: Array) { + constructor(keys: Array, images: Array) { this._keys = keys; this._images = images; } - get(key: string): ?HTMLImageElement { + get(key: string): ?ImageElement { const index = this._keys.indexOf(key); return index === -1 ? null : this._images[index]; } diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 62984d6ca..a38edfd88 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -102,9 +102,7 @@ export default class NodeContainer { node.style.transform = 'matrix(1,0,0,1,0,0)'; } - this.image = - // $FlowFixMe - node.tagName === 'IMG' ? imageLoader.loadImage(node.currentSrc || node.src) : null; + this.image = getImage(node, imageLoader); this.bounds = parseBounds(node); this.curvedBounds = parseBoundCurves( this.bounds, @@ -172,3 +170,16 @@ export default class NodeContainer { ); } } + +const getImage = (node: HTMLElement, imageLoader: ImageLoader): ?string => { + switch (node.tagName) { + case 'IMG': + // $FlowFixMe + return imageLoader.loadImage(node.currentSrc || node.src); + case 'CANVAS': + // $FlowFixMe + return imageLoader.loadCanvas(node); + } + + return null; +}; diff --git a/src/parsing/background.js b/src/parsing/background.js index 64b964fef..4a70a0323 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -2,7 +2,7 @@ 'use strict'; import type {Bounds, BoundCurves, Path} from '../Bounds'; -import type ImageLoader from '../ImageLoader'; +import type ImageLoader, {ImageElement} from '../ImageLoader'; import Color from '../Color'; import Length from '../Length'; @@ -82,7 +82,7 @@ class BackgroundSize { export const calculateBackgroundSize = ( backgroundImage: BackgroundImage, - image: HTMLImageElement, + image: ImageElement, bounds: Bounds ): Size => { let width = 0; From ad1119a76c743e241bbc13e14c17cf0cc639dce4 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 21:05:17 +0800 Subject: [PATCH 018/377] Apply border radius correctly on image elements --- src/CanvasRenderer.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js index 1b6d890b8..82124b212 100644 --- a/src/CanvasRenderer.js +++ b/src/CanvasRenderer.js @@ -88,7 +88,9 @@ export default class CanvasRenderer { ); const width = typeof image.width === 'number' ? image.width : contentBox.width; const height = typeof image.height === 'number' ? image.height : contentBox.height; - + this.ctx.save(); + this.path(calculatePaddingBoxPath(container.curvedBounds)); + this.ctx.clip(); this.ctx.drawImage( image, 0, @@ -100,6 +102,7 @@ export default class CanvasRenderer { contentBox.width, contentBox.height ); + this.ctx.restore(); } } From f6a5153d99c8938e2793df54a11b0eabfdbf7b46 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 21:47:35 +0800 Subject: [PATCH 019/377] Implement support for multiple text-transforms with independent colors --- src/CanvasRenderer.js | 54 +++++++++++++++- src/Font.js | 72 +++++++++++++++++++++ src/index.js | 16 +++-- tests/cases/{ => text}/child-textnodes.html | 2 +- tests/cases/text/multiple.html | 50 ++++++++++++++ 5 files changed, 184 insertions(+), 10 deletions(-) create mode 100644 src/Font.js rename tests/cases/{ => text}/child-textnodes.html (88%) create mode 100644 tests/cases/text/multiple.html diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js index 82124b212..6d6284a28 100644 --- a/src/CanvasRenderer.js +++ b/src/CanvasRenderer.js @@ -23,6 +23,7 @@ import { calculateBackgroundSize } from './parsing/background'; import {BORDER_STYLE} from './parsing/border'; +import {TEXT_DECORATION_LINE} from './parsing/textDecoration'; import { parsePathForBorder, calculateContentBox, @@ -30,10 +31,13 @@ import { calculatePaddingBoxPath } from './Bounds'; +import {FontMetrics} from './Font'; + export type RenderOptions = { scale: number, backgroundColor: ?Color, - imageStore: ImageStore + imageStore: ImageStore, + fontMetrics: FontMetrics }; export default class CanvasRenderer { @@ -142,11 +146,55 @@ export default class CanvasRenderer { } renderTextNode(textContainer: TextContainer) { - textContainer.bounds.forEach(this.renderText, this); + textContainer.bounds.forEach(text => this.renderText(text, textContainer)); } - renderText(text: TextBounds) { + renderText(text: TextBounds, textContainer: TextContainer) { + const container = textContainer.parent; + this.ctx.fillStyle = container.style.color.toString(); this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); + const textDecoration = container.style.textDecoration; + if (textDecoration) { + textDecoration.textDecorationLine.forEach(textDecorationLine => { + switch (textDecorationLine) { + case TEXT_DECORATION_LINE.UNDERLINE: + // Draws a line at the baseline of the font + // TODO As some browsers display the line as more than 1px if the font-size is big, + // need to take that into account both in position and size + const {baseline} = this.options.fontMetrics.getMetrics( + container.style.font + ); + this.rectangle( + text.bounds.left, + Math.round(text.bounds.top + baseline), + text.bounds.width, + 1, + textDecoration.textDecorationColor || container.style.color + ); + break; + case TEXT_DECORATION_LINE.OVERLINE: + this.rectangle( + text.bounds.left, + Math.round(text.bounds.top), + text.bounds.width, + 1, + textDecoration.textDecorationColor || container.style.color + ); + break; + case TEXT_DECORATION_LINE.LINE_THROUGH: + // TODO try and find exact position for line-through + const {middle} = this.options.fontMetrics.getMetrics(container.style.font); + this.rectangle( + text.bounds.left, + Math.ceil(text.bounds.top + middle), + text.bounds.width, + 1, + textDecoration.textDecorationColor || container.style.color + ); + break; + } + }); + } } renderBackgroundImage(container: NodeContainer) { diff --git a/src/Font.js b/src/Font.js new file mode 100644 index 000000000..595adaca4 --- /dev/null +++ b/src/Font.js @@ -0,0 +1,72 @@ +/* @flow */ +'use strict'; + +import type {Font} from './parsing/font'; + +const SAMPLE_TEXT = 'Hidden Text'; +const SMALL_IMAGE = + 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; + +export class FontMetrics { + _data: {}; + _document: Document; + + constructor(document: Document) { + this._data = {}; + this._document = document; + } + _parseMetrics(font: Font) { + const container = this._document.createElement('div'); + const img = this._document.createElement('img'); + const span = this._document.createElement('span'); + + const body = this._document.body; + if (!body) { + throw new Error(__DEV__ ? 'No document found for font metrics' : ''); + } + + container.style.visibility = 'hidden'; + container.style.fontFamily = font.fontFamily; + container.style.fontSize = font.fontSize; + container.style.margin = '0'; + container.style.padding = '0'; + + body.appendChild(container); + + img.src = SMALL_IMAGE; + img.width = 1; + img.height = 1; + + img.style.margin = '0'; + img.style.padding = '0'; + img.style.verticalAlign = 'baseline'; + + span.style.fontFamily = font.fontFamily; + span.style.fontSize = font.fontSize; + span.style.margin = '0'; + span.style.padding = '0'; + + span.appendChild(this._document.createTextNode(SAMPLE_TEXT)); + container.appendChild(span); + container.appendChild(img); + const baseline = img.offsetTop - span.offsetTop + 2; + + container.removeChild(span); + container.appendChild(this._document.createTextNode(SAMPLE_TEXT)); + + container.style.lineHeight = 'normal'; + img.style.verticalAlign = 'super'; + + const middle = img.offsetTop - container.offsetTop + 2; + + body.removeChild(container); + + return {baseline, middle}; + } + getMetrics(font: Font) { + if (this._data[`${font.fontFamily} ${font.fontSize}`] === undefined) { + this._data[`${font.fontFamily} ${font.fontSize}`] = this._parseMetrics(font); + } + return this._data[`${font.fontFamily} ${font.fontSize}`]; + } +} diff --git a/src/index.js b/src/index.js index d423cbbfe..a5946534a 100644 --- a/src/index.js +++ b/src/index.js @@ -8,6 +8,7 @@ import ImageLoader from './ImageLoader'; import {Bounds, parseDocumentSize} from './Bounds'; import {cloneWindow} from './Clone'; import Color from './Color'; +import {FontMetrics} from './Font'; export type Options = { async: ?boolean, @@ -62,8 +63,8 @@ const html2canvas = (element: HTMLElement, config: Options): Promise Inline text in the top element - + + + + + Creating content through JavaScript + + From 959b75a441e930eb2544a28551b6153953b43baa Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 22:03:05 +0800 Subject: [PATCH 020/377] Update travis build --- .travis.yml | 5 ++++- package.json | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1f576e28a..a9b2644c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: -- '4.0' +- '7' env: global: - secure: eW41gIqOizwO4pTgWnAAbW75AP7F+CK9qfSed/fSh4sJ9HWMIY1YRIaY8gjr+6jV/f7XVHcXuym6ZxgINYSkVKbF1JKxBJNLOXtSgNbVHSic58pYFvUjwxIBI9aPig9uux1+DbnpWqXFDTcACJSevQZE0xwmjdrSkDLgB0G34v8= @@ -15,6 +15,9 @@ notifications: on_success: always on_failure: always on_start: false +script: + - npm run build + - npm test deploy: - provider: npm email: niklasvh@gmail.com diff --git a/package.json b/package.json index a871c4a99..a049ea51e 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,8 @@ "webpack": "3.4.1" }, "scripts": { - "build": "rimraf dist/ && babel src/ -d dist/npm/", + "build": "rimraf dist/ && npm run build:npm && npm run build:browser", + "build:npm": "babel src/ -d dist/npm/", "build:browser": "webpack", "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"src/**/*.js\"", "flow": "flow", From b3db7354150c6c16731de1e476f4e0482d2a1d30 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 23:46:29 +0800 Subject: [PATCH 021/377] Render :before and :after pseudoelements --- src/NodeParser.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/NodeParser.js b/src/NodeParser.js index 6e23be08d..a037a8f11 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -14,6 +14,8 @@ export const NodeParser = ( const container = new NodeContainer(node, null, imageLoader); const stack = new StackingContext(container, null, true); + createPseudoHideStyles(node.ownerDocument); + if (__DEV__) { logger.log(`Starting node parsing`); } @@ -28,6 +30,11 @@ export const NodeParser = ( }; const IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION']; +const URL_REGEXP = /^url\((.+)\)$/i; +const PSEUDO_BEFORE = ':before'; +const PSEUDO_AFTER = ':after'; +const PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before'; +const PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after'; const parseNodeTree = ( node: HTMLElement, @@ -46,7 +53,10 @@ const parseNodeTree = ( } else if (childNode.nodeType === Node.ELEMENT_NODE) { if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { const childElement = flowRefineToHTMLElement(childNode); + inlinePseudoElement(childElement, PSEUDO_BEFORE); + inlinePseudoElement(childElement, PSEUDO_AFTER); const container = new NodeContainer(childElement, parent, imageLoader); + if (container.isVisible()) { const treatAsRealStackingContext = createsRealStackingContext( container, @@ -76,6 +86,43 @@ const parseNodeTree = ( } }; +const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after'): void => { + const style = node.ownerDocument.defaultView.getComputedStyle(node, pseudoElt); + if ( + !style || + !style.content || + style.content === 'none' || + style.content === '-moz-alt-content' || + style.display === 'none' + ) { + return; + } + + const content = stripQuotes(style.content); + const image = content.match(URL_REGEXP); + const anonymousReplacedElement = node.ownerDocument.createElement( + image ? 'img' : 'html2canvaspseudoelement' + ); + if (image) { + // $FlowFixMe + anonymousReplacedElement.src = image[1]; + } else { + anonymousReplacedElement.appendChild(node.ownerDocument.createTextNode(content)); + } + + anonymousReplacedElement.style = style.cssText; + anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; + node.className += + pseudoElt === PSEUDO_BEFORE + ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}` + : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; + if (pseudoElt === PSEUDO_BEFORE) { + node.insertBefore(anonymousReplacedElement, node.firstChild); + } else { + node.appendChild(anonymousReplacedElement); + } +}; + const createsRealStackingContext = (container: NodeContainer, node: HTMLElement): boolean => { return ( container.isRootElement() || @@ -100,3 +147,31 @@ const isBodyWithTransparentRoot = (container: NodeContainer, node: HTMLElement): //$FlowFixMe const flowRefineToHTMLElement = (node: Node): HTMLElement => node; + +const stripQuotes = (content: string): string => { + const first = content.substr(0, 1); + return first === content.substr(content.length - 1) && first.match(/['"]/) + ? content.substr(1, content.length - 2) + : content; +}; + +const PSEUDO_HIDE_ELEMENT_STYLE = `{ + content: "" !important; + display: none !important; +}`; + +const createPseudoHideStyles = (document: Document) => { + createStyles( + document, + `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE} + .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}` + ); +}; + +const createStyles = (document: Document, styles) => { + const style = document.createElement('style'); + style.innerHTML = styles; + if (document.body) { + document.body.appendChild(style); + } +}; From b8450f4d4a56bbe66db953375fd2bc3b91447ed6 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 23:54:23 +0800 Subject: [PATCH 022/377] Allow image loads to fail without crashing render --- src/ImageLoader.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index e4c4e9c99..735562372 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -83,7 +83,11 @@ export default class ImageLoader { ready(): Promise { const keys = Object.keys(this.cache); - return Promise.all(keys.map(str => this.cache[str])).then(images => { + return Promise.all(keys.map(str => this.cache[str].catch(e => { + if (__DEV__) { + this.logger.log(`Unable to load image`, e); + } + }))).then(images => { if (__DEV__) { this.logger.log('Finished loading images', images); } From 96fbe954e9f39fcc3806cdafb509b177c0f43c77 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 3 Aug 2017 23:54:44 +0800 Subject: [PATCH 023/377] Correctly strip quotes from pseudoelement url() --- src/NodeParser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NodeParser.js b/src/NodeParser.js index a037a8f11..ccf1ba640 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -105,7 +105,7 @@ const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after') ); if (image) { // $FlowFixMe - anonymousReplacedElement.src = image[1]; + anonymousReplacedElement.src = stripQuotes(image[1]); } else { anonymousReplacedElement.appendChild(node.ownerDocument.createTextNode(content)); } From 9a7075252b087c367c6cf0a47606ffbcc90ad49a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 4 Aug 2017 00:00:02 +0800 Subject: [PATCH 024/377] Fix ImageLoader flow types to reflect possible error'd images --- src/ImageLoader.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 735562372..d7dd70669 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -5,7 +5,7 @@ import type Options from './index'; import type Logger from './Logger'; export type ImageElement = Image | HTMLCanvasElement; -type ImageCache = {[string]: Promise}; +type ImageCache = {[string]: Promise}; export default class ImageLoader { origin: string; @@ -57,11 +57,6 @@ export default class ImageLoader { const img = new Image(); img.onload = () => resolve(img); img.onerror = reject; - /* - if (cors) { - img.crossOrigin = 'anonymous'; - } - */ img.src = src; if (img.complete === true) { resolve(img); @@ -83,11 +78,16 @@ export default class ImageLoader { ready(): Promise { const keys = Object.keys(this.cache); - return Promise.all(keys.map(str => this.cache[str].catch(e => { - if (__DEV__) { - this.logger.log(`Unable to load image`, e); - } - }))).then(images => { + return Promise.all( + keys.map(str => + this.cache[str].catch(e => { + if (__DEV__) { + this.logger.log(`Unable to load image`, e); + } + return null; + }) + ) + ).then(images => { if (__DEV__) { this.logger.log('Finished loading images', images); } @@ -98,9 +98,9 @@ export default class ImageLoader { export class ImageStore { _keys: Array; - _images: Array; + _images: Array; - constructor(keys: Array, images: Array) { + constructor(keys: Array, images: Array) { this._keys = keys; this._images = images; } From 3977ebeadd1830f7dbfac8a5866263e2c3a94dbf Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 4 Aug 2017 00:13:20 +0800 Subject: [PATCH 025/377] Log errors in __DEV__ mode (Fix #905) --- src/Logger.js | 10 ++++++++++ src/index.js | 10 +++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Logger.js b/src/Logger.js index f75d60c8f..e91288345 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -17,4 +17,14 @@ export default class Logger { [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) ); } + + // eslint-disable-next-line flowtype/no-weak-types + error(...args: any) { + Function.prototype.bind + .call(window.console.error, window.console) + .apply( + window.console, + [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) + ); + } } diff --git a/src/index.js b/src/index.js index a5946534a..8af8bc320 100644 --- a/src/index.js +++ b/src/index.js @@ -51,7 +51,7 @@ const html2canvas = (element: HTMLElement, config: Options): Promise { + logger.error(e); + throw e; + }); + } + return result; }; module.exports = html2canvas; From e380e2c873209f19f50176e440e2672705d89182 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 4 Aug 2017 19:27:35 +0800 Subject: [PATCH 026/377] Use correct JS context to enable use of instanceof --- src/NodeParser.js | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/NodeParser.js b/src/NodeParser.js index ccf1ba640..45efb700e 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -44,23 +44,21 @@ const parseNodeTree = ( ): void => { for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; - if (childNode.nodeType === Node.TEXT_NODE) { - //$FlowFixMe + const defaultView = childNode.ownerDocument.defaultView; + if (childNode instanceof defaultView.Text) { if (childNode.data.trim().length > 0) { - //$FlowFixMe parent.textNodes.push(new TextContainer(childNode, parent)); } - } else if (childNode.nodeType === Node.ELEMENT_NODE) { + } else if (childNode instanceof defaultView.HTMLElement) { if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { - const childElement = flowRefineToHTMLElement(childNode); - inlinePseudoElement(childElement, PSEUDO_BEFORE); - inlinePseudoElement(childElement, PSEUDO_AFTER); - const container = new NodeContainer(childElement, parent, imageLoader); + inlinePseudoElement(childNode, PSEUDO_BEFORE); + inlinePseudoElement(childNode, PSEUDO_AFTER); + const container = new NodeContainer(childNode, parent, imageLoader); if (container.isVisible()) { const treatAsRealStackingContext = createsRealStackingContext( container, - childElement + childNode ); if (treatAsRealStackingContext || createsStackingContext(container)) { // for treatAsRealStackingContext:false, any positioned descendants and descendants @@ -75,10 +73,10 @@ const parseNodeTree = ( treatAsRealStackingContext ); parentStack.contexts.push(childStack); - parseNodeTree(childElement, container, childStack, imageLoader); + parseNodeTree(childNode, container, childStack, imageLoader); } else { stack.children.push(container); - parseNodeTree(childElement, container, stack, imageLoader); + parseNodeTree(childNode, container, stack, imageLoader); } } } @@ -145,9 +143,6 @@ const isBodyWithTransparentRoot = (container: NodeContainer, node: HTMLElement): ); }; -//$FlowFixMe -const flowRefineToHTMLElement = (node: Node): HTMLElement => node; - const stripQuotes = (content: string): string => { const first = content.substr(0, 1); return first === content.substr(content.length - 1) && first.match(/['"]/) From adb1f50f0047d6590d768736b9a609e3f37dd599 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 4 Aug 2017 20:41:36 +0800 Subject: [PATCH 027/377] Support percentage border-radius values (Fix #1154) --- src/Bounds.js | 33 ++++++++++++++++----------------- src/parsing/borderRadius.js | 2 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/Bounds.js b/src/Bounds.js index cb44b975a..c492fb2c8 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -194,40 +194,39 @@ export const parseBoundCurves = ( borders: Array, borderRadius: Array ): BoundCurves => { - // TODO support percentage borderRadius const HALF_WIDTH = bounds.width / 2; const HALF_HEIGHT = bounds.height / 2; const tlh = - borderRadius[CORNER.TOP_LEFT][H].value < HALF_WIDTH - ? borderRadius[CORNER.TOP_LEFT][H].value + borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width) < HALF_WIDTH + ? borderRadius[CORNER.TOP_LEFT][H].getAbsoluteValue(bounds.width) : HALF_WIDTH; const tlv = - borderRadius[CORNER.TOP_LEFT][V].value < HALF_HEIGHT - ? borderRadius[CORNER.TOP_LEFT][V].value + borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height) < HALF_HEIGHT + ? borderRadius[CORNER.TOP_LEFT][V].getAbsoluteValue(bounds.height) : HALF_HEIGHT; const trh = - borderRadius[CORNER.TOP_RIGHT][H].value < HALF_WIDTH - ? borderRadius[CORNER.TOP_RIGHT][H].value + borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width) < HALF_WIDTH + ? borderRadius[CORNER.TOP_RIGHT][H].getAbsoluteValue(bounds.width) : HALF_WIDTH; const trv = - borderRadius[CORNER.TOP_RIGHT][V].value < HALF_HEIGHT - ? borderRadius[CORNER.TOP_RIGHT][V].value + borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height) < HALF_HEIGHT + ? borderRadius[CORNER.TOP_RIGHT][V].getAbsoluteValue(bounds.height) : HALF_HEIGHT; const brh = - borderRadius[CORNER.BOTTOM_RIGHT][H].value < HALF_WIDTH - ? borderRadius[CORNER.BOTTOM_RIGHT][H].value + borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width) < HALF_WIDTH + ? borderRadius[CORNER.BOTTOM_RIGHT][H].getAbsoluteValue(bounds.width) : HALF_WIDTH; const brv = - borderRadius[CORNER.BOTTOM_RIGHT][V].value < HALF_HEIGHT - ? borderRadius[CORNER.BOTTOM_RIGHT][V].value + borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height) < HALF_HEIGHT + ? borderRadius[CORNER.BOTTOM_RIGHT][V].getAbsoluteValue(bounds.height) : HALF_HEIGHT; const blh = - borderRadius[CORNER.BOTTOM_LEFT][H].value < HALF_WIDTH - ? borderRadius[CORNER.BOTTOM_LEFT][H].value + borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width) < HALF_WIDTH + ? borderRadius[CORNER.BOTTOM_LEFT][H].getAbsoluteValue(bounds.width) : HALF_WIDTH; const blv = - borderRadius[CORNER.BOTTOM_LEFT][V].value < HALF_HEIGHT - ? borderRadius[CORNER.BOTTOM_LEFT][V].value + borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height) < HALF_HEIGHT + ? borderRadius[CORNER.BOTTOM_LEFT][V].getAbsoluteValue(bounds.height) : HALF_HEIGHT; const topWidth = bounds.width - trh; diff --git a/src/parsing/borderRadius.js b/src/parsing/borderRadius.js index c01161419..6a03eb679 100644 --- a/src/parsing/borderRadius.js +++ b/src/parsing/borderRadius.js @@ -4,7 +4,7 @@ import Length from '../Length'; const SIDES = ['top-left', 'top-right', 'bottom-right', 'bottom-left']; -export type BorderRadius = Array; +export type BorderRadius = [Length, Length]; export const parseBorderRadius = (style: CSSStyleDeclaration): Array => { return SIDES.map(side => { From 56b3b6df271b9a3f0a6254f824ea97a1209aae49 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 5 Aug 2017 00:00:17 +0800 Subject: [PATCH 028/377] Implement input/textarea/select element rendering --- src/Bounds.js | 7 +- src/CanvasRenderer.js | 94 ++++++++++++++--------- src/Input.js | 128 +++++++++++++++++++++++++++++++ src/NodeContainer.js | 31 ++++++-- src/NodeParser.js | 23 ++++-- src/TextBounds.js | 18 ++--- src/TextContainer.js | 11 ++- src/{ => drawing}/BezierCurve.js | 0 src/drawing/Circle.js | 25 ++++++ src/{ => drawing}/Size.js | 0 src/{ => drawing}/Vector.js | 0 src/parsing/background.js | 4 +- 12 files changed, 275 insertions(+), 66 deletions(-) create mode 100644 src/Input.js rename src/{ => drawing}/BezierCurve.js (100%) create mode 100644 src/drawing/Circle.js rename src/{ => drawing}/Size.js (100%) rename src/{ => drawing}/Vector.js (100%) diff --git a/src/Bounds.js b/src/Bounds.js index c492fb2c8..80f49debc 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -4,11 +4,12 @@ import type {Border, BorderSide} from './parsing/border'; import type {BorderRadius} from './parsing/borderRadius'; import type {Padding} from './parsing/padding'; +import type Circle from './drawing/Circle'; -import Vector from './Vector'; -import BezierCurve from './BezierCurve'; +import Vector from './drawing/Vector'; +import BezierCurve from './drawing/BezierCurve'; -export type Path = Array; +export type Path = Array | Circle; const TOP = 0; const RIGHT = 1; diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js index 6d6284a28..e63bc8ecd 100644 --- a/src/CanvasRenderer.js +++ b/src/CanvasRenderer.js @@ -1,19 +1,30 @@ /* @flow */ 'use strict'; + import type Color from './Color'; -import type Size from './Size'; -import type {Path, BoundCurves} from './Bounds'; -import type {TextBounds} from './TextBounds'; +import type Size from './drawing/Size'; + import type {BackgroundImage} from './parsing/background'; import type {Border, BorderSide} from './parsing/border'; -import Vector from './Vector'; -import BezierCurve from './BezierCurve'; - -import type NodeContainer from './NodeContainer'; -import type TextContainer from './TextContainer'; +import type {Path, BoundCurves} from './Bounds'; import type {ImageStore, ImageElement} from './ImageLoader'; +import type NodeContainer from './NodeContainer'; import type StackingContext from './StackingContext'; +import type {TextBounds} from './TextBounds'; + +import BezierCurve from './drawing/BezierCurve'; +import Circle from './drawing/Circle'; +import Vector from './drawing/Vector'; + +import { + parsePathForBorder, + calculateContentBox, + calculatePaddingBox, + calculatePaddingBoxPath +} from './Bounds'; +import {FontMetrics} from './Font'; +import TextContainer from './TextContainer'; import { BACKGROUND_ORIGIN, @@ -24,14 +35,6 @@ import { } from './parsing/background'; import {BORDER_STYLE} from './parsing/border'; import {TEXT_DECORATION_LINE} from './parsing/textDecoration'; -import { - parsePathForBorder, - calculateContentBox, - calculatePaddingBox, - calculatePaddingBoxPath -} from './Bounds'; - -import {FontMetrics} from './Font'; export type RenderOptions = { scale: number, @@ -68,7 +71,7 @@ export default class CanvasRenderer { }); } - if (container.textNodes.length) { + if (container.childNodes.length) { this.ctx.fillStyle = container.style.color.toString(); this.ctx.font = [ container.style.font.fontStyle, @@ -79,7 +82,14 @@ export default class CanvasRenderer { ] .join(' ') .split(',')[0]; - container.textNodes.forEach(this.renderTextNode, this); + container.childNodes.forEach(child => { + if (child instanceof TextContainer) { + this.renderTextNode(child); + } else { + this.path(child); + this.ctx.fill(); + } + }); } if (container.image) { @@ -267,25 +277,37 @@ export default class CanvasRenderer { path(path: Path) { this.ctx.beginPath(); - path.forEach((point, index) => { - const start = point instanceof Vector ? point : point.start; - if (index === 0) { - this.ctx.moveTo(start.x, start.y); - } else { - this.ctx.lineTo(start.x, start.y); - } + if (path instanceof Circle) { + this.ctx.arc( + path.x + path.radius, + path.y + path.radius, + path.radius, + 0, + Math.PI * 2, + true + ); + } else { + path.forEach((point, index) => { + const start = point instanceof Vector ? point : point.start; + if (index === 0) { + this.ctx.moveTo(start.x, start.y); + } else { + this.ctx.lineTo(start.x, start.y); + } + + if (point instanceof BezierCurve) { + this.ctx.bezierCurveTo( + point.startControl.x, + point.startControl.y, + point.endControl.x, + point.endControl.y, + point.end.x, + point.end.y + ); + } + }); + } - if (point instanceof BezierCurve) { - this.ctx.bezierCurveTo( - point.startControl.x, - point.startControl.y, - point.endControl.x, - point.endControl.y, - point.end.x, - point.end.y - ); - } - }); this.ctx.closePath(); } diff --git a/src/Input.js b/src/Input.js new file mode 100644 index 000000000..caa42aeba --- /dev/null +++ b/src/Input.js @@ -0,0 +1,128 @@ +/* @flow */ +'use strict'; +import type NodeContainer from './NodeContainer'; +import TextContainer from './TextContainer'; + +import {BACKGROUND_CLIP, BACKGROUND_ORIGIN} from './parsing/background'; +import {BORDER_STYLE} from './parsing/border'; + +import Circle from './drawing/Circle'; +import Color from './Color'; +import Length from './Length'; +import {Bounds} from './Bounds'; +import {TextBounds} from './TextBounds'; + +export const INPUT_COLOR = new Color([42, 42, 42]); +const INPUT_BORDER_COLOR = new Color([165, 165, 165]); +const INPUT_BACKGROUND_COLOR = new Color([222, 222, 222]); +const INPUT_BORDER = { + borderWidth: 1, + borderColor: INPUT_BORDER_COLOR, + borderStyle: BORDER_STYLE.SOLID +}; +export const INPUT_BORDERS = [INPUT_BORDER, INPUT_BORDER, INPUT_BORDER, INPUT_BORDER]; +export const INPUT_BACKGROUND = { + backgroundColor: INPUT_BACKGROUND_COLOR, + backgroundImage: [], + backgroundClip: BACKGROUND_CLIP.PADDING_BOX, + backgroundOrigin: BACKGROUND_ORIGIN.PADDING_BOX +}; + +const RADIO_BORDER_RADIUS = new Length('50%'); +const RADIO_BORDER_RADIUS_TUPLE = [RADIO_BORDER_RADIUS, RADIO_BORDER_RADIUS]; +const INPUT_RADIO_BORDER_RADIUS = [ + RADIO_BORDER_RADIUS_TUPLE, + RADIO_BORDER_RADIUS_TUPLE, + RADIO_BORDER_RADIUS_TUPLE, + RADIO_BORDER_RADIUS_TUPLE +]; + +const CHECKBOX_BORDER_RADIUS = new Length('3px'); +const CHECKBOX_BORDER_RADIUS_TUPLE = [CHECKBOX_BORDER_RADIUS, CHECKBOX_BORDER_RADIUS]; +const INPUT_CHECKBOX_BORDER_RADIUS = [ + CHECKBOX_BORDER_RADIUS_TUPLE, + CHECKBOX_BORDER_RADIUS_TUPLE, + CHECKBOX_BORDER_RADIUS_TUPLE, + CHECKBOX_BORDER_RADIUS_TUPLE +]; + +export const getInputBorderRadius = (node: HTMLInputElement) => { + return node.type === 'radio' ? INPUT_RADIO_BORDER_RADIUS : INPUT_CHECKBOX_BORDER_RADIUS; +}; + +export const inlineInputElement = (node: HTMLInputElement, container: NodeContainer): void => { + if (node.type === 'radio' || node.type === 'checkbox') { + if (node.checked) { + const size = Math.min(container.bounds.width, container.bounds.height); + // TODO draw checkmark with Path Array + container.style.font.fontSize = `${size - 3}px`; + container.childNodes.push( + node.type === 'checkbox' + ? new TextContainer('\u2714', container, [ + new TextBounds( + '\u2714', + new Bounds( + container.bounds.left + size / 6, + container.bounds.top + size - 1, + 0, + 0 + ) + ) + ]) + : new Circle( + container.bounds.left + size / 4, + container.bounds.top + size / 4, + size / 4 + ) + ); + } + } else { + inlineFormElement(getInputValue(node), node, container); + } +}; + +export const inlineTextAreaElement = ( + node: HTMLTextAreaElement, + container: NodeContainer +): void => { + inlineFormElement(node.value, node, container); +}; + +export const inlineSelectElement = (node: HTMLSelectElement, container: NodeContainer): void => { + const option = node.options[node.selectedIndex || 0]; + inlineFormElement(option ? option.text || '' : '', node, container); +}; + +export const reformatInputBounds = (bounds: Bounds): Bounds => { + if (bounds.width > bounds.height) { + bounds.left += (bounds.width - bounds.height) / 2; + bounds.width = bounds.height; + } else if (bounds.width < bounds.height) { + bounds.top += (bounds.height - bounds.width) / 2; + bounds.height = bounds.width; + } + return bounds; +}; + +const inlineFormElement = (value: string, node: HTMLElement, container: NodeContainer): void => { + const body = node.ownerDocument.body; + if (value.length > 0 && body) { + const wrapper = node.ownerDocument.createElement('html2canvaswrapper'); + wrapper.style = node.ownerDocument.defaultView.getComputedStyle(node, null).cssText; + wrapper.style.position = 'fixed'; + wrapper.style.left = `${container.bounds.left}px`; + wrapper.style.top = `${container.bounds.top}px`; + const text = node.ownerDocument.createTextNode(value); + wrapper.appendChild(text); + body.appendChild(wrapper); + container.childNodes.push(TextContainer.fromTextNode(text, container)); + body.removeChild(wrapper); + } +}; + +const getInputValue = (node: HTMLInputElement): string => { + const value = + node.type === 'password' ? new Array(node.value.length + 1).join('\u2022') : node.value; + + return value.length === 0 ? node.placeholder || '' : value; +}; diff --git a/src/NodeContainer.js b/src/NodeContainer.js index a38edfd88..218b0525f 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -41,6 +41,13 @@ import {parseVisibility, VISIBILITY} from './parsing/visibility'; import {parseZIndex} from './parsing/zIndex'; import {parseBounds, parseBoundCurves, calculatePaddingBoxPath} from './Bounds'; +import { + INPUT_BACKGROUND, + INPUT_BORDERS, + INPUT_COLOR, + getInputBorderRadius, + reformatInputBounds +} from './Input'; type StyleDeclaration = { background: Background, @@ -66,22 +73,30 @@ export default class NodeContainer { name: ?string; parent: ?NodeContainer; style: StyleDeclaration; - textNodes: Array; + childNodes: Array; bounds: Bounds; curvedBounds: BoundCurves; image: ?string; constructor(node: HTMLElement, parent: ?NodeContainer, imageLoader: ImageLoader) { this.parent = parent; - this.textNodes = []; - const style = node.ownerDocument.defaultView.getComputedStyle(node, null); + this.childNodes = []; + const defaultView = node.ownerDocument.defaultView; + const style = defaultView.getComputedStyle(node, null); const display = parseDisplay(style.display); + const IS_INPUT = node.type === 'radio' || node.type === 'checkbox'; + this.style = { - background: parseBackground(style, imageLoader), - border: parseBorder(style), - borderRadius: parseBorderRadius(style), - color: new Color(style.color), + background: IS_INPUT ? INPUT_BACKGROUND : parseBackground(style, imageLoader), + border: IS_INPUT ? INPUT_BORDERS : parseBorder(style), + borderRadius: + (node instanceof defaultView.HTMLInputElement || + node instanceof HTMLInputElement) && + IS_INPUT + ? getInputBorderRadius(node) + : parseBorderRadius(style), + color: IS_INPUT ? INPUT_COLOR : new Color(style.color), display: display, float: parseCSSFloat(style.float), font: parseFont(style), @@ -103,7 +118,7 @@ export default class NodeContainer { } this.image = getImage(node, imageLoader); - this.bounds = parseBounds(node); + this.bounds = IS_INPUT ? reformatInputBounds(parseBounds(node)) : parseBounds(node); this.curvedBounds = parseBoundCurves( this.bounds, this.style.border, diff --git a/src/NodeParser.js b/src/NodeParser.js index 45efb700e..bbc834a72 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -5,6 +5,7 @@ import type Logger from './Logger'; import StackingContext from './StackingContext'; import NodeContainer from './NodeContainer'; import TextContainer from './TextContainer'; +import {inlineInputElement, inlineTextAreaElement, inlineSelectElement} from './Input'; export const NodeParser = ( node: HTMLElement, @@ -45,17 +46,29 @@ const parseNodeTree = ( for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; const defaultView = childNode.ownerDocument.defaultView; - if (childNode instanceof defaultView.Text) { + if (childNode instanceof defaultView.Text || childNode instanceof Text) { if (childNode.data.trim().length > 0) { - parent.textNodes.push(new TextContainer(childNode, parent)); + parent.childNodes.push(TextContainer.fromTextNode(childNode, parent)); } - } else if (childNode instanceof defaultView.HTMLElement) { + } else if ( + childNode instanceof defaultView.HTMLElement || + childNode instanceof HTMLElement + ) { if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { inlinePseudoElement(childNode, PSEUDO_BEFORE); inlinePseudoElement(childNode, PSEUDO_AFTER); const container = new NodeContainer(childNode, parent, imageLoader); - if (container.isVisible()) { + if (childNode.tagName === 'INPUT') { + // $FlowFixMe + inlineInputElement(childNode, container); + } else if (childNode.tagName === 'TEXTAREA') { + // $FlowFixMe + inlineTextAreaElement(childNode, container); + } else if (childNode.tagName === 'SELECT') { + // $FlowFixMe + inlineSelectElement(childNode, container); + } const treatAsRealStackingContext = createsRealStackingContext( container, childNode @@ -105,7 +118,7 @@ const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after') // $FlowFixMe anonymousReplacedElement.src = stripQuotes(image[1]); } else { - anonymousReplacedElement.appendChild(node.ownerDocument.createTextNode(content)); + anonymousReplacedElement.textContent = content; } anonymousReplacedElement.style = style.cssText; diff --git a/src/TextBounds.js b/src/TextBounds.js index 4073fb0ae..d4cf38457 100644 --- a/src/TextBounds.js +++ b/src/TextBounds.js @@ -2,7 +2,7 @@ 'use strict'; import {ucs2} from 'punycode'; -import type TextContainer from './TextContainer'; +import type NodeContainer from './NodeContainer'; import {Bounds, parseBounds} from './Bounds'; import {TEXT_DECORATION} from './parsing/textDecoration'; @@ -24,20 +24,20 @@ export class TextBounds { } } -export const parseTextBounds = (textContainer: TextContainer, node: Text): Array => { - const codePoints = ucs2.decode(textContainer.text); - const letterRendering = - textContainer.parent.style.letterSpacing !== 0 || hasUnicodeCharacters(textContainer.text); +export const parseTextBounds = ( + value: string, + parent: NodeContainer, + node: Text +): Array => { + const codePoints = ucs2.decode(value); + const letterRendering = parent.style.letterSpacing !== 0 || hasUnicodeCharacters(value); const textList = letterRendering ? codePoints.map(encodeCodePoint) : splitWords(codePoints); const length = textList.length; const textBounds = []; let offset = 0; for (let i = 0; i < length; i++) { let text = textList[i]; - if ( - textContainer.parent.style.textDecoration !== TEXT_DECORATION.NONE || - text.trim().length > 0 - ) { + if (parent.style.textDecoration !== TEXT_DECORATION.NONE || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length))); } else { diff --git a/src/TextContainer.js b/src/TextContainer.js index 2e16d2ad0..3f7dea415 100644 --- a/src/TextContainer.js +++ b/src/TextContainer.js @@ -12,10 +12,15 @@ export default class TextContainer { parent: NodeContainer; bounds: Array; - constructor(node: Text, parent: NodeContainer) { - this.text = transform(node.data, parent.style.textTransform); + constructor(text: string, parent: NodeContainer, bounds: Array) { + this.text = text; this.parent = parent; - this.bounds = parseTextBounds(this, node); + this.bounds = bounds; + } + + static fromTextNode(node: Text, parent: NodeContainer) { + const text = transform(node.data, parent.style.textTransform); + return new TextContainer(text, parent, parseTextBounds(text, parent, node)); } } diff --git a/src/BezierCurve.js b/src/drawing/BezierCurve.js similarity index 100% rename from src/BezierCurve.js rename to src/drawing/BezierCurve.js diff --git a/src/drawing/Circle.js b/src/drawing/Circle.js new file mode 100644 index 000000000..969c49daf --- /dev/null +++ b/src/drawing/Circle.js @@ -0,0 +1,25 @@ +/* @flow */ +'use strict'; + +export default class Circle { + x: number; + y: number; + radius: number; + + constructor(x: number, y: number, radius: number) { + this.x = x; + this.y = y; + this.radius = radius; + if (__DEV__) { + if (isNaN(x)) { + console.error(`Invalid x value given for Circle`); + } + if (isNaN(y)) { + console.error(`Invalid y value given for Circle`); + } + if (isNaN(radius)) { + console.error(`Invalid radius value given for Circle`); + } + } + } +} diff --git a/src/Size.js b/src/drawing/Size.js similarity index 100% rename from src/Size.js rename to src/drawing/Size.js diff --git a/src/Vector.js b/src/drawing/Vector.js similarity index 100% rename from src/Vector.js rename to src/drawing/Vector.js diff --git a/src/parsing/background.js b/src/parsing/background.js index 4a70a0323..91d69c4de 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -6,8 +6,8 @@ import type ImageLoader, {ImageElement} from '../ImageLoader'; import Color from '../Color'; import Length from '../Length'; -import Size from '../Size'; -import Vector from '../Vector'; +import Size from '../drawing/Size'; +import Vector from '../drawing/Vector'; import {calculateBorderBoxPath, calculatePaddingBoxPath} from '../Bounds'; export type Background = { From 9bdb871307f69d5c138cc0ce32662f2787466bba Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 5 Aug 2017 21:13:53 +0800 Subject: [PATCH 029/377] Implement linear-gradient rendering --- src/Angle.js | 24 +++ src/CanvasRenderer.js | 19 +++ src/Gradient.js | 165 ++++++++++++++++++++ src/parsing/background.js | 4 +- tests/cases/background/linear-gradient.html | 60 ++++++- 5 files changed, 267 insertions(+), 5 deletions(-) create mode 100644 src/Angle.js create mode 100644 src/Gradient.js diff --git a/src/Angle.js b/src/Angle.js new file mode 100644 index 000000000..2e62a8934 --- /dev/null +++ b/src/Angle.js @@ -0,0 +1,24 @@ +/* @flow */ +'use strict'; + +const ANGLE = /([+-]?\d*\.?\d+)(deg|grad|rad|turn)/i; + +export const parseAngle = (angle: string): number | null => { + const match = angle.match(ANGLE); + + if (match) { + const value = parseFloat(match[1]); + switch (match[2].toLowerCase()) { + case 'deg': + return Math.PI * value / 180; + case 'grad': + return Math.PI / 200 * value; + case 'rad': + return value; + case 'turn': + return Math.PI * 2 * value; + } + } + + return null; +}; diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js index e63bc8ecd..f0af78fac 100644 --- a/src/CanvasRenderer.js +++ b/src/CanvasRenderer.js @@ -24,6 +24,7 @@ import { calculatePaddingBoxPath } from './Bounds'; import {FontMetrics} from './Font'; +import {parseGradient} from './Gradient'; import TextContainer from './TextContainer'; import { @@ -211,6 +212,24 @@ export default class CanvasRenderer { container.style.background.backgroundImage.reverse().forEach(backgroundImage => { if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { this.renderBackgroundRepeat(container, backgroundImage); + } else { + const gradient = parseGradient(backgroundImage.source, container.bounds); + if (gradient) { + const bounds = container.bounds; + const grad = this.ctx.createLinearGradient( + bounds.left + gradient.direction.x1, + bounds.top + gradient.direction.y1, + bounds.left + gradient.direction.x0, + bounds.top + gradient.direction.y0 + ); + + gradient.colorStops.forEach(colorStop => { + grad.addColorStop(colorStop.stop, colorStop.color.toString()); + }); + + this.ctx.fillStyle = grad; + this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height); + } } }); } diff --git a/src/Gradient.js b/src/Gradient.js new file mode 100644 index 000000000..3c01a7524 --- /dev/null +++ b/src/Gradient.js @@ -0,0 +1,165 @@ +/* @flow */ +'use strict'; + +import type {BackgroundSource} from './parsing/background'; +import type {Bounds} from './Bounds'; +import {parseAngle} from './Angle'; +import Color from './Color'; +import Length, {LENGTH_TYPE} from './Length'; + +const SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i; +const ENDS_WITH_LENGTH = /(px)|%|( 0)$/i; + +export type Direction = { + x0: number, + x1: number, + y0: number, + y1: number +}; + +export type ColorStop = { + color: Color, + stop: number +}; + +export type Gradient = { + direction: Direction, + colorStops: Array +}; + +export const parseGradient = ({args, method, prefix}: BackgroundSource, bounds: Bounds) => { + if (method === 'linear-gradient') { + return parseLinearGradient(args, bounds); + } + + // TODO: webkit-gradient syntax +}; + +const parseLinearGradient = (args: Array, bounds: Bounds): Gradient => { + const angle = parseAngle(args[0]); + const HAS_DIRECTION = SIDE_OR_CORNER.test(args[0]) || angle !== null; + const direction = HAS_DIRECTION + ? angle !== null + ? calculateGradientDirection(angle, bounds) + : parseSideOrCorner(args[0], bounds) + : calculateGradientDirection(Math.PI, bounds); + const colorStops = []; + const firstColorStopIndex = HAS_DIRECTION ? 1 : 0; + + for (let i = firstColorStopIndex; i < args.length; i++) { + const value = args[i]; + const HAS_LENGTH = ENDS_WITH_LENGTH.test(value); + const lastSpaceIndex = value.lastIndexOf(' '); + const color = new Color(HAS_LENGTH ? value.substring(0, lastSpaceIndex) : value); + const stop = HAS_LENGTH + ? new Length(value.substring(lastSpaceIndex + 1)) + : i === firstColorStopIndex + ? new Length('0%') + : i === args.length - 1 ? new Length('100%') : null; + colorStops.push({color, stop}); + } + + // TODO: Fix some inaccuracy with color stops with px values + const lineLength = Math.min( + Math.sqrt( + Math.pow(Math.abs(direction.x0) + Math.abs(direction.x1), 2) + + Math.pow(Math.abs(direction.y0) + Math.abs(direction.y1), 2) + ), + bounds.width * 2, + bounds.height * 2 + ); + + const absoluteValuedColorStops = colorStops.map(({color, stop}) => { + return { + color, + // $FlowFixMe + stop: stop ? stop.getAbsoluteValue(lineLength) / lineLength : null + }; + }); + + let previousColorStop = absoluteValuedColorStops[0].stop; + for (let i = 0; i < absoluteValuedColorStops.length; i++) { + if (previousColorStop !== null) { + const stop = absoluteValuedColorStops[i].stop; + if (stop === null) { + let n = i; + while (absoluteValuedColorStops[n].stop === null) { + n++; + } + const steps = n - i + 1; + const nextColorStep = absoluteValuedColorStops[n].stop; + const stepSize = (nextColorStep - previousColorStop) / steps; + for (; i < n; i++) { + previousColorStop = absoluteValuedColorStops[i].stop = + previousColorStop + stepSize; + } + } else { + previousColorStop = stop; + } + } + } + + return { + direction, + colorStops: absoluteValuedColorStops + }; +}; + +const calculateGradientDirection = (radian: number, bounds: Bounds): Direction => { + const width = bounds.width; + const height = bounds.height; + const HALF_WIDTH = width * 0.5; + const HALF_HEIGHT = height * 0.5; + const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian)); + const HALF_LINE_LENGTH = lineLength / 2; + + const x0 = HALF_WIDTH + Math.sin(radian) * HALF_LINE_LENGTH; + const y0 = HALF_HEIGHT - Math.cos(radian) * HALF_LINE_LENGTH; + const x1 = width - x0; + const y1 = height - y0; + + return {x0, x1, y0, y1}; +}; + +const parseTopRight = (bounds: Bounds) => + Math.acos( + bounds.width / 2 / (Math.sqrt(Math.pow(bounds.width, 2) + Math.pow(bounds.height, 2)) / 2) + ); + +const parseSideOrCorner = (side: string, bounds: Bounds): Direction => { + switch (side) { + case 'bottom': + case 'to top': + return calculateGradientDirection(0, bounds); + case 'left': + case 'to right': + return calculateGradientDirection(Math.PI / 2, bounds); + case 'right': + case 'to left': + return calculateGradientDirection(3 * Math.PI / 2, bounds); + case 'top right': + case 'right top': + case 'to bottom left': + case 'to left bottom': + return calculateGradientDirection(Math.PI + parseTopRight(bounds), bounds); + case 'top left': + case 'left top': + case 'to bottom right': + case 'to right bottom': + return calculateGradientDirection(Math.PI - parseTopRight(bounds), bounds); + case 'bottom left': + case 'left bottom': + case 'to top right': + case 'to right top': + return calculateGradientDirection(parseTopRight(bounds), bounds); + case 'bottom right': + case 'right bottom': + case 'to top left': + case 'to left top': + return calculateGradientDirection(2 * Math.PI - parseTopRight(bounds), bounds); + case 'top': + case 'to bottom': + default: + return calculateGradientDirection(Math.PI, bounds); + } +}; diff --git a/src/parsing/background.js b/src/parsing/background.js index 91d69c4de..c99308efc 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -335,7 +335,7 @@ const parseBackgroundImage = (image: string, imageLoader: ImageLoader): Array @@ -134,6 +175,19 @@
 
 
 
+
 
+
 
+
+
 
+
 
+
 
+
 
+
+
 
+
 
+
 
+
 
+
 
From 12672839f15ba4aa1600f1cb11fb6170fcc99e08 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 5 Aug 2017 21:40:03 +0800 Subject: [PATCH 030/377] Use correct JS context to find cloned element in Edge --- src/Clone.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Clone.js b/src/Clone.js index 1d0d3d8e7..ace03b147 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -111,30 +111,31 @@ export const cloneWindow = ( ); } return new Promise((resolve, reject) => { - const documentClone = cloneIframeContainer.contentWindow.document; + let cloneWindow = cloneIframeContainer.contentWindow; + const documentClone = cloneWindow.document; /* Chrome doesn't detect relative background-images assigned in inline @@ -39,5 +47,11 @@ testing with transparent testing with low opacity +

Sed ut perspiciatis unde omnis iste + natus error sit voluptatem accusantium doloremque laudantium, + totam rem aperiam, eaque ipsa quae ab illo inventore.

+

Sed ut perspiciatis unde omnis iste + natus error sit voluptatem accusantium doloremque laudantium, + totam rem aperiam, eaque ipsa quae ab illo inventore.

From 10ec0797629ee8f8cf3204c7428a3246860cccad Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 15:43:53 +0800 Subject: [PATCH 035/377] Remove direct console call (breaks IE9 when console is not open) --- src/Clone.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Clone.js b/src/Clone.js index bff692487..bc9aa511e 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -118,7 +118,6 @@ export const cloneWindow = ( if window url is about:blank, we can assign the url to current by writing onto the document */ cloneWindow.onload = cloneIframeContainer.onload = () => { - console.log('iframe load'); const interval = setInterval(() => { if (documentClone.body.childNodes.length > 0) { scrolledElements.forEach(initNode); From 6baa84709203f5805cc6c7c9481f4eb441582b69 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 15:44:30 +0800 Subject: [PATCH 036/377] Handle undefined values for textShadow/transform (IE9) --- src/parsing/textShadow.js | 4 ++-- src/parsing/transform.js | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/parsing/textShadow.js b/src/parsing/textShadow.js index bc2b05639..23f47d10f 100644 --- a/src/parsing/textShadow.js +++ b/src/parsing/textShadow.js @@ -13,8 +13,8 @@ export type TextShadow = { const TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){3})/g; const TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g; -export const parseTextShadow = (textShadow: string): Array | null => { - if (textShadow === 'none') { +export const parseTextShadow = (textShadow: ?string): Array | null => { + if (textShadow === 'none' || typeof(textShadow) !== 'string') { return null; } diff --git a/src/parsing/transform.js b/src/parsing/transform.js index a4bcf7173..b92892ed2 100644 --- a/src/parsing/transform.js +++ b/src/parsing/transform.js @@ -31,10 +31,11 @@ const parseTransformOrigin = (origin: string): TransformOrigin => { return [values[0], values[1]]; }; -const parseTransformMatrix = (transform: string): Matrix | null => { - if (transform === 'none') { +const parseTransformMatrix = (transform: ?string): Matrix | null => { + if (transform === 'none' || typeof(transform) !== 'string') { return null; } + const match = transform.match(MATRIX); if (match) { if (match[1] === 'matrix') { From f0fdeac7034b3ae5d2dc92c476ed8334a71740a8 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 15:52:56 +0800 Subject: [PATCH 037/377] Fix formatting --- src/parsing/textShadow.js | 2 +- src/parsing/transform.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parsing/textShadow.js b/src/parsing/textShadow.js index 23f47d10f..22ff4aac4 100644 --- a/src/parsing/textShadow.js +++ b/src/parsing/textShadow.js @@ -14,7 +14,7 @@ const TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){3})/g; const TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g; export const parseTextShadow = (textShadow: ?string): Array | null => { - if (textShadow === 'none' || typeof(textShadow) !== 'string') { + if (textShadow === 'none' || typeof textShadow !== 'string') { return null; } diff --git a/src/parsing/transform.js b/src/parsing/transform.js index b92892ed2..51d19233c 100644 --- a/src/parsing/transform.js +++ b/src/parsing/transform.js @@ -32,7 +32,7 @@ const parseTransformOrigin = (origin: string): TransformOrigin => { }; const parseTransformMatrix = (transform: ?string): Matrix | null => { - if (transform === 'none' || typeof(transform) !== 'string') { + if (transform === 'none' || typeof transform !== 'string') { return null; } From 018ed765ad07fd8f6e409df00afd96c79e7cd3da Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 16:05:36 +0800 Subject: [PATCH 038/377] Update CHANGELOG with changes for v1.0.0-alpha1 --- CHANGELOG.md | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 929abe0e9..8e2575b2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,17 +1,32 @@ ### Changelog ### -v0.5.0-beta4 - 23.1.2016 +#### v1.0.0-alpha1 - TBD #### + * Complete rewrite of library + ##### Breaking Changes ##### + * Remove deprecated onrendered callback, calling `html2canvas` returns a `Promise` + + ##### New featues / fixes ##### + * Add support for scaling canvas (defaults to device pixel ratio) + * Add support for multiple text-shadows + * Add support for multiple text-decorations + * Add support for text-decoration-color + * Add support for percentage values for border-radius + * Correctly handle px and percentage values in linear-gradients + * Correctly support all angle types for linear-gradients + * Add support for multiple values for background-repeat, background-position and background-size + +#### v0.5.0-beta4 - 23.1.2016 #### * Fix logger requiring access to window object * Derequire browserify build * Fix rendering of specific elements when window is scrolled and `type` isn't set to `view` -v0.5.0-beta3 - 6.12.2015 +#### v0.5.0-beta3 - 6.12.2015 #### * Handle color names in linear gradients -v0.5.0-beta2 - 20.10.2015 +#### v0.5.0-beta2 - 20.10.2015 #### * Remove Promise polyfill (use native or provide it yourself) -v0.5.0-beta1 - 19.10.2015 +#### v0.5.0-beta1 - 19.10.2015 #### * Fix bug with unmatched color stops in gradients * Fix scrolling issues with iOS * Correctly handle named colors in gradients @@ -19,11 +34,11 @@ v0.5.0-beta1 - 19.10.2015 * Fix transparent colors breaking gradients * Preserve scrolling positions on render -v0.5.0-alpha2 - 3.2.2015 +#### v0.5.0-alpha2 - 3.2.2015 #### * Switch to using browserify for building * Fix (#517) Chrome stretches background images with 'auto' or single attributes -v0.5.0-alpha - 19.1.2015 +#### v0.5.0-alpha - 19.1.2015#### * Complete rewrite of library * Switched interface to return Promise * Uses hidden iframe window to perform rendering, allowing async rendering and doesn't force the viewport to be scrolled to the top anymore. @@ -34,14 +49,14 @@ v0.5.0-alpha - 19.1.2015 * Changed format for proxy requests, permitting binary responses with CORS headers as well * Fixed many layering issues (see z-index tests) -v0.4.1 - 7.9.2013 +#### v0.4.1 - 7.9.2013 #### * Added support for bower * Improved z-index ordering * Basic implementation for CSS transformations * Fixed inline text in top element * Basic implementation for text-shadow -v0.4.0 - 30.1.2013 +#### v0.4.0 - 30.1.2013 #### * Added rendering tests with webdriver * Switched to using grunt for building * Removed support for IE<9, including any FlashCanvas bits @@ -51,7 +66,7 @@ v0.4.0 - 30.1.2013 * Support for placeholder rendering * Reformatted all tests to small units to test specific features -v0.3.4 - 26.6.2012 +#### v0.3.4 - 26.6.2012 #### * Removed (last?) jQuery dependencies (niklasvh) * SVG-powered rendering (niklasvh) @@ -59,7 +74,7 @@ v0.3.4 - 26.6.2012 * Split renderers to their own objects (niklasvh) * Simplified API, cleaned up code (niklasvh) -v0.3.3 - 2.3.2012 +#### v0.3.3 - 2.3.2012 #### * SVG taint fix, and additional taint testing options for rendering (niklasvh) * Added support for CORS images and option to create canvas as tainted (niklasvh) @@ -67,7 +82,7 @@ v0.3.3 - 2.3.2012 * Added integrated support for Flashcanvas (niklasvh) * Fixed a variety of legacy IE bugs (niklasvh) -v0.3.2 - 20.2.2012 +#### v0.3.2 - 20.2.2012 #### * Added changelog! * Added bookmarklet (cobexer) From 68900c30878baf56429ed5da2c898d43364be93e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 17:37:10 +0800 Subject: [PATCH 039/377] Copy CSS properties individual with IE --- src/Input.js | 3 ++- src/NodeParser.js | 20 ++++++-------------- src/Util.js | 12 ++++++++++++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Input.js b/src/Input.js index caa42aeba..4e6da361f 100644 --- a/src/Input.js +++ b/src/Input.js @@ -11,6 +11,7 @@ import Color from './Color'; import Length from './Length'; import {Bounds} from './Bounds'; import {TextBounds} from './TextBounds'; +import {copyCSSStyles} from './Util'; export const INPUT_COLOR = new Color([42, 42, 42]); const INPUT_BORDER_COLOR = new Color([165, 165, 165]); @@ -108,7 +109,7 @@ const inlineFormElement = (value: string, node: HTMLElement, container: NodeCont const body = node.ownerDocument.body; if (value.length > 0 && body) { const wrapper = node.ownerDocument.createElement('html2canvaswrapper'); - wrapper.style = node.ownerDocument.defaultView.getComputedStyle(node, null).cssText; + copyCSSStyles(node.ownerDocument.defaultView.getComputedStyle(node, null), wrapper); wrapper.style.position = 'fixed'; wrapper.style.left = `${container.bounds.left}px`; wrapper.style.top = `${container.bounds.top}px`; diff --git a/src/NodeParser.js b/src/NodeParser.js index 8fd73fb93..97ae91450 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -6,21 +6,21 @@ import StackingContext from './StackingContext'; import NodeContainer from './NodeContainer'; import TextContainer from './TextContainer'; import {inlineInputElement, inlineTextAreaElement, inlineSelectElement} from './Input'; +import {copyCSSStyles} from './Util'; export const NodeParser = ( node: HTMLElement, imageLoader: ImageLoader, logger: Logger ): StackingContext => { - const container = new NodeContainer(node, null, imageLoader); - const stack = new StackingContext(container, null, true); - - createPseudoHideStyles(node.ownerDocument); - if (__DEV__) { logger.log(`Starting node parsing`); } + const container = new NodeContainer(node, null, imageLoader); + const stack = new StackingContext(container, null, true); + + createPseudoHideStyles(node.ownerDocument); parseNodeTree(node, container, stack, imageLoader); if (__DEV__) { @@ -127,15 +127,7 @@ const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after') anonymousReplacedElement.textContent = content; } - if (style.cssText) { - anonymousReplacedElement.style = style.cssText; - } else { - // Edge does not provide value for cssText - for (let i = style.length - 1; i >= 0; i--) { - const property = style.item(i); - anonymousReplacedElement.style.setProperty(property, style.getPropertyValue(property)); - } - } + copyCSSStyles(style, anonymousReplacedElement); anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; node.className += diff --git a/src/Util.js b/src/Util.js index cfbc179cb..2c794862a 100644 --- a/src/Util.js +++ b/src/Util.js @@ -2,3 +2,15 @@ 'use strict'; export const contains = (bit: number, value: number): boolean => (bit & value) !== 0; + +export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): void => { + if (style.cssText) { + target.style = style.cssText; + } else { + // Edge does not provide value for cssText + for (let i = style.length - 1; i >= 0; i--) { + const property = style.item(i); + target.style.setProperty(property, style.getPropertyValue(property)); + } + } +}; From 216c290c4b05353f976ce8fc72fe5afcff528671 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 17:37:34 +0800 Subject: [PATCH 040/377] Check availability of console before using it (Fix IE9) --- src/Logger.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Logger.js b/src/Logger.js index e91288345..bbdf241ef 100644 --- a/src/Logger.js +++ b/src/Logger.js @@ -10,21 +10,25 @@ export default class Logger { // eslint-disable-next-line flowtype/no-weak-types log(...args: any) { - Function.prototype.bind - .call(window.console.log, window.console) - .apply( - window.console, - [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) - ); + if (window.console && window.console.log) { + Function.prototype.bind + .call(window.console.log, window.console) + .apply( + window.console, + [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) + ); + } } // eslint-disable-next-line flowtype/no-weak-types error(...args: any) { - Function.prototype.bind - .call(window.console.error, window.console) - .apply( - window.console, - [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) - ); + if (window.console && window.console.error) { + Function.prototype.bind + .call(window.console.error, window.console) + .apply( + window.console, + [Date.now() - this.start + 'ms', 'html2canvas:'].concat([].slice.call(args, 0)) + ); + } } } From 965f850e68c186a3586bf6500126dd9bf2e1e6dd Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 17:50:01 +0800 Subject: [PATCH 041/377] Assign cssText string to same named property on target --- src/Util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Util.js b/src/Util.js index 2c794862a..4dac94d80 100644 --- a/src/Util.js +++ b/src/Util.js @@ -5,7 +5,7 @@ export const contains = (bit: number, value: number): boolean => (bit & value) ! export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): void => { if (style.cssText) { - target.style = style.cssText; + target.style.cssText = style.cssText; } else { // Edge does not provide value for cssText for (let i = style.length - 1; i >= 0; i--) { From 8da77eb6892741d94611a115df60bb93201aa0cc Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 17:53:38 +0800 Subject: [PATCH 042/377] Add options to define window dimensions --- src/ImageLoader.js | 6 ++++-- src/index.js | 35 ++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index d7dd70669..523e31804 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -14,9 +14,11 @@ export default class ImageLoader { cache: ImageCache; logger: Logger; _index: number; + _window: WindowProxy; - constructor(options: Options, logger: Logger) { + constructor(options: Options, logger: Logger, window: WindowProxy) { this.options = options; + this._window = window; this.origin = this.getOrigin(window.location.href); this.cache = {}; this.logger = logger; @@ -70,7 +72,7 @@ export default class ImageLoader { } getOrigin(url: string): string { - const link = this._link || (this._link = document.createElement('a')); + const link = this._link || (this._link = this._window.document.createElement('a')); link.href = url; link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/ return link.protocol + link.hostname + link.port; diff --git a/src/index.js b/src/index.js index 8af8bc320..423e59726 100644 --- a/src/index.js +++ b/src/index.js @@ -17,7 +17,10 @@ export type Options = { imageTimeout: ?number, proxy: ?string, removeContainer: ?boolean, - type: ?string + scale: number, + type: ?string, + windowWidth: number, + windowHeight: number }; const html2canvas = (element: HTMLElement, config: Options): Promise => { @@ -25,12 +28,6 @@ const html2canvas = (element: HTMLElement, config: Options): Promise Date: Sun, 6 Aug 2017 18:13:40 +0800 Subject: [PATCH 043/377] Add license info to builds (Fix #1126) --- flow-typed/myLibDef.js | 1 + src/index.js | 4 ++++ webpack.config.js | 15 +++++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/flow-typed/myLibDef.js b/flow-typed/myLibDef.js index 7d9a15d49..a2094ce28 100644 --- a/flow-typed/myLibDef.js +++ b/flow-typed/myLibDef.js @@ -1 +1,2 @@ declare var __DEV__: boolean; +declare var __VERSION__: string; diff --git a/src/index.js b/src/index.js index 423e59726..c072e387f 100644 --- a/src/index.js +++ b/src/index.js @@ -24,6 +24,10 @@ export type Options = { }; const html2canvas = (element: HTMLElement, config: Options): Promise => { + if (typeof console === 'object' && typeof console.log === 'function') { + console.log(`html2canvas ${__VERSION__}`); + } + const logger = new Logger(); const ownerDocument = element.ownerDocument; diff --git a/webpack.config.js b/webpack.config.js index f4e4b7180..1264cf8e4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,13 @@ const webpack = require('webpack'); +const fs = require('fs'); +const path = require('path'); + +const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'))); + +const banner = +`${pkg.title} ${pkg.version} <${pkg.homepage}> +Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}> +Released under ${pkg.license} License`; module.exports = { entry: './src/index.js', @@ -16,7 +25,9 @@ module.exports = { }, plugins: [ new webpack.DefinePlugin({ - '__DEV__': true - }) + '__DEV__': true, + '__VERSION__': JSON.stringify(pkg.version) + }), + new webpack.BannerPlugin(banner) ] }; From a2895691baadc8301a2ee4f7ea64416a5cd0c2ce Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 6 Aug 2017 20:21:35 +0800 Subject: [PATCH 044/377] Extract render target logic out of renderer to be target agnostic --- src/CanvasRenderer.js | 510 --------------------------------- src/Gradient.js | 5 +- src/Renderer.js | 364 +++++++++++++++++++++++ src/index.js | 18 +- src/parsing/textDecoration.js | 12 +- src/renderer/CanvasRenderer.js | 266 +++++++++++++++++ 6 files changed, 652 insertions(+), 523 deletions(-) delete mode 100644 src/CanvasRenderer.js create mode 100644 src/Renderer.js create mode 100644 src/renderer/CanvasRenderer.js diff --git a/src/CanvasRenderer.js b/src/CanvasRenderer.js deleted file mode 100644 index 029f3d0a2..000000000 --- a/src/CanvasRenderer.js +++ /dev/null @@ -1,510 +0,0 @@ -/* @flow */ -'use strict'; - -import type Color from './Color'; -import type Size from './drawing/Size'; - -import type {BackgroundImage} from './parsing/background'; -import type {Border, BorderSide} from './parsing/border'; -import type {TextShadow} from './parsing/textShadow'; - -import type {Path, BoundCurves} from './Bounds'; -import type {ImageStore, ImageElement} from './ImageLoader'; -import type NodeContainer from './NodeContainer'; -import type StackingContext from './StackingContext'; -import type {TextBounds} from './TextBounds'; - -import BezierCurve from './drawing/BezierCurve'; -import Circle from './drawing/Circle'; -import Vector from './drawing/Vector'; - -import { - parsePathForBorder, - calculateContentBox, - calculatePaddingBox, - calculatePaddingBoxPath -} from './Bounds'; -import {FontMetrics} from './Font'; -import {parseGradient} from './Gradient'; -import TextContainer from './TextContainer'; - -import { - BACKGROUND_ORIGIN, - calculateBackgroungPaintingArea, - calculateBackgroundPosition, - calculateBackgroundRepeatPath, - calculateBackgroundSize -} from './parsing/background'; -import {BORDER_STYLE} from './parsing/border'; -import {TEXT_DECORATION_LINE} from './parsing/textDecoration'; - -export type RenderOptions = { - scale: number, - backgroundColor: ?Color, - imageStore: ImageStore, - fontMetrics: FontMetrics -}; - -export default class CanvasRenderer { - canvas: HTMLCanvasElement; - ctx: CanvasRenderingContext2D; - options: RenderOptions; - - constructor(canvas: HTMLCanvasElement, options: RenderOptions) { - this.canvas = canvas; - this.ctx = canvas.getContext('2d'); - this.options = options; - } - - renderNode(container: NodeContainer) { - if (container.isVisible()) { - this.renderNodeBackgroundAndBorders(container); - this.renderNodeContent(container); - } - } - - renderNodeContent(container: NodeContainer) { - this.ctx.save(); - const clipPaths = container.getClipPaths(); - if (clipPaths.length) { - clipPaths.forEach(path => { - this.path(path); - this.ctx.clip(); - }); - } - - if (container.childNodes.length) { - this.ctx.fillStyle = container.style.color.toString(); - this.ctx.font = [ - container.style.font.fontStyle, - container.style.font.fontVariant, - container.style.font.fontWeight, - container.style.font.fontSize, - container.style.font.fontFamily - ] - .join(' ') - .split(',')[0]; - container.childNodes.forEach(child => { - if (child instanceof TextContainer) { - this.renderTextNode(child); - } else { - this.path(child); - this.ctx.fill(); - } - }); - } - - if (container.image) { - const image = this.options.imageStore.get(container.image); - if (image) { - const contentBox = calculateContentBox( - container.bounds, - container.style.padding, - container.style.border - ); - const width = typeof image.width === 'number' ? image.width : contentBox.width; - const height = typeof image.height === 'number' ? image.height : contentBox.height; - this.ctx.save(); - this.path(calculatePaddingBoxPath(container.curvedBounds)); - this.ctx.clip(); - this.ctx.drawImage( - image, - 0, - 0, - width, - height, - contentBox.left, - contentBox.top, - contentBox.width, - contentBox.height - ); - this.ctx.restore(); - } - } - - this.ctx.restore(); - } - - renderNodeBackgroundAndBorders(container: NodeContainer) { - this.ctx.save(); - if (container.parent) { - const clipPaths = container.parent.getClipPaths(); - if (clipPaths.length) { - clipPaths.forEach(path => { - this.path(path); - this.ctx.clip(); - }); - } - } - - const backgroungPaintingArea = calculateBackgroungPaintingArea( - container.curvedBounds, - container.style.background.backgroundClip - ); - this.path(backgroungPaintingArea); - if (!container.style.background.backgroundColor.isTransparent()) { - this.ctx.fillStyle = container.style.background.backgroundColor.toString(); - this.ctx.fill(); - } - - this.ctx.save(); - this.ctx.clip(); - this.renderBackgroundImage(container); - this.ctx.restore(); - container.style.border.forEach((border, side) => { - this.renderBorder(border, side, container.curvedBounds); - }); - this.ctx.restore(); - } - - renderTextNode(textContainer: TextContainer) { - textContainer.bounds.forEach(text => this.renderText(text, textContainer)); - } - - renderText(text: TextBounds, textContainer: TextContainer) { - const container = textContainer.parent; - this.ctx.fillStyle = container.style.color.toString(); - if (container.style.textShadow && text.text.trim().length) { - container.style.textShadow.slice(0).reverse().forEach(textShadow => { - this.ctx.shadowColor = textShadow.color.toString(); - this.ctx.shadowOffsetX = textShadow.offsetX * this.options.scale; - this.ctx.shadowOffsetY = textShadow.offsetY * this.options.scale; - this.ctx.shadowBlur = textShadow.blur; - - this.ctx.fillText( - text.text, - text.bounds.left, - text.bounds.top + text.bounds.height - ); - }); - } else { - this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); - } - - const textDecoration = container.style.textDecoration; - if (textDecoration) { - textDecoration.textDecorationLine.forEach(textDecorationLine => { - switch (textDecorationLine) { - case TEXT_DECORATION_LINE.UNDERLINE: - // Draws a line at the baseline of the font - // TODO As some browsers display the line as more than 1px if the font-size is big, - // need to take that into account both in position and size - const {baseline} = this.options.fontMetrics.getMetrics( - container.style.font - ); - this.rectangle( - text.bounds.left, - Math.round(text.bounds.top + baseline), - text.bounds.width, - 1, - textDecoration.textDecorationColor || container.style.color - ); - break; - case TEXT_DECORATION_LINE.OVERLINE: - this.rectangle( - text.bounds.left, - Math.round(text.bounds.top), - text.bounds.width, - 1, - textDecoration.textDecorationColor || container.style.color - ); - break; - case TEXT_DECORATION_LINE.LINE_THROUGH: - // TODO try and find exact position for line-through - const {middle} = this.options.fontMetrics.getMetrics(container.style.font); - this.rectangle( - text.bounds.left, - Math.ceil(text.bounds.top + middle), - text.bounds.width, - 1, - textDecoration.textDecorationColor || container.style.color - ); - break; - } - }); - } - } - - renderBackgroundImage(container: NodeContainer) { - container.style.background.backgroundImage.reverse().forEach(backgroundImage => { - if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { - this.renderBackgroundRepeat(container, backgroundImage); - } else { - const gradient = parseGradient(backgroundImage.source, container.bounds); - if (gradient) { - const bounds = container.bounds; - const grad = this.ctx.createLinearGradient( - bounds.left + gradient.direction.x1, - bounds.top + gradient.direction.y1, - bounds.left + gradient.direction.x0, - bounds.top + gradient.direction.y0 - ); - - gradient.colorStops.forEach(colorStop => { - grad.addColorStop(colorStop.stop, colorStop.color.toString()); - }); - - this.ctx.fillStyle = grad; - this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height); - } - } - }); - } - - renderBackgroundRepeat(container: NodeContainer, background: BackgroundImage) { - const image = this.options.imageStore.get(background.source.args[0]); - if (image) { - const bounds = container.bounds; - const paddingBox = calculatePaddingBox(bounds, container.style.border); - const backgroundImageSize = calculateBackgroundSize(background, image, bounds); - - // TODO support CONTENT_BOX - const backgroundPositioningArea = - container.style.background.backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX - ? bounds - : paddingBox; - - const position = calculateBackgroundPosition( - background.position, - backgroundImageSize, - backgroundPositioningArea - ); - const path = calculateBackgroundRepeatPath( - background, - position, - backgroundImageSize, - backgroundPositioningArea, - bounds - ); - this.path(path); - const offsetX = Math.round(paddingBox.left + position.x); - const offsetY = Math.round(paddingBox.top + position.y); - this.ctx.fillStyle = this.ctx.createPattern( - this.resizeImage(image, backgroundImageSize), - 'repeat' - ); - this.ctx.translate(offsetX, offsetY); - this.ctx.fill(); - this.ctx.translate(-offsetX, -offsetY); - } - } - - resizeImage(image: ImageElement, size: Size) { - if (image.width === size.width && image.height === size.height) { - return image; - } - - const canvas = document.createElement('canvas'); - canvas.width = size.width; - canvas.height = size.height; - const ctx = canvas.getContext('2d'); - ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height); - return canvas; - } - - renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) { - if (border.borderStyle !== BORDER_STYLE.NONE && !border.borderColor.isTransparent()) { - const path = parsePathForBorder(curvePoints, side); - this.path(path); - this.ctx.fillStyle = border.borderColor.toString(); - this.ctx.fill(); - } - } - - path(path: Path) { - this.ctx.beginPath(); - if (path instanceof Circle) { - this.ctx.arc( - path.x + path.radius, - path.y + path.radius, - path.radius, - 0, - Math.PI * 2, - true - ); - } else { - path.forEach((point, index) => { - const start = point instanceof Vector ? point : point.start; - if (index === 0) { - this.ctx.moveTo(start.x, start.y); - } else { - this.ctx.lineTo(start.x, start.y); - } - - if (point instanceof BezierCurve) { - this.ctx.bezierCurveTo( - point.startControl.x, - point.startControl.y, - point.endControl.x, - point.endControl.y, - point.end.x, - point.end.y - ); - } - }); - } - - this.ctx.closePath(); - } - - rectangle(x: number, y: number, width: number, height: number, color: Color) { - this.ctx.fillStyle = color.toString(); - this.ctx.fillRect(x, y, width, height); - } - - renderStack(stack: StackingContext) { - if (stack.container.isVisible()) { - this.ctx.globalAlpha = stack.getOpacity(); - const transform = stack.container.style.transform; - if (transform !== null) { - this.ctx.save(); - this.ctx.translate( - stack.container.bounds.left + transform.transformOrigin[0].value, - stack.container.bounds.top + transform.transformOrigin[1].value - ); - this.ctx.transform( - transform.transform[0], - transform.transform[1], - transform.transform[2], - transform.transform[3], - transform.transform[4], - transform.transform[5] - ); - this.ctx.translate( - -(stack.container.bounds.left + transform.transformOrigin[0].value), - -(stack.container.bounds.top + transform.transformOrigin[1].value) - ); - } - const [ - negativeZIndex, - zeroOrAutoZIndexOrTransformedOrOpacity, - positiveZIndex, - nonPositionedFloats, - nonPositionedInlineLevel - ] = splitStackingContexts(stack); - const [inlineLevel, nonInlineLevel] = splitDescendants(stack); - - // https://www.w3.org/TR/css-position-3/#painting-order - // 1. the background and borders of the element forming the stacking context. - this.renderNodeBackgroundAndBorders(stack.container); - // 2. the child stacking contexts with negative stack levels (most negative first). - negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this); - // 3. For all its in-flow, non-positioned, block-level descendants in tree order: - this.renderNodeContent(stack.container); - nonInlineLevel.forEach(this.renderNode, this); - // 4. All non-positioned floating descendants, in tree order. For each one of these, - // treat the element as if it created a new stacking context, but any positioned descendants and descendants - // which actually create a new stacking context should be considered part of the parent stacking context, - // not this new one. - nonPositionedFloats.forEach(this.renderStack, this); - // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks. - nonPositionedInlineLevel.forEach(this.renderStack, this); - inlineLevel.forEach(this.renderNode, this); - // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories: - // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order. - // For those with 'z-index: auto', treat the element as if it created a new stacking context, - // but any positioned descendants and descendants which actually create a new stacking context should be - // considered part of the parent stacking context, not this new one. For those with 'z-index: 0', - // treat the stacking context generated atomically. - // - // All opacity descendants with opacity less than 1 - // - // All transform descendants with transform other than none - zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this); - // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index - // order (smallest first) then tree order. - positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this); - - if (transform !== null) { - this.ctx.restore(); - } - } - } - - render(stack: StackingContext): Promise { - this.ctx.scale(this.options.scale, this.options.scale); - this.ctx.textBaseline = 'bottom'; - if (this.options.backgroundColor) { - this.rectangle( - 0, - 0, - this.canvas.width, - this.canvas.height, - this.options.backgroundColor - ); - } - this.renderStack(stack); - return Promise.resolve(this.canvas); - } -} - -const splitDescendants = (stack: StackingContext): [Array, Array] => { - const inlineLevel = []; - const nonInlineLevel = []; - - const length = stack.children.length; - for (let i = 0; i < length; i++) { - let child = stack.children[i]; - if (child.isInlineLevel()) { - inlineLevel.push(child); - } else { - nonInlineLevel.push(child); - } - } - return [inlineLevel, nonInlineLevel]; -}; - -const splitStackingContexts = ( - stack: StackingContext -): [ - Array, - Array, - Array, - Array, - Array -] => { - const negativeZIndex = []; - const zeroOrAutoZIndexOrTransformedOrOpacity = []; - const positiveZIndex = []; - const nonPositionedFloats = []; - const nonPositionedInlineLevel = []; - const length = stack.contexts.length; - for (let i = 0; i < length; i++) { - let child = stack.contexts[i]; - if ( - child.container.isPositioned() || - child.container.style.opacity < 1 || - child.container.isTransformed() - ) { - if (child.container.style.zIndex.order < 0) { - negativeZIndex.push(child); - } else if (child.container.style.zIndex.order > 0) { - positiveZIndex.push(child); - } else { - zeroOrAutoZIndexOrTransformedOrOpacity.push(child); - } - } else { - if (child.container.isFloating()) { - nonPositionedFloats.push(child); - } else { - nonPositionedInlineLevel.push(child); - } - } - } - return [ - negativeZIndex, - zeroOrAutoZIndexOrTransformedOrOpacity, - positiveZIndex, - nonPositionedFloats, - nonPositionedInlineLevel - ]; -}; - -const sortByZIndex = (a: StackingContext, b: StackingContext): number => { - if (a.container.style.zIndex.order > b.container.style.zIndex.order) { - return 1; - } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) { - return -1; - } - return 0; -}; diff --git a/src/Gradient.js b/src/Gradient.js index 3c01a7524..08b52a535 100644 --- a/src/Gradient.js +++ b/src/Gradient.js @@ -27,7 +27,10 @@ export type Gradient = { colorStops: Array }; -export const parseGradient = ({args, method, prefix}: BackgroundSource, bounds: Bounds) => { +export const parseGradient = ( + {args, method, prefix}: BackgroundSource, + bounds: Bounds +): ?Gradient => { if (method === 'linear-gradient') { return parseLinearGradient(args, bounds); } diff --git a/src/Renderer.js b/src/Renderer.js new file mode 100644 index 000000000..0c3759ddb --- /dev/null +++ b/src/Renderer.js @@ -0,0 +1,364 @@ +/* @flow */ +'use strict'; + +import type Color from './Color'; +import type Size from './drawing/Size'; +import type Logger from './Logger'; + +import type {BackgroundImage} from './parsing/background'; +import type {Border, BorderSide} from './parsing/border'; +import type {Font} from './parsing/font'; +import type {TextDecoration} from './parsing/textDecoration'; +import type {TextShadow} from './parsing/textShadow'; +import type {Matrix} from './parsing/transform'; + +import type {Path, BoundCurves} from './Bounds'; +import type {Gradient} from './Gradient'; +import type {ImageStore, ImageElement} from './ImageLoader'; +import type NodeContainer from './NodeContainer'; +import type StackingContext from './StackingContext'; +import type {TextBounds} from './TextBounds'; + +import { + Bounds, + parsePathForBorder, + calculateContentBox, + calculatePaddingBox, + calculatePaddingBoxPath +} from './Bounds'; +import {FontMetrics} from './Font'; +import {parseGradient} from './Gradient'; +import TextContainer from './TextContainer'; + +import { + BACKGROUND_ORIGIN, + calculateBackgroungPaintingArea, + calculateBackgroundPosition, + calculateBackgroundRepeatPath, + calculateBackgroundSize +} from './parsing/background'; +import {BORDER_STYLE} from './parsing/border'; + +export type RenderOptions = { + scale: number, + backgroundColor: ?Color, + imageStore: ImageStore, + fontMetrics: FontMetrics, + logger: Logger, + width: number, + height: number +}; + +export interface RenderTarget { + clip(clipPaths: Array, callback: () => void): void, + + drawImage(image: ImageElement, source: Bounds, destination: Bounds): void, + + drawShape(path: Path, color: Color): void, + + fill(color: Color): void, + + getTarget(): Promise, + + rectangle(x: number, y: number, width: number, height: number, color: Color): void, + + renderLinearGradient(bounds: Bounds, gradient: Gradient): void, + + renderRepeat( + path: Path, + image: ImageElement, + imageSize: Size, + offsetX: number, + offsetY: number + ): void, + + renderTextNode( + textBounds: Array, + color: Color, + font: Font, + textDecoration: TextDecoration, + textShadows: Array | null + ): void, + + setOpacity(opacity: number): void, + + transform(offsetX: number, offsetY: number, matrix: Matrix, callback: () => void): void +} + +export default class Renderer { + target: RenderTarget; + options: RenderOptions; + + constructor(target: RenderTarget, options: RenderOptions) { + this.target = target; + this.options = options; + } + + renderNode(container: NodeContainer) { + if (container.isVisible()) { + this.renderNodeBackgroundAndBorders(container); + this.renderNodeContent(container); + } + } + + renderNodeContent(container: NodeContainer) { + this.target.clip(container.getClipPaths(), () => { + if (container.childNodes.length) { + container.childNodes.forEach(child => { + if (child instanceof TextContainer) { + const style = child.parent.style; + this.target.renderTextNode( + child.bounds, + style.color, + style.font, + style.textDecoration, + style.textShadow + ); + } else { + this.target.drawShape(child, container.style.color); + } + }); + } + + if (container.image) { + const image = this.options.imageStore.get(container.image); + if (image) { + const contentBox = calculateContentBox( + container.bounds, + container.style.padding, + container.style.border + ); + const width = typeof image.width === 'number' ? image.width : contentBox.width; + const height = + typeof image.height === 'number' ? image.height : contentBox.height; + this.target.clip([calculatePaddingBoxPath(container.curvedBounds)], () => { + this.target.drawImage(image, new Bounds(0, 0, width, height), contentBox); + }); + } + } + }); + } + + renderNodeBackgroundAndBorders(container: NodeContainer) { + this.target.clip(container.parent ? container.parent.getClipPaths() : [], () => { + const backgroundPaintingArea = calculateBackgroungPaintingArea( + container.curvedBounds, + container.style.background.backgroundClip + ); + this.target.clip([backgroundPaintingArea], () => { + if (!container.style.background.backgroundColor.isTransparent()) { + this.target.fill(container.style.background.backgroundColor); + } + + this.renderBackgroundImage(container); + }); + + container.style.border.forEach((border, side) => { + this.renderBorder(border, side, container.curvedBounds); + }); + }); + } + + renderBackgroundImage(container: NodeContainer) { + container.style.background.backgroundImage.reverse().forEach(backgroundImage => { + if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { + this.renderBackgroundRepeat(container, backgroundImage); + } else { + const gradient = parseGradient(backgroundImage.source, container.bounds); + if (gradient) { + const bounds = container.bounds; + this.target.renderLinearGradient(bounds, gradient); + } + } + }); + } + + renderBackgroundRepeat(container: NodeContainer, background: BackgroundImage) { + const image = this.options.imageStore.get(background.source.args[0]); + if (image) { + const bounds = container.bounds; + const paddingBox = calculatePaddingBox(bounds, container.style.border); + const backgroundImageSize = calculateBackgroundSize(background, image, bounds); + + // TODO support CONTENT_BOX + const backgroundPositioningArea = + container.style.background.backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX + ? bounds + : paddingBox; + + const position = calculateBackgroundPosition( + background.position, + backgroundImageSize, + backgroundPositioningArea + ); + const path = calculateBackgroundRepeatPath( + background, + position, + backgroundImageSize, + backgroundPositioningArea, + bounds + ); + + const offsetX = Math.round(paddingBox.left + position.x); + const offsetY = Math.round(paddingBox.top + position.y); + this.target.renderRepeat(path, image, backgroundImageSize, offsetX, offsetY); + } + } + + renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) { + if (border.borderStyle !== BORDER_STYLE.NONE && !border.borderColor.isTransparent()) { + this.target.drawShape(parsePathForBorder(curvePoints, side), border.borderColor); + } + } + + renderStack(stack: StackingContext) { + if (stack.container.isVisible()) { + this.target.setOpacity(stack.getOpacity()); + const transform = stack.container.style.transform; + if (transform !== null) { + this.target.transform( + stack.container.bounds.left + transform.transformOrigin[0].value, + stack.container.bounds.top + transform.transformOrigin[1].value, + transform.transform, + () => this.renderStackContent(stack) + ); + } else { + this.renderStackContent(stack); + } + } + } + + renderStackContent(stack: StackingContext) { + const [ + negativeZIndex, + zeroOrAutoZIndexOrTransformedOrOpacity, + positiveZIndex, + nonPositionedFloats, + nonPositionedInlineLevel + ] = splitStackingContexts(stack); + const [inlineLevel, nonInlineLevel] = splitDescendants(stack); + + // https://www.w3.org/TR/css-position-3/#painting-order + // 1. the background and borders of the element forming the stacking context. + this.renderNodeBackgroundAndBorders(stack.container); + // 2. the child stacking contexts with negative stack levels (most negative first). + negativeZIndex.sort(sortByZIndex).forEach(this.renderStack, this); + // 3. For all its in-flow, non-positioned, block-level descendants in tree order: + this.renderNodeContent(stack.container); + nonInlineLevel.forEach(this.renderNode, this); + // 4. All non-positioned floating descendants, in tree order. For each one of these, + // treat the element as if it created a new stacking context, but any positioned descendants and descendants + // which actually create a new stacking context should be considered part of the parent stacking context, + // not this new one. + nonPositionedFloats.forEach(this.renderStack, this); + // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks. + nonPositionedInlineLevel.forEach(this.renderStack, this); + inlineLevel.forEach(this.renderNode, this); + // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories: + // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order. + // For those with 'z-index: auto', treat the element as if it created a new stacking context, + // but any positioned descendants and descendants which actually create a new stacking context should be + // considered part of the parent stacking context, not this new one. For those with 'z-index: 0', + // treat the stacking context generated atomically. + // + // All opacity descendants with opacity less than 1 + // + // All transform descendants with transform other than none + zeroOrAutoZIndexOrTransformedOrOpacity.forEach(this.renderStack, this); + // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index + // order (smallest first) then tree order. + positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this); + } + + render(stack: StackingContext): Promise { + if (this.options.backgroundColor) { + this.target.rectangle( + 0, + 0, + this.options.width, + this.options.height, + this.options.backgroundColor + ); + } + this.renderStack(stack); + const target = this.target.getTarget(); + if (__DEV__) { + return target.then(output => { + this.options.logger.log(`Render completed`); + return output; + }); + } + return target; + } +} + +const splitDescendants = (stack: StackingContext): [Array, Array] => { + const inlineLevel = []; + const nonInlineLevel = []; + + const length = stack.children.length; + for (let i = 0; i < length; i++) { + let child = stack.children[i]; + if (child.isInlineLevel()) { + inlineLevel.push(child); + } else { + nonInlineLevel.push(child); + } + } + return [inlineLevel, nonInlineLevel]; +}; + +const splitStackingContexts = ( + stack: StackingContext +): [ + Array, + Array, + Array, + Array, + Array +] => { + const negativeZIndex = []; + const zeroOrAutoZIndexOrTransformedOrOpacity = []; + const positiveZIndex = []; + const nonPositionedFloats = []; + const nonPositionedInlineLevel = []; + const length = stack.contexts.length; + for (let i = 0; i < length; i++) { + let child = stack.contexts[i]; + if ( + child.container.isPositioned() || + child.container.style.opacity < 1 || + child.container.isTransformed() + ) { + if (child.container.style.zIndex.order < 0) { + negativeZIndex.push(child); + } else if (child.container.style.zIndex.order > 0) { + positiveZIndex.push(child); + } else { + zeroOrAutoZIndexOrTransformedOrOpacity.push(child); + } + } else { + if (child.container.isFloating()) { + nonPositionedFloats.push(child); + } else { + nonPositionedInlineLevel.push(child); + } + } + } + return [ + negativeZIndex, + zeroOrAutoZIndexOrTransformedOrOpacity, + positiveZIndex, + nonPositionedFloats, + nonPositionedInlineLevel + ]; +}; + +const sortByZIndex = (a: StackingContext, b: StackingContext): number => { + if (a.container.style.zIndex.order > b.container.style.zIndex.order) { + return 1; + } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) { + return -1; + } + return 0; +}; diff --git a/src/index.js b/src/index.js index c072e387f..1c1172a84 100644 --- a/src/index.js +++ b/src/index.js @@ -2,7 +2,8 @@ 'use strict'; import {NodeParser} from './NodeParser'; -import CanvasRenderer from './CanvasRenderer'; +import Renderer from './Renderer'; +import CanvasRenderer from './renderer/CanvasRenderer'; import Logger from './Logger'; import ImageLoader from './ImageLoader'; import {Bounds, parseDocumentSize} from './Bounds'; @@ -110,12 +111,19 @@ const html2canvas = (element: HTMLElement, config: Options): Promise; export type TextDecorationLine = $Values; type TextDecorationLineType = Array | null; -export type TextDecoration = - | { - textDecorationLine: Array, - textDecorationStyle: TextDecorationStyle, - textDecorationColor: Color | null - } - | $Values; +export type TextDecoration = { + textDecorationLine: Array, + textDecorationStyle: TextDecorationStyle, + textDecorationColor: Color | null +} | null; const parseLine = (line: string): TextDecorationLine => { switch (line) { diff --git a/src/renderer/CanvasRenderer.js b/src/renderer/CanvasRenderer.js new file mode 100644 index 000000000..601f91246 --- /dev/null +++ b/src/renderer/CanvasRenderer.js @@ -0,0 +1,266 @@ +/* @flow */ +'use strict'; + +import type {RenderTarget, RenderOptions} from '../Renderer'; + +import type Color from '../Color'; +import type Size from '../drawing/Size'; + +import type {Font} from '../parsing/font'; +import type {TextDecoration} from '../parsing/textDecoration'; +import type {TextShadow} from '../parsing/textShadow'; +import type {Matrix} from '../parsing/transform'; + +import type {Path, Bounds} from '../Bounds'; +import type {ImageElement} from '../ImageLoader'; +import type {Gradient} from '../Gradient'; +import type {TextBounds} from '../TextBounds'; + +import BezierCurve from '../drawing/BezierCurve'; +import Circle from '../drawing/Circle'; +import Vector from '../drawing/Vector'; + +import {TEXT_DECORATION_LINE} from '../parsing/textDecoration'; + +export default class CanvasRenderer implements RenderTarget { + canvas: HTMLCanvasElement; + ctx: CanvasRenderingContext2D; + options: RenderOptions; + + constructor(canvas: HTMLCanvasElement, options: RenderOptions) { + this.canvas = canvas; + this.ctx = canvas.getContext('2d'); + this.options = options; + + this.ctx.scale(this.options.scale, this.options.scale); + this.ctx.textBaseline = 'bottom'; + options.logger.log(`Canvas renderer initialized with scale ${this.options.scale}`); + } + + clip(clipPaths: Array, callback: () => void) { + if (clipPaths.length) { + this.ctx.save(); + clipPaths.forEach(path => { + this.path(path); + this.ctx.clip(); + }); + } + + callback(); + + if (clipPaths.length) { + this.ctx.restore(); + } + } + + drawImage(image: ImageElement, source: Bounds, destination: Bounds) { + this.ctx.drawImage( + image, + source.left, + source.top, + source.width, + source.height, + destination.left, + destination.top, + destination.width, + destination.height + ); + } + + drawShape(path: Path, color: Color) { + this.path(path); + this.ctx.fillStyle = color.toString(); + this.ctx.fill(); + } + + fill(color: Color) { + this.ctx.fillStyle = color.toString(); + this.ctx.fill(); + } + + getTarget(): Promise { + return Promise.resolve(this.canvas); + } + + path(path: Path) { + this.ctx.beginPath(); + if (path instanceof Circle) { + this.ctx.arc( + path.x + path.radius, + path.y + path.radius, + path.radius, + 0, + Math.PI * 2, + true + ); + } else { + path.forEach((point, index) => { + const start = point instanceof Vector ? point : point.start; + if (index === 0) { + this.ctx.moveTo(start.x, start.y); + } else { + this.ctx.lineTo(start.x, start.y); + } + + if (point instanceof BezierCurve) { + this.ctx.bezierCurveTo( + point.startControl.x, + point.startControl.y, + point.endControl.x, + point.endControl.y, + point.end.x, + point.end.y + ); + } + }); + } + + this.ctx.closePath(); + } + + rectangle(x: number, y: number, width: number, height: number, color: Color) { + this.ctx.fillStyle = color.toString(); + this.ctx.fillRect(x, y, width, height); + } + + renderLinearGradient(bounds: Bounds, gradient: Gradient) { + const linearGradient = this.ctx.createLinearGradient( + bounds.left + gradient.direction.x1, + bounds.top + gradient.direction.y1, + bounds.left + gradient.direction.x0, + bounds.top + gradient.direction.y0 + ); + + gradient.colorStops.forEach(colorStop => { + linearGradient.addColorStop(colorStop.stop, colorStop.color.toString()); + }); + + this.ctx.fillStyle = linearGradient; + this.ctx.fillRect(bounds.left, bounds.top, bounds.width, bounds.height); + } + + renderRepeat( + path: Path, + image: ImageElement, + imageSize: Size, + offsetX: number, + offsetY: number + ) { + this.path(path); + this.ctx.fillStyle = this.ctx.createPattern(this.resizeImage(image, imageSize), 'repeat'); + this.ctx.translate(offsetX, offsetY); + this.ctx.fill(); + this.ctx.translate(-offsetX, -offsetY); + } + + renderTextNode( + textBounds: Array, + color: Color, + font: Font, + textDecoration: TextDecoration, + textShadows: Array | null + ) { + this.ctx.font = [ + font.fontStyle, + font.fontVariant, + font.fontWeight, + font.fontSize, + font.fontFamily + ] + .join(' ') + .split(',')[0]; + + textBounds.forEach(text => { + this.ctx.fillStyle = color.toString(); + if (textShadows && text.text.trim().length) { + textShadows.slice(0).reverse().forEach(textShadow => { + this.ctx.shadowColor = textShadow.color.toString(); + this.ctx.shadowOffsetX = textShadow.offsetX * this.options.scale; + this.ctx.shadowOffsetY = textShadow.offsetY * this.options.scale; + this.ctx.shadowBlur = textShadow.blur; + + this.ctx.fillText( + text.text, + text.bounds.left, + text.bounds.top + text.bounds.height + ); + }); + } else { + this.ctx.fillText( + text.text, + text.bounds.left, + text.bounds.top + text.bounds.height + ); + } + + if (textDecoration !== null) { + const textDecorationColor = textDecoration.textDecorationColor || color; + textDecoration.textDecorationLine.forEach(textDecorationLine => { + switch (textDecorationLine) { + case TEXT_DECORATION_LINE.UNDERLINE: + // Draws a line at the baseline of the font + // TODO As some browsers display the line as more than 1px if the font-size is big, + // need to take that into account both in position and size + const {baseline} = this.options.fontMetrics.getMetrics(font); + this.rectangle( + text.bounds.left, + Math.round(text.bounds.top + baseline), + text.bounds.width, + 1, + textDecorationColor + ); + break; + case TEXT_DECORATION_LINE.OVERLINE: + this.rectangle( + text.bounds.left, + Math.round(text.bounds.top), + text.bounds.width, + 1, + textDecorationColor + ); + break; + case TEXT_DECORATION_LINE.LINE_THROUGH: + // TODO try and find exact position for line-through + const {middle} = this.options.fontMetrics.getMetrics(font); + this.rectangle( + text.bounds.left, + Math.ceil(text.bounds.top + middle), + text.bounds.width, + 1, + textDecorationColor + ); + break; + } + }); + } + }); + } + + resizeImage(image: ImageElement, size: Size): ImageElement { + if (image.width === size.width && image.height === size.height) { + return image; + } + + const canvas = this.canvas.ownerDocument.createElement('canvas'); + canvas.width = size.width; + canvas.height = size.height; + const ctx = canvas.getContext('2d'); + ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, size.width, size.height); + return canvas; + } + + setOpacity(opacity: number) { + this.ctx.globalAlpha = opacity; + } + + transform(offsetX: number, offsetY: number, matrix: Matrix, callback: () => void) { + this.ctx.save(); + this.ctx.translate(offsetX, offsetY); + this.ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + this.ctx.translate(-offsetX, -offsetY); + + callback(); + + this.ctx.restore(); + } +} From 93f08c754732d129d61e490d0c9100c1e7b59e4e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 7 Aug 2017 00:26:09 +0800 Subject: [PATCH 045/377] Implement RefTestRenderer --- src/Bounds.js | 4 +- src/NodeContainer.js | 6 +- src/Renderer.js | 47 ++++-- src/drawing/BezierCurve.js | 6 +- src/drawing/Circle.js | 6 +- src/drawing/Path.js | 20 +++ src/drawing/Vector.js | 6 +- src/index.js | 33 +++-- src/parsing/background.js | 4 +- src/parsing/textDecoration.js | 4 +- src/renderer/CanvasRenderer.js | 50 ++++--- src/renderer/RefTestRenderer.js | 249 ++++++++++++++++++++++++++++++++ webpack.config.js | 58 +++++--- 13 files changed, 409 insertions(+), 84 deletions(-) create mode 100644 src/drawing/Path.js create mode 100644 src/renderer/RefTestRenderer.js diff --git a/src/Bounds.js b/src/Bounds.js index 80f49debc..255c6de17 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -4,13 +4,11 @@ import type {Border, BorderSide} from './parsing/border'; import type {BorderRadius} from './parsing/borderRadius'; import type {Padding} from './parsing/padding'; -import type Circle from './drawing/Circle'; +import type {Path} from './drawing/Path'; import Vector from './drawing/Vector'; import BezierCurve from './drawing/BezierCurve'; -export type Path = Array | Circle; - const TOP = 0; const RIGHT = 1; const BOTTOM = 2; diff --git a/src/NodeContainer.js b/src/NodeContainer.js index cf62e599f..c8cad460f 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -17,9 +17,9 @@ import type {Transform} from './parsing/transform'; import type {Visibility} from './parsing/visibility'; import type {zIndex} from './parsing/zIndex'; -import type {Bounds, BoundCurves, Path} from './Bounds'; +import type {Bounds, BoundCurves} from './Bounds'; import type ImageLoader from './ImageLoader'; - +import type {Path} from './drawing/Path'; import type TextContainer from './TextContainer'; import Color from './Color'; @@ -64,7 +64,7 @@ type StyleDeclaration = { overflow: Overflow, padding: Padding, position: Position, - textDecoration: TextDecoration, + textDecoration: TextDecoration | null, textShadow: Array | null, textTransform: TextTransform, transform: Transform, diff --git a/src/Renderer.js b/src/Renderer.js index 0c3759ddb..0aecae4c3 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -2,6 +2,7 @@ 'use strict'; import type Color from './Color'; +import type {Path} from './drawing/Path'; import type Size from './drawing/Size'; import type Logger from './Logger'; @@ -12,7 +13,7 @@ import type {TextDecoration} from './parsing/textDecoration'; import type {TextShadow} from './parsing/textShadow'; import type {Matrix} from './parsing/transform'; -import type {Path, BoundCurves} from './Bounds'; +import type {BoundCurves} from './Bounds'; import type {Gradient} from './Gradient'; import type {ImageStore, ImageElement} from './ImageLoader'; import type NodeContainer from './NodeContainer'; @@ -49,7 +50,7 @@ export type RenderOptions = { height: number }; -export interface RenderTarget { +export interface RenderTarget { clip(clipPaths: Array, callback: () => void): void, drawImage(image: ImageElement, source: Bounds, destination: Bounds): void, @@ -58,10 +59,12 @@ export interface RenderTarget { fill(color: Color): void, - getTarget(): Promise, + getTarget(): Promise, rectangle(x: number, y: number, width: number, height: number, color: Color): void, + render(options: RenderOptions): void, + renderLinearGradient(bounds: Bounds, gradient: Gradient): void, renderRepeat( @@ -76,7 +79,7 @@ export interface RenderTarget { textBounds: Array, color: Color, font: Font, - textDecoration: TextDecoration, + textDecoration: TextDecoration | null, textShadows: Array | null ): void, @@ -86,12 +89,14 @@ export interface RenderTarget { } export default class Renderer { - target: RenderTarget; + target: RenderTarget<*>; options: RenderOptions; + _opacity: ?number; - constructor(target: RenderTarget, options: RenderOptions) { + constructor(target: RenderTarget<*>, options: RenderOptions) { this.target = target; this.options = options; + target.render(options); } renderNode(container: NodeContainer) { @@ -102,7 +107,7 @@ export default class Renderer { } renderNodeContent(container: NodeContainer) { - this.target.clip(container.getClipPaths(), () => { + const callback = () => { if (container.childNodes.length) { container.childNodes.forEach(child => { if (child instanceof TextContainer) { @@ -136,11 +141,17 @@ export default class Renderer { }); } } - }); + }; + const paths = container.getClipPaths(); + if (paths.length) { + this.target.clip(paths, callback); + } else { + callback(); + } } renderNodeBackgroundAndBorders(container: NodeContainer) { - this.target.clip(container.parent ? container.parent.getClipPaths() : [], () => { + const callback = () => { const backgroundPaintingArea = calculateBackgroungPaintingArea( container.curvedBounds, container.style.background.backgroundClip @@ -156,7 +167,14 @@ export default class Renderer { container.style.border.forEach((border, side) => { this.renderBorder(border, side, container.curvedBounds); }); - }); + }; + + const paths = container.parent ? container.parent.getClipPaths() : []; + if (paths.length) { + this.target.clip(paths, callback); + } else { + callback(); + } } renderBackgroundImage(container: NodeContainer) { @@ -213,7 +231,12 @@ export default class Renderer { renderStack(stack: StackingContext) { if (stack.container.isVisible()) { - this.target.setOpacity(stack.getOpacity()); + const opacity = stack.getOpacity(); + if (opacity !== this._opacity) { + this.target.setOpacity(stack.getOpacity()); + this._opacity = opacity; + } + const transform = stack.container.style.transform; if (transform !== null) { this.target.transform( @@ -270,7 +293,7 @@ export default class Renderer { positiveZIndex.sort(sortByZIndex).forEach(this.renderStack, this); } - render(stack: StackingContext): Promise { + render(stack: StackingContext): Promise<*> { if (this.options.backgroundColor) { this.target.rectangle( 0, diff --git a/src/drawing/BezierCurve.js b/src/drawing/BezierCurve.js index 122209ac7..2861e83cf 100644 --- a/src/drawing/BezierCurve.js +++ b/src/drawing/BezierCurve.js @@ -1,18 +1,22 @@ /* @flow */ 'use strict'; +import type {Drawable} from './Path'; +import {PATH} from './Path'; import Vector from './Vector'; const lerp = (a: Vector, b: Vector, t: number): Vector => { return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t); }; -export default class BezierCurve { +export default class BezierCurve implements Drawable<1> { + type: 1; start: Vector; startControl: Vector; endControl: Vector; end: Vector; constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) { + this.type = PATH.BEZIER_CURVE; this.start = start; this.startControl = startControl; this.endControl = endControl; diff --git a/src/drawing/Circle.js b/src/drawing/Circle.js index 969c49daf..06ad01071 100644 --- a/src/drawing/Circle.js +++ b/src/drawing/Circle.js @@ -1,12 +1,16 @@ /* @flow */ 'use strict'; +import type {Drawable} from './Path'; +import {PATH} from './Path'; -export default class Circle { +export default class Circle implements Drawable<2> { + type: 2; x: number; y: number; radius: number; constructor(x: number, y: number, radius: number) { + this.type = PATH.CIRCLE; this.x = x; this.y = y; this.radius = radius; diff --git a/src/drawing/Path.js b/src/drawing/Path.js new file mode 100644 index 000000000..c87d8ce4e --- /dev/null +++ b/src/drawing/Path.js @@ -0,0 +1,20 @@ +/* @flow */ +'use strict'; + +import type Vector from './Vector'; +import type BezierCurve from './BezierCurve'; +import type Circle from './Circle'; + +export const PATH = { + VECTOR: 0, + BEZIER_CURVE: 1, + CIRCLE: 2 +}; + +export type PathType = $Values; + +export interface Drawable { + type: A +} + +export type Path = Array | Circle; diff --git a/src/drawing/Vector.js b/src/drawing/Vector.js index 5f97473aa..ecce15f87 100644 --- a/src/drawing/Vector.js +++ b/src/drawing/Vector.js @@ -1,11 +1,15 @@ /* @flow */ 'use strict'; +import type {Drawable} from './Path'; +import {PATH} from './Path'; -export default class Vector { +export default class Vector implements Drawable<0> { + type: 0; x: number; y: number; constructor(x: number, y: number) { + this.type = PATH.VECTOR; this.x = x; this.y = y; if (__DEV__) { diff --git a/src/index.js b/src/index.js index 1c1172a84..8e2bfcea8 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,8 @@ /* @flow */ 'use strict'; +import type {RenderTarget} from './Renderer'; + import {NodeParser} from './NodeParser'; import Renderer from './Renderer'; import CanvasRenderer from './renderer/CanvasRenderer'; @@ -19,12 +21,13 @@ export type Options = { proxy: ?string, removeContainer: ?boolean, scale: number, + target: RenderTarget<*> | Array>, type: ?string, windowWidth: number, windowHeight: number }; -const html2canvas = (element: HTMLElement, config: Options): Promise => { +const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { if (typeof console === 'object' && typeof console.log === 'function') { console.log(`html2canvas ${__VERSION__}`); } @@ -37,11 +40,11 @@ const html2canvas = (element: HTMLElement, config: Options): Promise { + const renderer = new Renderer(target, renderOptions); + return renderer.render(stack); + }) + ); + } else { + const renderer = new Renderer(options.target, renderOptions); + return renderer.render(stack); + } }); }); @@ -137,4 +138,6 @@ const html2canvas = (element: HTMLElement, config: Options): Promise, textDecorationStyle: TextDecorationStyle, textDecorationColor: Color | null -} | null; +}; const parseLine = (line: string): TextDecorationLine => { switch (line) { @@ -65,7 +65,7 @@ const parseTextDecorationStyle = (style: string): TextDecorationStyle => { return TEXT_DECORATION_STYLE.SOLID; }; -export const parseTextDecoration = (style: CSSStyleDeclaration): TextDecoration => { +export const parseTextDecoration = (style: CSSStyleDeclaration): TextDecoration | null => { const textDecorationLine = parseTextDecorationLine( style.textDecorationLine ? style.textDecorationLine : style.textDecoration ); diff --git a/src/renderer/CanvasRenderer.js b/src/renderer/CanvasRenderer.js index 601f91246..081f2265d 100644 --- a/src/renderer/CanvasRenderer.js +++ b/src/renderer/CanvasRenderer.js @@ -2,8 +2,8 @@ 'use strict'; import type {RenderTarget, RenderOptions} from '../Renderer'; - import type Color from '../Color'; +import type {Path} from '../drawing/Path'; import type Size from '../drawing/Size'; import type {Font} from '../parsing/font'; @@ -11,26 +11,30 @@ import type {TextDecoration} from '../parsing/textDecoration'; import type {TextShadow} from '../parsing/textShadow'; import type {Matrix} from '../parsing/transform'; -import type {Path, Bounds} from '../Bounds'; +import type {Bounds} from '../Bounds'; import type {ImageElement} from '../ImageLoader'; import type {Gradient} from '../Gradient'; import type {TextBounds} from '../TextBounds'; -import BezierCurve from '../drawing/BezierCurve'; -import Circle from '../drawing/Circle'; -import Vector from '../drawing/Vector'; - +import {PATH} from '../drawing/Path'; import {TEXT_DECORATION_LINE} from '../parsing/textDecoration'; -export default class CanvasRenderer implements RenderTarget { +export default class CanvasRenderer implements RenderTarget { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; options: RenderOptions; - constructor(canvas: HTMLCanvasElement, options: RenderOptions) { - this.canvas = canvas; - this.ctx = canvas.getContext('2d'); + constructor(canvas: ?HTMLCanvasElement) { + this.canvas = canvas ? canvas : document.createElement('canvas'); + } + + render(options: RenderOptions) { + this.ctx = this.canvas.getContext('2d'); this.options = options; + this.canvas.width = Math.floor(options.width * options.scale); + this.canvas.height = Math.floor(options.height * options.scale); + this.canvas.style.width = `${options.width}px`; + this.canvas.style.height = `${options.height}px`; this.ctx.scale(this.options.scale, this.options.scale); this.ctx.textBaseline = 'bottom'; @@ -84,25 +88,16 @@ export default class CanvasRenderer implements RenderTarget { path(path: Path) { this.ctx.beginPath(); - if (path instanceof Circle) { - this.ctx.arc( - path.x + path.radius, - path.y + path.radius, - path.radius, - 0, - Math.PI * 2, - true - ); - } else { + if (Array.isArray(path)) { path.forEach((point, index) => { - const start = point instanceof Vector ? point : point.start; + const start = point.type === PATH.VECTOR ? point : point.start; if (index === 0) { this.ctx.moveTo(start.x, start.y); } else { this.ctx.lineTo(start.x, start.y); } - if (point instanceof BezierCurve) { + if (point.type === PATH.BEZIER_CURVE) { this.ctx.bezierCurveTo( point.startControl.x, point.startControl.y, @@ -113,6 +108,15 @@ export default class CanvasRenderer implements RenderTarget { ); } }); + } else { + this.ctx.arc( + path.x + path.radius, + path.y + path.radius, + path.radius, + 0, + Math.PI * 2, + true + ); } this.ctx.closePath(); @@ -157,7 +161,7 @@ export default class CanvasRenderer implements RenderTarget { textBounds: Array, color: Color, font: Font, - textDecoration: TextDecoration, + textDecoration: TextDecoration | null, textShadows: Array | null ) { this.ctx.font = [ diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js new file mode 100644 index 000000000..c8152cb42 --- /dev/null +++ b/src/renderer/RefTestRenderer.js @@ -0,0 +1,249 @@ +/* @flow */ +'use strict'; + +import type {RenderTarget, RenderOptions} from '../Renderer'; +import type Color from '../Color'; +import type {Path} from '../drawing/Path'; +import type Size from '../drawing/Size'; + +import type {Font} from '../parsing/font'; +import type { + TextDecoration, + TextDecorationStyle, + TextDecorationLine +} from '../parsing/textDecoration'; +import type {TextShadow} from '../parsing/textShadow'; +import type {Matrix} from '../parsing/transform'; + +import type {Bounds} from '../Bounds'; +import type {ImageElement} from '../ImageLoader'; +import type {Gradient} from '../Gradient'; +import type {TextBounds} from '../TextBounds'; + +import {TEXT_DECORATION_STYLE, TEXT_DECORATION_LINE} from '../parsing/textDecoration'; +import {PATH} from '../drawing/Path'; + +class RefTestRenderer implements RenderTarget { + options: RenderOptions; + indent: number; + lines: Array; + + render(options: RenderOptions) { + this.options = options; + this.indent = 0; + this.lines = []; + options.logger.log(`RefTest renderer initialized`); + } + + clip(clipPaths: Array, callback: () => void) { + this.writeLine(`Clip ${clipPaths.map(this.formatPath, this).join(', ')}`); + this.indent += 2; + callback(); + this.indent -= 2; + } + + drawImage(image: ImageElement, source: Bounds, destination: Bounds) { + this.writeLine( + `Draw image ${this.formatImage(image)} (source: ${this.formatBounds( + source + )} (destination: ${this.formatBounds(source)})` + ); + } + + drawShape(path: Path, color: Color) { + this.writeLine(`Shape ${color.toString()} ${this.formatPath(path)}`); + } + + fill(color: Color) { + this.writeLine(`Fill ${color.toString()}`); + } + + getTarget(): Promise { + return Promise.resolve(this.lines.join('\n')); + } + + rectangle(x: number, y: number, width: number, height: number, color: Color) { + const list = [x, y, width, height].map(v => Math.round(v)).join(', '); + this.writeLine(`Rectangle [${list}] ${color.toString()}`); + } + + formatBounds(bounds: Bounds): string { + const list = [bounds.left, bounds.top, bounds.width, bounds.height]; + return `[${list.map(v => Math.round(v)).join(', ')}]`; + } + + formatImage(image: ImageElement): string { + // $FlowFixMe + return image.tagName === 'CANVAS' ? 'Canvas' : `Image src="${image.src}"`; + } + + formatPath(path: Path): string { + if (!Array.isArray(path)) { + return `Circle(x: ${Math.round(path.x)}, y: ${Math.round(path.y)}, r: ${Math.round( + path.radius + )})`; + } + const string = path + .map(v => { + if (v.type === PATH.VECTOR) { + return `Vector(x: ${Math.round(v.x)}, y: ${Math.round(v.y)}))`; + } + if (v.type === PATH.BEZIER_CURVE) { + const values = [ + `x0: ${Math.round(v.start.x)}`, + `y0: ${Math.round(v.start.y)}`, + `x1: ${Math.round(v.end.x)}`, + `y1: ${Math.round(v.end.y)}`, + `cx0: ${Math.round(v.startControl.x)}`, + `cy0: ${Math.round(v.startControl.y)}`, + `cx1: ${Math.round(v.endControl.x)}`, + `cy1: ${Math.round(v.endControl.y)}` + ]; + return `BezierCurve(${values.join(', ')})`; + } + }) + .join(', '); + return `Path (${string})`; + } + + renderLinearGradient(bounds: Bounds, gradient: Gradient) { + const direction = [ + `x0: ${Math.round(gradient.direction.x0)}`, + `x1: ${Math.round(gradient.direction.x1)}`, + `y0: ${Math.round(gradient.direction.y0)}`, + `y1: ${Math.round(gradient.direction.y1)}` + ]; + + const stops = gradient.colorStops.map(stop => `${stop.color.toString()} ${stop.stop}px`); + + this.writeLine( + `${this.formatBounds(bounds)} linear-gradient(${direction.join(', ')} ${stops.join( + ', ' + )})` + ); + } + + renderRepeat( + path: Path, + image: ImageElement, + imageSize: Size, + offsetX: number, + offsetY: number + ) { + this.writeLine( + `Repeat ${this.formatImage( + image + )} [${offsetX}, ${offsetY}] Size (${imageSize.width}, ${imageSize.height}) ${this.formatPath( + path + )}` + ); + } + + renderTextNode( + textBounds: Array, + color: Color, + font: Font, + textDecoration: TextDecoration | null, + textShadows: Array | null + ) { + const fontString = [ + font.fontStyle, + font.fontVariant, + font.fontWeight, + font.fontSize, + font.fontFamily + ] + .join(' ') + .split(',')[0]; + + const textDecorationString = this.textDecoration(textDecoration, color); + const shadowString = textShadows + ? ` Shadows: (${textShadows + .map( + shadow => + `${shadow.color.toString()} ${shadow.offsetX}px ${shadow.offsetY}px ${shadow.blur}px` + ) + .join(', ')})` + : ''; + + this.writeLine( + `Text ${color.toString()} ${fontString}${shadowString}${textDecorationString}` + ); + + this.indent += 2; + textBounds.forEach(textBound => { + this.writeLine( + `[${Math.round(textBound.bounds.left)}, ${Math.round( + textBound.bounds.top + )}]: ${textBound.text}` + ); + }); + this.indent -= 2; + } + + textDecoration(textDecoration: TextDecoration | null, color: Color): string { + if (textDecoration) { + const textDecorationColor = (textDecoration.textDecorationColor + ? textDecoration.textDecorationColor + : color).toString(); + const textDecorationLines = textDecoration.textDecorationLine.map( + this.textDecorationLine, + this + ); + return textDecoration + ? ` ${this.textDecorationStyle( + textDecoration.textDecorationStyle + )} ${textDecorationColor} ${textDecorationLines.join(', ')}` + : ''; + } + + return ''; + } + + textDecorationLine(textDecorationLine: TextDecorationLine): string { + switch (textDecorationLine) { + case TEXT_DECORATION_LINE.LINE_THROUGH: + return 'line-through'; + case TEXT_DECORATION_LINE.OVERLINE: + return 'overline'; + case TEXT_DECORATION_LINE.UNDERLINE: + return 'underline'; + case TEXT_DECORATION_LINE.BLINK: + return 'blink'; + } + return 'UNKNOWN'; + } + + textDecorationStyle(textDecorationStyle: TextDecorationStyle): string { + switch (textDecorationStyle) { + case TEXT_DECORATION_STYLE.SOLID: + return 'solid'; + case TEXT_DECORATION_STYLE.DOTTED: + return 'dotted'; + case TEXT_DECORATION_STYLE.DOUBLE: + return 'double'; + case TEXT_DECORATION_STYLE.DASHED: + return 'dashed'; + case TEXT_DECORATION_STYLE.WAVY: + return 'WAVY'; + } + return 'UNKNOWN'; + } + + setOpacity(opacity: number) { + this.writeLine(`Opacity ${opacity}`); + } + + transform(offsetX: number, offsetY: number, matrix: Matrix, callback: () => void) { + this.writeLine(`Transform (${offsetX}, ${offsetY}) [${matrix.join(', ')}]`); + this.indent += 2; + callback(); + this.indent -= 2; + } + + writeLine(text: string) { + this.lines.push(`${new Array(this.indent).join(' ')}${text}`); + } +} + +module.exports = RefTestRenderer; diff --git a/webpack.config.js b/webpack.config.js index 1264cf8e4..6012d98cb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -9,25 +9,41 @@ const banner = Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}> Released under ${pkg.license} License`; -module.exports = { - entry: './src/index.js', - output: { - filename: './dist/html2canvas.js', - library: 'html2canvas', - libraryTarget: 'umd' - }, - module: { - loaders: [{ - test: /\.js$/, - exclude: /node_modules/, - loader: 'babel-loader' - }] - }, - plugins: [ - new webpack.DefinePlugin({ - '__DEV__': true, - '__VERSION__': JSON.stringify(pkg.version) - }), - new webpack.BannerPlugin(banner) - ] +const plugins = [ + new webpack.DefinePlugin({ + '__DEV__': true, + '__VERSION__': JSON.stringify(pkg.version) + }), + new webpack.BannerPlugin(banner) +]; + +const modules = { + loaders: [{ + test: /\.js$/, + exclude: /node_modules/, + loader: 'babel-loader' + }] }; + +module.exports = [ + { + entry: './src/index.js', + output: { + filename: './dist/html2canvas.js', + library: 'html2canvas', + libraryTarget: 'umd' + }, + module: modules, + plugins + }, + { + entry: './src/renderer/RefTestRenderer.js', + output: { + filename: './dist/RefTestRenderer.js', + library: 'RefTestRenderer', + libraryTarget: 'umd' + }, + module: modules, + plugins + } +]; From 58d1bef3b6040a415444880cc41fdd8279d19a7e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 9 Aug 2017 00:50:31 +0800 Subject: [PATCH 046/377] Beging implementing reftests --- .gitignore | 3 + karma.conf.js | 111 + package.json | 24 +- scripts/create-reftest-list.js | 38 + scripts/create-reftests.js | 37 + scripts/parse-reftest.js | 154 + src/Color.js | 2 + src/Renderer.js | 44 +- src/index.js | 18 +- src/parsing/background.js | 12 +- src/parsing/border.js | 2 +- src/renderer/RefTestRenderer.js | 48 +- tests/assets/jquery-1.6.2.js | 8981 ----------------- tests/cases/google-maps.html | 41 - tests/mocha/clone.js | 2 +- tests/mocha/css.js | 75 +- tests/mocha/gradients.js | 191 +- tests/mocha/lib/expect.js | 2079 ++-- tests/mocha/lib/mocha.js | 8003 +++++++-------- tests/mocha/selenium.js | 122 +- tests/node/color.js | 78 +- tests/node/package.js | 12 +- tests/{cases => reftests}/acid2.html | 0 tests/reftests/acid2.txt | 145 + .../{cases => reftests}/background/clip.html | 0 tests/reftests/background/clip.txt | 29 + .../background/encoded.html | 0 tests/reftests/background/encoded.txt | 11 + .../background/linear-gradient.html | 0 tests/reftests/background/linear-gradient.txt | 132 + .../{cases => reftests}/background/multi.html | 0 tests/reftests/background/multi.txt | 26 + .../background/position.html | 0 tests/reftests/background/position.txt | 77 + .../background/radial-gradient.html | 0 tests/reftests/background/radial-gradient.txt | 61 + .../background/repeat.html | 0 tests/reftests/background/repeat.txt | 53 + .../{cases => reftests}/background/size.html | 0 tests/reftests/background/size.txt | 43 + tests/{cases => reftests}/border/dashed.html | 0 tests/reftests/border/dashed.txt | 27 + tests/{cases => reftests}/border/dotted.html | 0 tests/reftests/border/dotted.txt | 27 + tests/{cases => reftests}/border/double.html | 0 tests/reftests/border/double.txt | 27 + tests/{cases => reftests}/border/inset.html | 0 tests/reftests/border/inset.txt | 39 + tests/{cases => reftests}/border/radius.html | 0 tests/reftests/border/radius.txt | 36 + tests/{cases => reftests}/border/solid.html | 0 tests/reftests/border/solid.txt | 27 + tests/{cases => reftests}/clip.html | 3 + tests/reftests/clip.txt | 178 + .../crossorigin-iframe.html | 0 tests/reftests/crossorigin-iframe.txt | 7 + tests/{cases => reftests}/forms.html | 0 tests/reftests/forms.txt | 310 + tests/{cases => reftests}/iframe.html | 0 tests/reftests/iframe.txt | 7 + tests/{cases => reftests}/images/base.html | 6 +- tests/reftests/images/base.txt | 16 + tests/{cases => reftests}/images/canvas.html | 0 tests/reftests/images/canvas.txt | 5 + .../images/cross-origin.html | 5 + tests/reftests/images/cross-origin.txt | 7 + tests/{cases => reftests}/images/empty.html | 5 + tests/reftests/images/empty.txt | 32 + tests/{cases => reftests}/images/images.html | 0 tests/reftests/images/images.txt | 36 + .../images/svg/base64.html | 5 + tests/reftests/images/svg/base64.txt | 9 + .../images/svg/external.html | 5 + tests/reftests/images/svg/external.txt | 9 + .../images/svg/inline.html | 5 + tests/reftests/images/svg/inline.txt | 7 + .../images/svg/native_only.html | 5 + tests/reftests/images/svg/native_only.txt | 7 + .../{cases => reftests}/images/svg/node.html | 5 + tests/reftests/images/svg/node.txt | 7 + .../list/decimal-leading-zero.html | 0 tests/reftests/list/decimal-leading-zero.txt | 603 ++ tests/{cases => reftests}/list/decimal.html | 0 tests/reftests/list/decimal.txt | 603 ++ .../{cases => reftests}/list/lower-alpha.html | 0 tests/reftests/list/lower-alpha.txt | 603 ++ .../{cases => reftests}/list/upper-roman.html | 0 tests/reftests/list/upper-roman.txt | 603 ++ .../overflow/overflow-transform.html | 3 + .../reftests/overflow/overflow-transform.txt | 134 + .../overflow/overflow.html | 3 + tests/reftests/overflow/overflow.txt | 567 ++ tests/{cases => reftests}/pseudoelements.html | 4 +- tests/reftests/pseudoelements.txt | 73 + .../text/child-textnodes.html | 3 + tests/reftests/text/child-textnodes.txt | 32 + tests/{cases => reftests}/text/chinese.html | 0 tests/reftests/text/chinese.txt | 1532 +++ .../{cases => reftests}/text/fontawesome.html | 0 tests/reftests/text/fontawesome.txt | 88 + .../{cases => reftests}/text/linethrough.html | 0 tests/reftests/text/linethrough.txt | 355 + tests/{cases => reftests}/text/multiple.html | 0 tests/reftests/text/multiple.txt | 355 + tests/{cases => reftests}/text/shadow.html | 0 tests/reftests/text/shadow.txt | 88 + tests/{cases => reftests}/text/text.html | 0 tests/reftests/text/text.txt | 266 + .../text/underline-lineheight.html | 0 tests/reftests/text/underline-lineheight.txt | 355 + tests/{cases => reftests}/text/underline.html | 0 tests/reftests/text/underline.txt | 355 + .../{cases => reftests}/transform/nested.html | 0 tests/reftests/transform/nested.txt | 42 + .../{cases => reftests}/transform/rotate.html | 0 tests/reftests/transform/rotate.txt | 12 + .../transform/translate.html | 0 tests/reftests/transform/translate.txt | 37 + tests/{cases => reftests}/visibility.html | 0 tests/reftests/visibility.txt | 25 + .../{cases => reftests}/zindex/z-index1.html | 0 tests/reftests/zindex/z-index1.txt | 75 + .../{cases => reftests}/zindex/z-index10.html | 0 tests/reftests/zindex/z-index10.txt | 114 + .../{cases => reftests}/zindex/z-index11.html | 0 tests/reftests/zindex/z-index11.txt | 28 + .../{cases => reftests}/zindex/z-index12.html | 0 tests/reftests/zindex/z-index12.txt | 15 + .../{cases => reftests}/zindex/z-index13.html | 0 tests/reftests/zindex/z-index13.txt | 9 + .../{cases => reftests}/zindex/z-index14.html | 0 tests/reftests/zindex/z-index14.txt | 9 + .../{cases => reftests}/zindex/z-index15.html | 0 tests/reftests/zindex/z-index15.txt | 9 + .../{cases => reftests}/zindex/z-index16.html | 0 tests/reftests/zindex/z-index16.txt | 31 + .../{cases => reftests}/zindex/z-index17.html | 0 tests/reftests/zindex/z-index17.txt | 13 + .../{cases => reftests}/zindex/z-index18.html | 0 tests/reftests/zindex/z-index18.txt | 47 + .../{cases => reftests}/zindex/z-index2.html | 0 tests/reftests/zindex/z-index2.txt | 89 + .../{cases => reftests}/zindex/z-index3.html | 0 tests/reftests/zindex/z-index3.txt | 167 + .../{cases => reftests}/zindex/z-index4.html | 0 tests/reftests/zindex/z-index4.txt | 23 + .../{cases => reftests}/zindex/z-index5.html | 0 tests/reftests/zindex/z-index5.txt | 23 + .../{cases => reftests}/zindex/z-index6.html | 0 tests/reftests/zindex/z-index6.txt | 34 + .../{cases => reftests}/zindex/z-index7.html | 0 tests/reftests/zindex/z-index7.txt | 64 + .../{cases => reftests}/zindex/z-index8.html | 0 tests/reftests/zindex/z-index8.txt | 64 + .../{cases => reftests}/zindex/z-index9.html | 0 tests/reftests/zindex/z-index9.txt | 89 + tests/sauceconnect.js | 13 - tests/selenium.js | 114 - tests/test.js | 151 +- tests/testrunner.html | 19 + tests/testrunner.js | 287 + tests/utils.js | 66 - webpack.config.js | 10 + 163 files changed, 15336 insertions(+), 14486 deletions(-) create mode 100644 karma.conf.js create mode 100644 scripts/create-reftest-list.js create mode 100644 scripts/create-reftests.js create mode 100644 scripts/parse-reftest.js delete mode 100644 tests/assets/jquery-1.6.2.js delete mode 100644 tests/cases/google-maps.html rename tests/{cases => reftests}/acid2.html (100%) create mode 100644 tests/reftests/acid2.txt rename tests/{cases => reftests}/background/clip.html (100%) create mode 100644 tests/reftests/background/clip.txt rename tests/{cases => reftests}/background/encoded.html (100%) create mode 100644 tests/reftests/background/encoded.txt rename tests/{cases => reftests}/background/linear-gradient.html (100%) create mode 100644 tests/reftests/background/linear-gradient.txt rename tests/{cases => reftests}/background/multi.html (100%) create mode 100644 tests/reftests/background/multi.txt rename tests/{cases => reftests}/background/position.html (100%) create mode 100644 tests/reftests/background/position.txt rename tests/{cases => reftests}/background/radial-gradient.html (100%) create mode 100644 tests/reftests/background/radial-gradient.txt rename tests/{cases => reftests}/background/repeat.html (100%) create mode 100644 tests/reftests/background/repeat.txt rename tests/{cases => reftests}/background/size.html (100%) create mode 100644 tests/reftests/background/size.txt rename tests/{cases => reftests}/border/dashed.html (100%) create mode 100644 tests/reftests/border/dashed.txt rename tests/{cases => reftests}/border/dotted.html (100%) create mode 100644 tests/reftests/border/dotted.txt rename tests/{cases => reftests}/border/double.html (100%) create mode 100644 tests/reftests/border/double.txt rename tests/{cases => reftests}/border/inset.html (100%) create mode 100644 tests/reftests/border/inset.txt rename tests/{cases => reftests}/border/radius.html (100%) create mode 100644 tests/reftests/border/radius.txt rename tests/{cases => reftests}/border/solid.html (100%) create mode 100644 tests/reftests/border/solid.txt rename tests/{cases => reftests}/clip.html (96%) create mode 100644 tests/reftests/clip.txt rename tests/{cases => reftests}/crossorigin-iframe.html (100%) create mode 100644 tests/reftests/crossorigin-iframe.txt rename tests/{cases => reftests}/forms.html (100%) create mode 100644 tests/reftests/forms.txt rename tests/{cases => reftests}/iframe.html (100%) create mode 100644 tests/reftests/iframe.txt rename tests/{cases => reftests}/images/base.html (86%) create mode 100644 tests/reftests/images/base.txt rename tests/{cases => reftests}/images/canvas.html (100%) create mode 100644 tests/reftests/images/canvas.txt rename tests/{cases => reftests}/images/cross-origin.html (82%) create mode 100644 tests/reftests/images/cross-origin.txt rename tests/{cases => reftests}/images/empty.html (86%) create mode 100644 tests/reftests/images/empty.txt rename tests/{cases => reftests}/images/images.html (100%) create mode 100644 tests/reftests/images/images.txt rename tests/{cases => reftests}/images/svg/base64.html (94%) create mode 100644 tests/reftests/images/svg/base64.txt rename tests/{cases => reftests}/images/svg/external.html (79%) create mode 100644 tests/reftests/images/svg/external.txt rename tests/{cases => reftests}/images/svg/inline.html (93%) create mode 100644 tests/reftests/images/svg/inline.txt rename tests/{cases => reftests}/images/svg/native_only.html (97%) create mode 100644 tests/reftests/images/svg/native_only.txt rename tests/{cases => reftests}/images/svg/node.html (93%) create mode 100644 tests/reftests/images/svg/node.txt rename tests/{cases => reftests}/list/decimal-leading-zero.html (100%) create mode 100644 tests/reftests/list/decimal-leading-zero.txt rename tests/{cases => reftests}/list/decimal.html (100%) create mode 100644 tests/reftests/list/decimal.txt rename tests/{cases => reftests}/list/lower-alpha.html (100%) create mode 100644 tests/reftests/list/lower-alpha.txt rename tests/{cases => reftests}/list/upper-roman.html (100%) create mode 100644 tests/reftests/list/upper-roman.txt rename tests/{cases => reftests}/overflow/overflow-transform.html (96%) create mode 100644 tests/reftests/overflow/overflow-transform.txt rename tests/{cases => reftests}/overflow/overflow.html (98%) create mode 100644 tests/reftests/overflow/overflow.txt rename tests/{cases => reftests}/pseudoelements.html (96%) create mode 100644 tests/reftests/pseudoelements.txt rename tests/{cases => reftests}/text/child-textnodes.html (91%) create mode 100644 tests/reftests/text/child-textnodes.txt rename tests/{cases => reftests}/text/chinese.html (100%) create mode 100644 tests/reftests/text/chinese.txt rename tests/{cases => reftests}/text/fontawesome.html (100%) create mode 100644 tests/reftests/text/fontawesome.txt rename tests/{cases => reftests}/text/linethrough.html (100%) create mode 100644 tests/reftests/text/linethrough.txt rename tests/{cases => reftests}/text/multiple.html (100%) create mode 100644 tests/reftests/text/multiple.txt rename tests/{cases => reftests}/text/shadow.html (100%) create mode 100644 tests/reftests/text/shadow.txt rename tests/{cases => reftests}/text/text.html (100%) create mode 100644 tests/reftests/text/text.txt rename tests/{cases => reftests}/text/underline-lineheight.html (100%) create mode 100644 tests/reftests/text/underline-lineheight.txt rename tests/{cases => reftests}/text/underline.html (100%) create mode 100644 tests/reftests/text/underline.txt rename tests/{cases => reftests}/transform/nested.html (100%) create mode 100644 tests/reftests/transform/nested.txt rename tests/{cases => reftests}/transform/rotate.html (100%) create mode 100644 tests/reftests/transform/rotate.txt rename tests/{cases => reftests}/transform/translate.html (100%) create mode 100644 tests/reftests/transform/translate.txt rename tests/{cases => reftests}/visibility.html (100%) create mode 100644 tests/reftests/visibility.txt rename tests/{cases => reftests}/zindex/z-index1.html (100%) create mode 100644 tests/reftests/zindex/z-index1.txt rename tests/{cases => reftests}/zindex/z-index10.html (100%) create mode 100644 tests/reftests/zindex/z-index10.txt rename tests/{cases => reftests}/zindex/z-index11.html (100%) create mode 100644 tests/reftests/zindex/z-index11.txt rename tests/{cases => reftests}/zindex/z-index12.html (100%) create mode 100644 tests/reftests/zindex/z-index12.txt rename tests/{cases => reftests}/zindex/z-index13.html (100%) create mode 100644 tests/reftests/zindex/z-index13.txt rename tests/{cases => reftests}/zindex/z-index14.html (100%) create mode 100644 tests/reftests/zindex/z-index14.txt rename tests/{cases => reftests}/zindex/z-index15.html (100%) create mode 100644 tests/reftests/zindex/z-index15.txt rename tests/{cases => reftests}/zindex/z-index16.html (100%) create mode 100644 tests/reftests/zindex/z-index16.txt rename tests/{cases => reftests}/zindex/z-index17.html (100%) create mode 100644 tests/reftests/zindex/z-index17.txt rename tests/{cases => reftests}/zindex/z-index18.html (100%) create mode 100644 tests/reftests/zindex/z-index18.txt rename tests/{cases => reftests}/zindex/z-index2.html (100%) create mode 100644 tests/reftests/zindex/z-index2.txt rename tests/{cases => reftests}/zindex/z-index3.html (100%) create mode 100644 tests/reftests/zindex/z-index3.txt rename tests/{cases => reftests}/zindex/z-index4.html (100%) create mode 100644 tests/reftests/zindex/z-index4.txt rename tests/{cases => reftests}/zindex/z-index5.html (100%) create mode 100644 tests/reftests/zindex/z-index5.txt rename tests/{cases => reftests}/zindex/z-index6.html (100%) create mode 100644 tests/reftests/zindex/z-index6.txt rename tests/{cases => reftests}/zindex/z-index7.html (100%) create mode 100644 tests/reftests/zindex/z-index7.txt rename tests/{cases => reftests}/zindex/z-index8.html (100%) create mode 100644 tests/reftests/zindex/z-index8.txt rename tests/{cases => reftests}/zindex/z-index9.html (100%) create mode 100644 tests/reftests/zindex/z-index9.txt delete mode 100644 tests/sauceconnect.js delete mode 100644 tests/selenium.js create mode 100644 tests/testrunner.html create mode 100644 tests/testrunner.js delete mode 100644 tests/utils.js diff --git a/.gitignore b/.gitignore index a91bd1678..a982a4256 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /dist +/build /nbproject/ image.jpg /.project @@ -11,3 +12,5 @@ node_modules/ .idea/ .DS_Store npm-debug.log +debug.log +tests/reftests.js diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 000000000..c09cceec3 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,111 @@ +// Karma configuration +// Generated on Sat Aug 05 2017 23:42:26 GMT+0800 (Malay Peninsula Standard Time) + +const port = 9876; + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['mocha'], + + + // list of files / patterns to load in the browser + files: [ + 'tests/testrunner.js', + { pattern: './tests/**/*', 'watched': true, 'included': false, 'served': true}, + { pattern: './dist/**/*', 'watched': true, 'included': false, 'served': true}, + { pattern: './node_modules/**/*', 'watched': true, 'included': false, 'served': true} + ], + + + // list of files to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: [ + 'Chrome', + 'Firefox', + 'IE9', + 'IE10', + 'IE11', + 'Edge' + ], + + + customLaunchers: { + IE9: { + base: 'IE', + 'x-ua-compatible': 'IE=EmulateIE9' + }, + IE10: { + base: 'IE', + 'x-ua-compatible': 'IE=EmulateIE10' + }, + IE11: { + base: 'IE' + } + }, + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity, + + proxies: { + '/dist': `http://localhost:${port}/base/dist`, + '/node_modules': `http://localhost:${port}/base/node_modules`, + '/tests': `http://localhost:${port}/base/tests`, + '/assets': `http://localhost:${port}/base/tests/assets`, + }, + + client: { + mocha: { + // change Karma's debug.html to the mocha web reporter + reporter: 'html' + } + }, + + browserNoActivityTimeout: 30000 + }) +}; diff --git a/package.json b/package.json index a049ea51e..e7898e099 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", - "url": "http://hertzen.com" + "url": "https://hertzen.com" }, "engines": { "node": ">=4.0.0" @@ -28,24 +28,40 @@ "babel-preset-es2015": "6.24.1", "babel-preset-flow": "6.23.0", "base64-arraybuffer": "0.1.5", + "chai": "4.1.1", + "chromeless": "^1.2.0", "eslint": "4.2.0", "eslint-plugin-flowtype": "2.35.0", "eslint-plugin-prettier": "2.1.2", + "express": "4.15.4", "flow-bin": "0.50.0", + "glob": "7.1.2", + "jquery": "3.2.1", + "karma": "1.7.0", + "karma-chrome-launcher": "2.2.0", + "karma-edge-launcher": "0.4.1", + "karma-firefox-launcher": "1.0.1", + "karma-ie-launcher": "1.0.0", + "karma-mocha": "1.3.0", + "mocha": "3.5.0", "prettier": "1.5.3", + "promise-polyfill": "6.0.2", "rimraf": "2.6.1", + "slash": "1.0.0", "webpack": "3.4.1" }, "scripts": { "build": "rimraf dist/ && npm run build:npm && npm run build:browser", "build:npm": "babel src/ -d dist/npm/", "build:browser": "webpack", - "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"src/**/*.js\"", + "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", "flow": "flow", "lint": "eslint src/**", - "test": "npm run flow && npm run lint" + "test": "npm run flow && npm run lint", + "karma": "karma start karma.conf.js", + "watch": "webpack --progress --colors --watch" }, - "homepage": "http://html2canvas.hertzen.com", + "homepage": "https://html2canvas.hertzen.com", "license": "MIT", "dependencies": { "punycode": "2.1.0" diff --git a/scripts/create-reftest-list.js b/scripts/create-reftest-list.js new file mode 100644 index 000000000..0302f3f04 --- /dev/null +++ b/scripts/create-reftest-list.js @@ -0,0 +1,38 @@ +'use strict'; + +const path = require('path'); +const glob = require('glob'); +const fs = require('fs'); +const slash = require('slash'); +const parseRefTest = require('./parse-reftest'); +const outputPath = 'tests/reftests.js'; + +glob( + '../tests/reftests/**/*.html', + { + cwd: __dirname, + root: path.resolve(__dirname, '../../') + }, + (err, files) => { + if (err) { + console.error(err); + process.exit(1); + } + + const testList = files.reduce((acc, filename) => { + const refTestFilename = path.resolve(__dirname, filename.replace(/\.html$/, '.txt')); + console.log(refTestFilename); + acc[`/${slash(path.relative('../', filename))}`] = fs.existsSync(refTestFilename) + ? parseRefTest(fs.readFileSync(refTestFilename).toString()) + : null; + + return acc; + }, {}); + fs.writeFileSync( + path.resolve(__dirname, `../${outputPath}`), + `module.exports = ${JSON.stringify(testList, null, 4)};` + ); + + console.log(`${outputPath} updated`); + } +); diff --git a/scripts/create-reftests.js b/scripts/create-reftests.js new file mode 100644 index 000000000..9d38f8b66 --- /dev/null +++ b/scripts/create-reftests.js @@ -0,0 +1,37 @@ +const {Chromeless} = require('chromeless'); +const path = require('path'); +const fs = require('fs'); +const express = require('express'); +const reftests = require('../tests/reftests'); + +const app = express(); +app.use('/', express.static(path.resolve(__dirname, '../'))); + +const listener = app.listen(0, () => { + async function run() { + const chromeless = new Chromeless(); + const tests = Object.keys(reftests); + let i = 0; + while (tests[i]) { + const filename = tests[i]; + i++; + const reftest = await chromeless + .goto(`http://localhost:${listener.address().port}${filename}?reftest&run=false`) + .evaluate(() => + html2canvas(document.documentElement, { + windowWidth: 800, + windowHeight: 600, + target: new RefTestRenderer() + }) + ); + fs.writeFileSync( + path.resolve(__dirname, `..${filename.replace(/\.html$/i, '.txt')}`), + reftest + ); + } + + await chromeless.end(); + } + + run().catch(console.error.bind(console)).then(() => process.exit(0)); +}); diff --git a/scripts/parse-reftest.js b/scripts/parse-reftest.js new file mode 100644 index 000000000..e1a3d3f11 --- /dev/null +++ b/scripts/parse-reftest.js @@ -0,0 +1,154 @@ +const ACTION = /^\s*(\w+ ?\w*):\s+(.+)$/; +const TEXT = /^\s*\[(-?\d+), (-?\d+)\]:\s+(.+)$/; +const WINDOW_SIZE = /^\[(-?\d+), (-?\d+)\]$/; +const RECTANGLE = /^\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\s+(.+)$/; +const REPEAT = /^Image\s+\("(.+)"\)\s+\[(-?\d+), (-?\d+)\]\s+Size\s+\((-?\d+), (-?\d+)\)\s+(.+)$/; +const PATH = /^Path \((.+)\)$/; +const VECTOR = /^Vector\(x: (-?\d+), y: (-?\d+)\)$/; +const BEZIER_CURVE = /^BezierCurve\(x0: (-?\d+), y0: (-?\d+), x1: (-?\d+), y1: (-?\d+), cx0: (-?\d+), cy0: (-?\d+), cx1: (-?\d+), cy1: (-?\d+)\)$/; +const SHAPE = /^(rgba?\((:?.+)\)) (Path .+)$/; +const CIRCLE = /^(rgba?\((:?.+)\)) Circle\(x: (-?\d+), y: (-?\d+), r: (-?\d+)\)$/; +const IMAGE = /^Image\s+\("(.+)"\)\s+\(source:\s+\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\)\s+\(destination:\s+\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\)$/; +const CANVAS = /^(Canvas)\s+\(source:\s+\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\)\s+\(destination:\s+\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\)$/; +const GRADIENT = /^\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\s+linear-gradient\(x0: (-?\d+), x1: (-?\d+), y0: (-?\d+), y1: (-?\d+) (.+)\)$/; +const TRANSFORM = /^\((-?\d+), (-?\d+)\) \[(.+)\]$/; + +function parsePath(path) { + const parts = path.match(PATH)[1]; + return parts.split(' > ').map(p => { + const vector = p.match(VECTOR); + if (vector) { + return { + type: 'Vector', + x: parseInt(vector[1], 10), + y: parseInt(vector[2], 10) + }; + } else { + const bezier = p.match(BEZIER_CURVE); + return { + type: 'BezierCurve', + x0: parseInt(bezier[1], 10), + y0: parseInt(bezier[2], 10), + x1: parseInt(bezier[3], 10), + y1: parseInt(bezier[4], 10), + cx0: parseInt(bezier[5], 10), + cy0: parseInt(bezier[6], 10), + cx1: parseInt(bezier[7], 10), + cy1: parseInt(bezier[8], 10) + }; + } + }); +} + +function parseRefTest(txt) { + return txt.split(/\n/g).filter(l => l.length > 0).map((l, i) => { + const parseAction = l.match(ACTION); + if (!parseAction) { + const text = l.match(TEXT); + return { + action: 'T', + x: parseInt(text[1], 10), + y: parseInt(text[2], 10), + text: text[3] + }; + } + const args = parseAction[2]; + + const data = { + action: parseAction[1], + line: i + 1 + }; + + switch (data.action) { + case 'Opacity': + data.opacity = parseFloat(args); + break; + case 'Fill': + data.color = args; + break; + case 'Clip': + data.path = args.split(' | ').map(path => parsePath(path)); + break; + case 'Window': + const windowSize = args.match(WINDOW_SIZE); + data.width = parseInt(windowSize[1], 10); + data.height = parseInt(windowSize[2], 10); + break; + case 'Rectangle': + const rectangle = args.match(RECTANGLE); + data.x = parseInt(rectangle[1], 10); + data.y = parseInt(rectangle[2], 10); + data.width = parseInt(rectangle[3], 10); + data.height = parseInt(rectangle[4], 10); + data.color = rectangle[5]; + break; + case 'Repeat': + const repeat = args.match(REPEAT); + data.imageSrc = repeat[1]; + data.x = parseInt(repeat[2], 10); + data.y = parseInt(repeat[3], 10); + data.width = parseInt(repeat[4], 10); + data.height = parseInt(repeat[5], 10); + data.path = parsePath(repeat[6]); + break; + case 'Shape': + const shape = args.match(SHAPE); + if (!shape) { + const circle = args.match(CIRCLE); + data.color = circle[1]; + data.path = [ + { + type: 'Circle', + x: parseInt(circle[2], 10), + y: parseInt(circle[3], 10), + r: parseInt(circle[4], 10) + } + ]; + } else { + data.color = shape[1]; + data.path = parsePath(shape[3]); + } + break; + case 'Text': + data.font = args; + break; + case 'Draw image': + const image = args.match(IMAGE) ? args.match(IMAGE) : args.match(CANVAS); + data.imageSrc = image[1]; + data.sx = parseInt(image[2], 10); + data.xy = parseInt(image[3], 10); + data.sw = parseInt(image[4], 10); + data.sh = parseInt(image[5], 10); + data.dx = parseInt(image[6], 10); + data.dy = parseInt(image[7], 10); + data.dw = parseInt(image[8], 10); + data.dh = parseInt(image[9], 10); + break; + case 'Gradient': + const gradient = args.match(GRADIENT); + data.x = parseInt(gradient[1], 10); + data.y = parseInt(gradient[2], 10); + data.width = parseInt(gradient[3], 10); + data.height = parseInt(gradient[4], 10); + data.x0 = parseInt(gradient[5], 10); + data.x1 = parseInt(gradient[6], 10); + data.y0 = parseInt(gradient[7], 10); + data.y1 = parseInt(gradient[8], 10); + data.stops = gradient[9]; + break; + case 'Transform': + const transform = args.match(TRANSFORM); + data.x = parseInt(transform[1], 10); + data.y = parseInt(transform[2], 10); + data.matrix = transform[3]; + break; + default: + console.log(args); + throw new Error('Unhandled action ' + data.action); + } + + return data; + }); +} + +module.exports = parseRefTest; diff --git a/src/Color.js b/src/Color.js index 506c5a60d..b8b190219 100644 --- a/src/Color.js +++ b/src/Color.js @@ -247,3 +247,5 @@ const NAMED_COLORS = { yellow: [255, 255, 0, null], yellowgreen: [154, 205, 50, null] }; + +export const TRANSPARENT = new Color([0, 0, 0, 0]); diff --git a/src/Renderer.js b/src/Renderer.js index 0aecae4c3..2b277a2ea 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -151,34 +151,48 @@ export default class Renderer { } renderNodeBackgroundAndBorders(container: NodeContainer) { + const HAS_BACKGROUND = + !container.style.background.backgroundColor.isTransparent() || + container.style.background.backgroundImage.length; + + const renderableBorders = container.style.border.filter( + border => + border.borderStyle !== BORDER_STYLE.NONE && !border.borderColor.isTransparent() + ); + const callback = () => { const backgroundPaintingArea = calculateBackgroungPaintingArea( container.curvedBounds, container.style.background.backgroundClip ); - this.target.clip([backgroundPaintingArea], () => { - if (!container.style.background.backgroundColor.isTransparent()) { - this.target.fill(container.style.background.backgroundColor); - } - this.renderBackgroundImage(container); - }); + if (HAS_BACKGROUND) { + this.target.clip([backgroundPaintingArea], () => { + if (!container.style.background.backgroundColor.isTransparent()) { + this.target.fill(container.style.background.backgroundColor); + } + + this.renderBackgroundImage(container); + }); + } - container.style.border.forEach((border, side) => { + renderableBorders.forEach((border, side) => { this.renderBorder(border, side, container.curvedBounds); }); }; - const paths = container.parent ? container.parent.getClipPaths() : []; - if (paths.length) { - this.target.clip(paths, callback); - } else { - callback(); + if (HAS_BACKGROUND || renderableBorders.length) { + const paths = container.parent ? container.parent.getClipPaths() : []; + if (paths.length) { + this.target.clip(paths, callback); + } else { + callback(); + } } } renderBackgroundImage(container: NodeContainer) { - container.style.background.backgroundImage.reverse().forEach(backgroundImage => { + container.style.background.backgroundImage.slice(0).reverse().forEach(backgroundImage => { if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { this.renderBackgroundRepeat(container, backgroundImage); } else { @@ -224,9 +238,7 @@ export default class Renderer { } renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) { - if (border.borderStyle !== BORDER_STYLE.NONE && !border.borderColor.isTransparent()) { - this.target.drawShape(parsePathForBorder(curvePoints, side), border.borderColor); - } + this.target.drawShape(parsePathForBorder(curvePoints, side), border.borderColor); } renderStack(stack: StackingContext) { diff --git a/src/index.js b/src/index.js index 8e2bfcea8..2f80a399e 100644 --- a/src/index.js +++ b/src/index.js @@ -10,7 +10,7 @@ import Logger from './Logger'; import ImageLoader from './ImageLoader'; import {Bounds, parseDocumentSize} from './Bounds'; import {cloneWindow} from './Clone'; -import Color from './Color'; +import Color, {TRANSPARENT} from './Color'; import {FontMetrics} from './Font'; export type Options = { @@ -24,7 +24,9 @@ export type Options = { target: RenderTarget<*> | Array>, type: ?string, windowWidth: number, - windowHeight: number + windowHeight: number, + offsetX: number, + offsetY: number }; const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { @@ -47,14 +49,16 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { target: new CanvasRenderer(config.canvas), type: null, windowWidth: defaultView.innerWidth, - windowHeight: defaultView.innerHeight + windowHeight: defaultView.innerHeight, + offsetX: defaultView.pageXOffset, + offsetY: defaultView.pageYOffset }; const options = {...defaultOptions, ...config}; const windowBounds = new Bounds( - defaultView.pageXOffset, - defaultView.pageYOffset, + options.offsetX, + options.offsetY, options.windowWidth, options.windowHeight ); @@ -91,6 +95,10 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { : stack.container.style.background.backgroundColor : null; + if (backgroundColor === stack.container.style.background.backgroundColor) { + stack.container.style.background.backgroundColor = TRANSPARENT; + } + return imageLoader.ready().then(imageStore => { if (options.removeContainer === true) { if (container.parentNode) { diff --git a/src/parsing/background.js b/src/parsing/background.js index 45a85c2dc..364c00986 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -350,11 +350,13 @@ const parseBackgroundImage = (image: string, imageLoader: ImageLoader): Array => { return SIDES.map(side => { const borderColor = new Color(style.getPropertyValue(`border-${side}-color`)); const borderStyle = parseBorderStyle(style.getPropertyValue(`border-${side}-style`)); - const borderWidth = parseInt(style.getPropertyValue(`border-${side}-width`), 10); + const borderWidth = parseFloat(style.getPropertyValue(`border-${side}-width`)); return { borderColor, borderStyle, diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js index c8152cb42..e1037fbf9 100644 --- a/src/renderer/RefTestRenderer.js +++ b/src/renderer/RefTestRenderer.js @@ -1,5 +1,6 @@ /* @flow */ 'use strict'; +import {parse} from 'url'; import type {RenderTarget, RenderOptions} from '../Renderer'; import type Color from '../Color'; @@ -33,10 +34,11 @@ class RefTestRenderer implements RenderTarget { this.indent = 0; this.lines = []; options.logger.log(`RefTest renderer initialized`); + this.writeLine(`Window: [${options.width}, ${options.height}]`); } clip(clipPaths: Array, callback: () => void) { - this.writeLine(`Clip ${clipPaths.map(this.formatPath, this).join(', ')}`); + this.writeLine(`Clip: ${clipPaths.map(this.formatPath, this).join(' | ')}`); this.indent += 2; callback(); this.indent -= 2; @@ -44,18 +46,18 @@ class RefTestRenderer implements RenderTarget { drawImage(image: ImageElement, source: Bounds, destination: Bounds) { this.writeLine( - `Draw image ${this.formatImage(image)} (source: ${this.formatBounds( + `Draw image: ${this.formatImage(image)} (source: ${this.formatBounds( source - )} (destination: ${this.formatBounds(source)})` + )}) (destination: ${this.formatBounds(source)})` ); } drawShape(path: Path, color: Color) { - this.writeLine(`Shape ${color.toString()} ${this.formatPath(path)}`); + this.writeLine(`Shape: ${color.toString()} ${this.formatPath(path)}`); } fill(color: Color) { - this.writeLine(`Fill ${color.toString()}`); + this.writeLine(`Fill: ${color.toString()}`); } getTarget(): Promise { @@ -64,7 +66,7 @@ class RefTestRenderer implements RenderTarget { rectangle(x: number, y: number, width: number, height: number, color: Color) { const list = [x, y, width, height].map(v => Math.round(v)).join(', '); - this.writeLine(`Rectangle [${list}] ${color.toString()}`); + this.writeLine(`Rectangle: [${list}] ${color.toString()}`); } formatBounds(bounds: Bounds): string { @@ -73,8 +75,10 @@ class RefTestRenderer implements RenderTarget { } formatImage(image: ImageElement): string { - // $FlowFixMe - return image.tagName === 'CANVAS' ? 'Canvas' : `Image src="${image.src}"`; + return image.tagName === 'CANVAS' + ? 'Canvas' + : // $FlowFixMe + `Image ("${parse(image.src).pathname.substring(0, 100)}")`; } formatPath(path: Path): string { @@ -86,7 +90,7 @@ class RefTestRenderer implements RenderTarget { const string = path .map(v => { if (v.type === PATH.VECTOR) { - return `Vector(x: ${Math.round(v.x)}, y: ${Math.round(v.y)}))`; + return `Vector(x: ${Math.round(v.x)}, y: ${Math.round(v.y)})`; } if (v.type === PATH.BEZIER_CURVE) { const values = [ @@ -102,7 +106,7 @@ class RefTestRenderer implements RenderTarget { return `BezierCurve(${values.join(', ')})`; } }) - .join(', '); + .join(' > '); return `Path (${string})`; } @@ -114,12 +118,14 @@ class RefTestRenderer implements RenderTarget { `y1: ${Math.round(gradient.direction.y1)}` ]; - const stops = gradient.colorStops.map(stop => `${stop.color.toString()} ${stop.stop}px`); + const stops = gradient.colorStops.map( + stop => `${stop.color.toString()} ${Math.round(stop.stop * 100) / 100}` + ); this.writeLine( - `${this.formatBounds(bounds)} linear-gradient(${direction.join(', ')} ${stops.join( + `Gradient: ${this.formatBounds(bounds)} linear-gradient(${direction.join( ', ' - )})` + )} ${stops.join(', ')})` ); } @@ -131,7 +137,7 @@ class RefTestRenderer implements RenderTarget { offsetY: number ) { this.writeLine( - `Repeat ${this.formatImage( + `Repeat: ${this.formatImage( image )} [${offsetX}, ${offsetY}] Size (${imageSize.width}, ${imageSize.height}) ${this.formatPath( path @@ -151,7 +157,7 @@ class RefTestRenderer implements RenderTarget { font.fontVariant, font.fontWeight, font.fontSize, - font.fontFamily + font.fontFamily.replace(/"/g, '') ] .join(' ') .split(',')[0]; @@ -167,7 +173,7 @@ class RefTestRenderer implements RenderTarget { : ''; this.writeLine( - `Text ${color.toString()} ${fontString}${shadowString}${textDecorationString}` + `Text: ${color.toString()} ${fontString}${shadowString}${textDecorationString}` ); this.indent += 2; @@ -231,18 +237,22 @@ class RefTestRenderer implements RenderTarget { } setOpacity(opacity: number) { - this.writeLine(`Opacity ${opacity}`); + this.writeLine(`Opacity: ${opacity}`); } transform(offsetX: number, offsetY: number, matrix: Matrix, callback: () => void) { - this.writeLine(`Transform (${offsetX}, ${offsetY}) [${matrix.join(', ')}]`); + this.writeLine( + `Transform: (${Math.round(offsetX)}, ${Math.round(offsetY)}) [${matrix + .map(v => Math.round(v * 100) / 100) + .join(', ')}]` + ); this.indent += 2; callback(); this.indent -= 2; } writeLine(text: string) { - this.lines.push(`${new Array(this.indent).join(' ')}${text}`); + this.lines.push(`${new Array(this.indent + 1).join(' ')}${text}`); } } diff --git a/tests/assets/jquery-1.6.2.js b/tests/assets/jquery-1.6.2.js deleted file mode 100644 index 829c70604..000000000 --- a/tests/assets/jquery-1.6.2.js +++ /dev/null @@ -1,8981 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Check for digits - rdigit = /\d/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Matches dashed string for camelizing - rdashAlpha = /-([a-z])/ig, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.6.2", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.done( fn ); - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).unbind( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery._Deferred(); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNaN: function( obj ) { - return obj == null || !rdigit.test( obj ) || isNaN( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return (new Function( "return " + data ))(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - // (xml & tmp used internally) - parseXML: function( data , xml , tmp ) { - - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - - tmp = xml.documentElement; - - if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { - jQuery.error( "Invalid XML: " + data ); - } - - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Converts a dashed string to camelCased string; - // Used by both the css and data modules - camelCase: function( string ) { - return string.replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - - if ( indexOf ) { - return indexOf.call( array, elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can optionally be executed if it's a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return (new Date()).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -return jQuery; - -})(); - - -var // Promise methods - promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), - // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - // Create a simple deferred (one callbacks list) - _Deferred: function() { - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - // make sure args are available (#8421) - args = args || []; - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }, - - // Full fledged deferred (two callbacks list) - Deferred: function( func ) { - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - always: function() { - return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - pipe: function( fnDone, fnFail ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject ); - } else { - newDefer[ action ]( returned ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - var i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; - } - return obj; - } - }); - // Make sure only one callback list will be used - deferred.done( failDeferred.cancel ).fail( deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = arguments, - i = 0, - length = args.length, - count = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - // Strange bug in FF4: - // Values changed onto the arguments object sometimes end up as undefined values - // outside the $.when method. Cloning the object into a fresh array solves the issue - deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); - } - }; - } - if ( length > 1 ) { - for( ; i < length; i++ ) { - if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return deferred.promise(); - } -}); - - - -jQuery.support = (function() { - - var div = document.createElement( "div" ), - documentElement = document.documentElement, - all, - a, - select, - opt, - input, - marginDiv, - support, - fragment, - body, - testElementParent, - testElement, - testElementStyle, - tds, - events, - eventName, - i, - isSupported; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
a"; - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName( "tbody" ).length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName( "link" ).length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains it's value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - div.innerHTML = ""; - - // Figure out if the W3C box model works as expected - div.style.width = div.style.paddingLeft = "1px"; - - body = document.getElementsByTagName( "body" )[ 0 ]; - // We use our own, invisible, body unless the body is already present - // in which case we use a div (#9239) - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0 - }; - if ( body ) { - jQuery.extend( testElementStyle, { - position: "absolute", - left: -1000, - top: -1000 - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.innerHTML = "
t
"; - tds = div.getElementsByTagName( "td" ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Remove the body element we added - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - } ) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - // Null connected elements to avoid leaks in IE - testElement = fragment = select = opt = body = marginDiv = div = input = null; - - return support; -})(); - -// Keep track of boxModel -jQuery.boxModel = jQuery.support.boxModel; - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([a-z])([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - return getByName ? - // Check for both converted-to-camel and non-converted data property names - thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : - thisCache; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - if ( jQuery.support.deleteExpando || cache != window ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON -// property to be considered empty objects; this property always exists in -// order to make sure JSON.stringify does not expose internal metadata -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery.data( elem, deferDataKey, undefined, true ); - if ( defer && - ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && - ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery.data( elem, queueDataKey, undefined, true ) && - !jQuery.data( elem, markDataKey, undefined, true ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.resolve(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - rinvalidChar = /\:|^on/, - formHook, boolHook; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = (value || "").split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attrFix: { - // Always normalize to ensure hook usage - tabindex: "tabIndex" - }, - - attr: function( elem, name, value, pass ) { - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - if ( notxml ) { - name = jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) ) { - - hooks = boolHook; - - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && name !== "className" && - (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - - hooks = formHook; - } - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, name ) { - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - if ( jQuery.support.getSetAttribute ) { - // Use removeAttribute in browsers that support it - elem.removeAttribute( name ); - } else { - jQuery.attr( elem, name, "" ); - elem.removeAttributeNode( elem.getAttributeNode( name ) ); - } - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabIndex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - }, - // Use the value property for back compat - // Use the formHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: {} -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - return jQuery.prop( elem, name ) ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !jQuery.support.getSetAttribute ) { - - // propFix is more comprehensive and contains all fixes - jQuery.attrFix = jQuery.propFix; - - // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - // Return undefined if nodeValue is empty string - return ret && ret.nodeValue !== "" ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Check form objects in IE (multiple bugs related) - // Only use nodeValue if the attribute node exists on the form - var ret = elem.getAttributeNode( name ); - if ( ret ) { - ret.nodeValue = value; - return value; - } - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return (elem.style.cssText = "" + value); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }); -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); - } - } - }); -}); - - - - -var rnamespaces = /\.(.*)$/, - rformElems = /^(?:textarea|input|select)$/i, - rperiod = /\./g, - rspaces = / /g, - rescape = /[^\w\s.|`]/g, - fcleanup = function( nm ) { - return nm.replace(rescape, "\\$&"); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } else if ( !handler ) { - // Fixes bug #7229. Fix recommended by jdalton - return; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery._data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events, - eventHandle = elemData.handle; - - if ( !events ) { - elemData.events = events = {}; - } - - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - if ( !handleObj.guid ) { - handleObj.guid = handler.guid; - } - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } - - var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem, undefined, true ); - } - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Event object or event type - var type = event.type || event, - namespaces = [], - exclusive; - - if ( type.indexOf("!") >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.exclusive = exclusive; - event.namespace = namespaces.join("."); - event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); - - // triggerHandler() and global events don't bubble or run the default action - if ( onlyHandlers || !elem ) { - event.preventDefault(); - event.stopPropagation(); - } - - // Handle a global trigger - if ( !elem ) { - // TODO: Stop taunting the data cache; remove global events and always attach to document - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - return; - } - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - event.target = elem; - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - var cur = elem, - // IE doesn't like method names with a colon (#3533, #8272) - ontype = type.indexOf(":") < 0 ? "on" + type : ""; - - // Fire event on the current element, then bubble up the DOM tree - do { - var handle = jQuery._data( cur, "handle" ); - - event.currentTarget = cur; - if ( handle ) { - handle.apply( cur, data ); - } - - // Trigger an inline bound script - if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { - event.result = false; - event.preventDefault(); - } - - // Bubble up to document, then to window - cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; - } while ( cur && !event.isPropagationStopped() ); - - // If nobody prevented the default action, do it now - if ( !event.isDefaultPrevented() ) { - var old, - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction)() check here because IE6/7 fails that test. - // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. - try { - if ( ontype && elem[ type ] ) { - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - jQuery.event.triggered = type; - elem[ type ](); - } - } catch ( ieError ) {} - - if ( old ) { - elem[ ontype ] = old; - } - - jQuery.event.triggered = undefined; - } - } - - return event.result; - }, - - handle: function( event ) { - event = jQuery.event.fix( event || window.event ); - // Snapshot the handlers list since a called handler may add/remove events. - var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), - run_all = !event.exclusive && !event.namespace, - args = Array.prototype.slice.call( arguments, 0 ); - - // Use the fix-ed Event rather than the (read-only) native event - args[0] = event; - event.currentTarget = this; - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Triggered event must 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event. - if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - // Fixes #1925 where srcElement might not be defined either - event.target = event.srcElement || document; - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var eventDocument = event.target.ownerDocument || document, - doc = eventDocument.documentElement, - body = eventDocument.body; - - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { - event.which = event.charCode != null ? event.charCode : event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, - liveConvert( handleObj.origType, handleObj.selector ), - jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); - }, - - remove: function( handleObj ) { - jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); - } - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - - // Check if mouse(over|out) are still within the same parent element - var related = event.relatedTarget, - inside = false, - eventType = event.type; - - event.type = event.data; - - if ( related !== this ) { - - if ( related ) { - inside = jQuery.contains( this, related ); - } - - if ( !inside ) { - - jQuery.event.handle.apply( this, arguments ); - - event.type = eventType; - } - } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( !jQuery.nodeName( this, "form" ) ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( jQuery.nodeName( elem, "select" ) ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery._data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery._data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - e.liveFired = undefined; - jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - beforedeactivate: testChange, - - click: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { - testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information - beforeactivate: function( e ) { - var elem = e.target; - jQuery._data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return rformElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return rformElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; - - // Handle when the input is .focus()'d - changeFilters.focus = changeFilters.beforeactivate; -} - -function trigger( type, elem, args ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - // Don't pass args or remember liveFired; they apply to the donor event. - var event = jQuery.extend( {}, args[ 0 ] ); - event.type = type; - event.originalEvent = {}; - event.liveFired = undefined; - jQuery.event.handle.call( elem, event ); - if ( event.isDefaultPrevented() ) { - args[ 0 ].preventDefault(); - } -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - - function handler( donor ) { - // Donor event is always a native one; fix it and switch its type. - // Let focusin/out handler cancel the donor focus/blur event. - var e = jQuery.event.fix( donor ); - e.type = fix; - e.originalEvent = {}; - jQuery.event.trigger( e, null, e.target ); - if ( e.isDefaultPrevented() ) { - donor.preventDefault(); - } - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -}); - -function liveHandler( event ) { - var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, - elems = [], - selectors = [], - events = jQuery._data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) - if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { - return; - } - - if ( event.namespace ) { - namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - close = match[i]; - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { - elem = close.elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - event.type = handleObj.preType; - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - - // Make sure not to accidentally match a child element with the same selector - if ( related && jQuery.contains( elem, related ) ) { - related = elem; - } - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj, level: close.level }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - - if ( maxLevel && match.level > maxLevel ) { - break; - } - - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - ret = match.handleObj.origHandler.apply( match.elem, arguments ); - - if ( ret === false || event.isPropagationStopped() ) { - maxLevel = match.level; - - if ( ret === false ) { - stop = false; - } - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - var first = match[2], - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -} - - - - -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
", "
" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - col: [ 2, "", "
" ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - - - -
-

Google maps

-
- -
- - diff --git a/tests/mocha/clone.js b/tests/mocha/clone.js index 576d4bade..e77e91a8e 100644 --- a/tests/mocha/clone.js +++ b/tests/mocha/clone.js @@ -1 +1 @@ -document.querySelector("#block").className += "class"; +document.querySelector('#block').className += 'class'; diff --git a/tests/mocha/css.js b/tests/mocha/css.js index 885a4bc6b..f049c9cc1 100644 --- a/tests/mocha/css.js +++ b/tests/mocha/css.js @@ -3,15 +3,20 @@ var NodeContainer = html2canvas.NodeContainer; describe('Borders', function() { $('#borders div').each(function(i, node) { it($(this).attr('style'), function() { - ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"].forEach(function(prop) { + [ + 'borderTopWidth', + 'borderRightWidth', + 'borderBottomWidth', + 'borderLeftWidth' + ].forEach(function(prop) { var result = $(node).css(prop); // older IE's don't necessarily return px even with jQuery - if (result === "thin") { - result = "1px"; - } else if (result === "medium") { - result = "3px"; - } else if (result === "thick") { - result = "5px"; + if (result === 'thin') { + result = '1px'; + } else if (result === 'medium') { + result = '3px'; + } else if (result === 'thick') { + result = '5px'; } var container = new NodeContainer(node, null); expect(container.css(prop)).to.be(result); @@ -23,10 +28,10 @@ describe('Borders', function() { describe('Padding', function() { $('#padding div').each(function(i, node) { it($(this).attr('style'), function() { - ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"].forEach(function(prop) { + ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'].forEach(function(prop) { var container = new NodeContainer(node, null); var result = container.css(prop); - expect(result).to.contain("px"); + expect(result).to.contain('px'); expect(result, $(node).css(prop)); }); }); @@ -36,20 +41,25 @@ describe('Padding', function() { describe('Background-position', function() { $('#backgroundPosition div').each(function(i, node) { it($(this).attr('style'), function() { - var prop = "backgroundPosition"; - var img = new Image(); + var prop = 'backgroundPosition'; + var img = new Image(); img.width = 50; img.height = 50; var container = new NodeContainer(node, null); var item = container.css(prop), - backgroundPosition = container.parseBackgroundPosition(html2canvas.utils.getBounds(node), img), - split = (window.getComputedStyle) ? $(node).css(prop).split(" ") : [$(node).css(prop+"X"), $(node).css(prop+"Y")]; + backgroundPosition = container.parseBackgroundPosition( + html2canvas.utils.getBounds(node), + img + ), + split = window.getComputedStyle + ? $(node).css(prop).split(' ') + : [$(node).css(prop + 'X'), $(node).css(prop + 'Y')]; var testEl = $('
').css({ - 'position': 'absolute', - 'left': split[0], - 'top': split[1] + position: 'absolute', + left: split[0], + top: split[1] }); testEl.appendTo(node); @@ -158,8 +168,11 @@ describe('Background-image', function() { { prefix: '', method: 'url', - value: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', - args: ['data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'], + value: + 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', + args: [ + 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' + ], image: null }, 'data url' @@ -171,7 +184,7 @@ describe('Background-image', function() { prefix: '', method: 'linear-gradient', value: 'linear-gradient(red,black)', - args: ['red','black'], + args: ['red', 'black'], image: null }, 'linear-gradient' @@ -195,26 +208,34 @@ describe('Background-image', function() { prefix: '-webkit-', method: 'linear-gradient', value: '-webkit-linear-gradient(red,black)', - args: ['red','black'], + args: ['red', 'black'], image: null }, 'prefixed linear-gradient' ); test_parse_background_image( - 'linear-gradient(red,black), url(test), url("test"),\n none, ', [ - { prefix: '', method: 'linear-gradient', value: 'linear-gradient(red,black)', args: ['red','black'], image: null }, - { prefix: '', method: 'url', value: 'url(test)', args: ['test'], image: null }, - { prefix: '', method: 'url', value: 'url("test")', args: ['test'], image: null }, - { prefix: '', method: 'none', value: 'none', args: [], image: null } + 'linear-gradient(red,black), url(test), url("test"),\n none, ', + [ + { + prefix: '', + method: 'linear-gradient', + value: 'linear-gradient(red,black)', + args: ['red', 'black'], + image: null + }, + {prefix: '', method: 'url', value: 'url(test)', args: ['test'], image: null}, + {prefix: '', method: 'url', value: 'url("test")', args: ['test'], image: null}, + {prefix: '', method: 'none', value: 'none', args: [], image: null} ], 'multiple backgrounds' ); - function test_parse_background_image(value, expected, name) { it(name, function() { - expect(html2canvas.utils.parseBackgrounds(value)).to.eql(Array.isArray(expected) ? expected : [expected]); + expect(html2canvas.utils.parseBackgrounds(value)).to.eql( + Array.isArray(expected) ? expected : [expected] + ); }); } }); diff --git a/tests/mocha/gradients.js b/tests/mocha/gradients.js index 8f616f04d..2e30f3123 100644 --- a/tests/mocha/gradients.js +++ b/tests/mocha/gradients.js @@ -1,158 +1,145 @@ -describe("Gradients", function() { +describe('Gradients', function() { var expected = [ { - method: "linear-gradient", - args: [ - "left", - " rgb(255, 0, 0)", - " rgb(255, 255, 0)", - " rgb(0, 255, 0)" - ] + method: 'linear-gradient', + args: ['left', ' rgb(255, 0, 0)', ' rgb(255, 255, 0)', ' rgb(0, 255, 0)'] }, { - method: "linear-gradient", - args: [ - "left", - " red", - " rgb(255, 255, 0)", - " rgb(0, 255, 0)" - ] + method: 'linear-gradient', + args: ['left', ' red', ' rgb(255, 255, 0)', ' rgb(0, 255, 0)'] }, { method: 'linear-gradient', args: [ - "left", - " rgb(206, 219, 233) 0%", - " rgb(170, 197, 222) 17%", - " rgb(97, 153, 199) 50%", - " rgb(58, 132, 195) 51%", - " rgb(65, 154, 214) 59%", - " rgb(75, 184, 240) 71%", - " rgb(58, 139, 194) 84%", - " rgb(38, 85, 139) 100%" + 'left', + ' rgb(206, 219, 233) 0%', + ' rgb(170, 197, 222) 17%', + ' rgb(97, 153, 199) 50%', + ' rgb(58, 132, 195) 51%', + ' rgb(65, 154, 214) 59%', + ' rgb(75, 184, 240) 71%', + ' rgb(58, 139, 194) 84%', + ' rgb(38, 85, 139) 100%' ] }, { method: 'linear-gradient', args: [ - "left", - " rgb(206, 219, 233) 0%", - " rgb(170, 197, 222) 17px", - " rgb(97, 153, 199) 50%", - " rgb(58, 132, 195) 51px", - " rgb(65, 154, 214) 59%", - " rgb(75, 184, 240) 71px", - " rgb(58, 139, 194) 84%", - " rgb(38, 85, 139) 100px" + 'left', + ' rgb(206, 219, 233) 0%', + ' rgb(170, 197, 222) 17px', + ' rgb(97, 153, 199) 50%', + ' rgb(58, 132, 195) 51px', + ' rgb(65, 154, 214) 59%', + ' rgb(75, 184, 240) 71px', + ' rgb(58, 139, 194) 84%', + ' rgb(38, 85, 139) 100px' ] }, { - method: "gradient", + method: 'gradient', args: [ - "linear", - " 50% 0%", - " 50% 100%", - " from(rgb(240, 183, 161))", - " color-stop(0.5, rgb(140, 51, 16))", - " color-stop(0.51, rgb(117, 34, 1))", - " to(rgb(191, 110, 78))" + 'linear', + ' 50% 0%', + ' 50% 100%', + ' from(rgb(240, 183, 161))', + ' color-stop(0.5, rgb(140, 51, 16))', + ' color-stop(0.51, rgb(117, 34, 1))', + ' to(rgb(191, 110, 78))' ] }, { - method: "gradient", + method: 'gradient', args: [ - "linear", - " 50% 0%", - " 50% 100%", - " from(rgb(255, 0, 0))", - " color-stop(0.314159, green)", - " color-stop(0.51, rgb(0, 0, 255))", + 'linear', + ' 50% 0%', + ' 50% 100%', + ' from(rgb(255, 0, 0))', + ' color-stop(0.314159, green)', + ' color-stop(0.51, rgb(0, 0, 255))', // temporary workaround for Blink/WebKit bug: crbug.com/453414 //" to(rgba(0, 0, 0, 0.5))" - " to(rgba(0, 0, 0, 0))" + ' to(rgba(0, 0, 0, 0))' ] }, { method: 'linear-gradient', - args: [ - "0deg", - " rgb(221, 221, 221)", - " rgb(221, 221, 221) 50%", - " transparent 50%" - ] + args: ['0deg', ' rgb(221, 221, 221)', ' rgb(221, 221, 221) 50%', ' transparent 50%'] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse closest-side", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse closest-side', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse closest-corner", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse closest-corner', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse farthest-side", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse farthest-side', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse farthest-corner", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse farthest-corner', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse contain", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse contain', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] }, { - method: "radial-gradient", + method: 'radial-gradient', args: [ - "75% 19%", - " ellipse cover", - " rgb(171, 171, 171)", - " rgb(0, 0, 255) 33%", - " rgb(153, 31, 31) 100%" + '75% 19%', + ' ellipse cover', + ' rgb(171, 171, 171)', + ' rgb(0, 0, 255) 33%', + ' rgb(153, 31, 31) 100%' ] } ]; - [].slice.call(document.querySelectorAll('#backgroundGradients div'), 0).forEach(function(node, i) { - var container = new html2canvas.NodeContainer(node, null); - var value = container.css("backgroundImage"); - it(value, function() { - var parsedBackground = html2canvas.utils.parseBackgrounds(value); - if (parsedBackground[0].args[0] === "0% 50%") { - parsedBackground[0].args[0] = 'left'; - } - expect(parsedBackground[0].args).to.eql(expected[i].args); - expect(parsedBackground[0].method).to.eql(expected[i].method); + [].slice + .call(document.querySelectorAll('#backgroundGradients div'), 0) + .forEach(function(node, i) { + var container = new html2canvas.NodeContainer(node, null); + var value = container.css('backgroundImage'); + it(value, function() { + var parsedBackground = html2canvas.utils.parseBackgrounds(value); + if (parsedBackground[0].args[0] === '0% 50%') { + parsedBackground[0].args[0] = 'left'; + } + expect(parsedBackground[0].args).to.eql(expected[i].args); + expect(parsedBackground[0].method).to.eql(expected[i].method); + }); }); - }); }); diff --git a/tests/mocha/lib/expect.js b/tests/mocha/lib/expect.js index b1e921ddc..808721c49 100644 --- a/tests/mocha/lib/expect.js +++ b/tests/mocha/lib/expect.js @@ -1,241 +1,265 @@ -(function (global, module) { +(function(global, module) { + var exports = module.exports; - var exports = module.exports; - - /** + /** * Exports. */ - module.exports = expect; - expect.Assertion = Assertion; + module.exports = expect; + expect.Assertion = Assertion; - /** + /** * Exports version. */ - expect.version = '0.3.1'; + expect.version = '0.3.1'; - /** + /** * Possible assertion flags. */ - var flags = { - not: ['to', 'be', 'have', 'include', 'only'] - , to: ['be', 'have', 'include', 'only', 'not'] - , only: ['have'] - , have: ['own'] - , be: ['an'] - }; + var flags = { + not: ['to', 'be', 'have', 'include', 'only'], + to: ['be', 'have', 'include', 'only', 'not'], + only: ['have'], + have: ['own'], + be: ['an'] + }; - function expect (obj) { - return new Assertion(obj); - } + function expect(obj) { + return new Assertion(obj); + } - /** + /** * Constructor * * @api private */ - function Assertion (obj, flag, parent) { - this.obj = obj; - this.flags = {}; + function Assertion(obj, flag, parent) { + this.obj = obj; + this.flags = {}; - if (undefined != parent) { - this.flags[flag] = true; + if (undefined != parent) { + this.flags[flag] = true; - for (var i in parent.flags) { - if (parent.flags.hasOwnProperty(i)) { - this.flags[i] = true; + for (var i in parent.flags) { + if (parent.flags.hasOwnProperty(i)) { + this.flags[i] = true; + } + } } - } - } - var $flags = flag ? flags[flag] : keys(flags) - , self = this; + var $flags = flag ? flags[flag] : keys(flags), + self = this; - if ($flags) { - for (var i = 0, l = $flags.length; i < l; i++) { - // avoid recursion - if (this.flags[$flags[i]]) continue; + if ($flags) { + for (var i = 0, l = $flags.length; i < l; i++) { + // avoid recursion + if (this.flags[$flags[i]]) continue; - var name = $flags[i] - , assertion = new Assertion(this.obj, name, this) + var name = $flags[i], + assertion = new Assertion(this.obj, name, this); - if ('function' == typeof Assertion.prototype[name]) { - // clone the function, make sure we dont touch the prot reference - var old = this[name]; - this[name] = function () { - return old.apply(self, arguments); - }; + if ('function' == typeof Assertion.prototype[name]) { + // clone the function, make sure we dont touch the prot reference + var old = this[name]; + this[name] = function() { + return old.apply(self, arguments); + }; - for (var fn in Assertion.prototype) { - if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { - this[name][fn] = bind(assertion[fn], assertion); + for (var fn in Assertion.prototype) { + if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { + this[name][fn] = bind(assertion[fn], assertion); + } + } + } else { + this[name] = assertion; + } } - } - } else { - this[name] = assertion; } - } } - } - /** + /** * Performs an assertion * * @api private */ - Assertion.prototype.assert = function (truth, msg, error, expected) { - var msg = this.flags.not ? error : msg - , ok = this.flags.not ? !truth : truth - , err; - - if (!ok) { - err = new Error(msg.call(this)); - if (arguments.length > 3) { - err.actual = this.obj; - err.expected = expected; - err.showDiff = true; - } - throw err; - } + Assertion.prototype.assert = function(truth, msg, error, expected) { + var msg = this.flags.not ? error : msg, + ok = this.flags.not ? !truth : truth, + err; + + if (!ok) { + err = new Error(msg.call(this)); + if (arguments.length > 3) { + err.actual = this.obj; + err.expected = expected; + err.showDiff = true; + } + throw err; + } - this.and = new Assertion(this.obj); - }; + this.and = new Assertion(this.obj); + }; - /** + /** * Check if the value is truthy * * @api public */ - Assertion.prototype.ok = function () { - this.assert( - !!this.obj - , function(){ return 'expected ' + i(this.obj) + ' to be truthy' } - , function(){ return 'expected ' + i(this.obj) + ' to be falsy' }); - }; + Assertion.prototype.ok = function() { + this.assert( + !!this.obj, + function() { + return 'expected ' + i(this.obj) + ' to be truthy'; + }, + function() { + return 'expected ' + i(this.obj) + ' to be falsy'; + } + ); + }; - /** + /** * Creates an anonymous function which calls fn with arguments. * * @api public */ - Assertion.prototype.withArgs = function() { - expect(this.obj).to.be.a('function'); - var fn = this.obj; - var args = Array.prototype.slice.call(arguments); - return expect(function() { fn.apply(null, args); }); - }; + Assertion.prototype.withArgs = function() { + expect(this.obj).to.be.a('function'); + var fn = this.obj; + var args = Array.prototype.slice.call(arguments); + return expect(function() { + fn.apply(null, args); + }); + }; - /** + /** * Assert that the function throws. * * @param {Function|RegExp} callback, or regexp to match error string against * @api public */ - Assertion.prototype.throwError = - Assertion.prototype.throwException = function (fn) { - expect(this.obj).to.be.a('function'); - - var thrown = false - , not = this.flags.not; - - try { - this.obj(); - } catch (e) { - if (isRegExp(fn)) { - var subject = 'string' == typeof e ? e : e.message; - if (not) { - expect(subject).to.not.match(fn); - } else { - expect(subject).to.match(fn); + Assertion.prototype.throwError = Assertion.prototype.throwException = function(fn) { + expect(this.obj).to.be.a('function'); + + var thrown = false, + not = this.flags.not; + + try { + this.obj(); + } catch (e) { + if (isRegExp(fn)) { + var subject = 'string' == typeof e ? e : e.message; + if (not) { + expect(subject).to.not.match(fn); + } else { + expect(subject).to.match(fn); + } + } else if ('function' == typeof fn) { + fn(e); + } + thrown = true; } - } else if ('function' == typeof fn) { - fn(e); - } - thrown = true; - } - if (isRegExp(fn) && not) { - // in the presence of a matcher, ensure the `not` only applies to - // the matching. - this.flags.not = false; - } + if (isRegExp(fn) && not) { + // in the presence of a matcher, ensure the `not` only applies to + // the matching. + this.flags.not = false; + } - var name = this.obj.name || 'fn'; - this.assert( - thrown - , function(){ return 'expected ' + name + ' to throw an exception' } - , function(){ return 'expected ' + name + ' not to throw an exception' }); - }; + var name = this.obj.name || 'fn'; + this.assert( + thrown, + function() { + return 'expected ' + name + ' to throw an exception'; + }, + function() { + return 'expected ' + name + ' not to throw an exception'; + } + ); + }; - /** + /** * Checks if the array is empty. * * @api public */ - Assertion.prototype.empty = function () { - var expectation; - - if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { - if ('number' == typeof this.obj.length) { - expectation = !this.obj.length; - } else { - expectation = !keys(this.obj).length; - } - } else { - if ('string' != typeof this.obj) { - expect(this.obj).to.be.an('object'); - } - - expect(this.obj).to.have.property('length'); - expectation = !this.obj.length; - } + Assertion.prototype.empty = function() { + var expectation; + + if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { + if ('number' == typeof this.obj.length) { + expectation = !this.obj.length; + } else { + expectation = !keys(this.obj).length; + } + } else { + if ('string' != typeof this.obj) { + expect(this.obj).to.be.an('object'); + } - this.assert( - expectation - , function(){ return 'expected ' + i(this.obj) + ' to be empty' } - , function(){ return 'expected ' + i(this.obj) + ' to not be empty' }); - return this; - }; + expect(this.obj).to.have.property('length'); + expectation = !this.obj.length; + } + + this.assert( + expectation, + function() { + return 'expected ' + i(this.obj) + ' to be empty'; + }, + function() { + return 'expected ' + i(this.obj) + ' to not be empty'; + } + ); + return this; + }; - /** + /** * Checks if the obj exactly equals another. * * @api public */ - Assertion.prototype.be = - Assertion.prototype.equal = function (obj) { - this.assert( - obj === this.obj - , function(){ return 'expected ' + i(this.obj) + ' to equal ' + i(obj) } - , function(){ return 'expected ' + i(this.obj) + ' to not equal ' + i(obj) }); - return this; - }; + Assertion.prototype.be = Assertion.prototype.equal = function(obj) { + this.assert( + obj === this.obj, + function() { + return 'expected ' + i(this.obj) + ' to equal ' + i(obj); + }, + function() { + return 'expected ' + i(this.obj) + ' to not equal ' + i(obj); + } + ); + return this; + }; - /** + /** * Checks if the obj sortof equals another. * * @api public */ - Assertion.prototype.eql = function (obj) { - this.assert( - expect.eql(this.obj, obj) - , function(){ return 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj) } - , function(){ return 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj) } - , obj); - return this; - }; + Assertion.prototype.eql = function(obj) { + this.assert( + expect.eql(this.obj, obj), + function() { + return 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj); + }, + function() { + return 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj); + }, + obj + ); + return this; + }; - /** + /** * Assert within start to finish (inclusive). * * @param {Number} start @@ -243,113 +267,147 @@ * @api public */ - Assertion.prototype.within = function (start, finish) { - var range = start + '..' + finish; - this.assert( - this.obj >= start && this.obj <= finish - , function(){ return 'expected ' + i(this.obj) + ' to be within ' + range } - , function(){ return 'expected ' + i(this.obj) + ' to not be within ' + range }); - return this; - }; + Assertion.prototype.within = function(start, finish) { + var range = start + '..' + finish; + this.assert( + this.obj >= start && this.obj <= finish, + function() { + return 'expected ' + i(this.obj) + ' to be within ' + range; + }, + function() { + return 'expected ' + i(this.obj) + ' to not be within ' + range; + } + ); + return this; + }; - /** + /** * Assert typeof / instance of * * @api public */ - Assertion.prototype.a = - Assertion.prototype.an = function (type) { - if ('string' == typeof type) { - // proper english in error msg - var n = /^[aeiou]/.test(type) ? 'n' : ''; - - // typeof with support for 'array' - this.assert( - 'array' == type ? isArray(this.obj) : - 'regexp' == type ? isRegExp(this.obj) : - 'object' == type - ? 'object' == typeof this.obj && null !== this.obj - : type == typeof this.obj - , function(){ return 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type } - , function(){ return 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type }); - } else { - // instanceof - var name = type.name || 'supplied constructor'; - this.assert( - this.obj instanceof type - , function(){ return 'expected ' + i(this.obj) + ' to be an instance of ' + name } - , function(){ return 'expected ' + i(this.obj) + ' not to be an instance of ' + name }); - } + Assertion.prototype.a = Assertion.prototype.an = function(type) { + if ('string' == typeof type) { + // proper english in error msg + var n = /^[aeiou]/.test(type) ? 'n' : ''; + + // typeof with support for 'array' + this.assert( + 'array' == type + ? isArray(this.obj) + : 'regexp' == type + ? isRegExp(this.obj) + : 'object' == type + ? 'object' == typeof this.obj && null !== this.obj + : type == typeof this.obj, + function() { + return 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type; + }, + function() { + return 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type; + } + ); + } else { + // instanceof + var name = type.name || 'supplied constructor'; + this.assert( + this.obj instanceof type, + function() { + return 'expected ' + i(this.obj) + ' to be an instance of ' + name; + }, + function() { + return 'expected ' + i(this.obj) + ' not to be an instance of ' + name; + } + ); + } - return this; - }; + return this; + }; - /** + /** * Assert numeric value above _n_. * * @param {Number} n * @api public */ - Assertion.prototype.greaterThan = - Assertion.prototype.above = function (n) { - this.assert( - this.obj > n - , function(){ return 'expected ' + i(this.obj) + ' to be above ' + n } - , function(){ return 'expected ' + i(this.obj) + ' to be below ' + n }); - return this; - }; + Assertion.prototype.greaterThan = Assertion.prototype.above = function(n) { + this.assert( + this.obj > n, + function() { + return 'expected ' + i(this.obj) + ' to be above ' + n; + }, + function() { + return 'expected ' + i(this.obj) + ' to be below ' + n; + } + ); + return this; + }; - /** + /** * Assert numeric value below _n_. * * @param {Number} n * @api public */ - Assertion.prototype.lessThan = - Assertion.prototype.below = function (n) { - this.assert( - this.obj < n - , function(){ return 'expected ' + i(this.obj) + ' to be below ' + n } - , function(){ return 'expected ' + i(this.obj) + ' to be above ' + n }); - return this; - }; + Assertion.prototype.lessThan = Assertion.prototype.below = function(n) { + this.assert( + this.obj < n, + function() { + return 'expected ' + i(this.obj) + ' to be below ' + n; + }, + function() { + return 'expected ' + i(this.obj) + ' to be above ' + n; + } + ); + return this; + }; - /** + /** * Assert string value matches _regexp_. * * @param {RegExp} regexp * @api public */ - Assertion.prototype.match = function (regexp) { - this.assert( - regexp.exec(this.obj) - , function(){ return 'expected ' + i(this.obj) + ' to match ' + regexp } - , function(){ return 'expected ' + i(this.obj) + ' not to match ' + regexp }); - return this; - }; + Assertion.prototype.match = function(regexp) { + this.assert( + regexp.exec(this.obj), + function() { + return 'expected ' + i(this.obj) + ' to match ' + regexp; + }, + function() { + return 'expected ' + i(this.obj) + ' not to match ' + regexp; + } + ); + return this; + }; - /** + /** * Assert property "length" exists and has value of _n_. * * @param {Number} n * @api public */ - Assertion.prototype.length = function (n) { - expect(this.obj).to.have.property('length'); - var len = this.obj.length; - this.assert( - n == len - , function(){ return 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len } - , function(){ return 'expected ' + i(this.obj) + ' to not have a length of ' + len }); - return this; - }; - - /** + Assertion.prototype.length = function(n) { + expect(this.obj).to.have.property('length'); + var len = this.obj.length; + this.assert( + n == len, + function() { + return 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len; + }, + function() { + return 'expected ' + i(this.obj) + ' to not have a length of ' + len; + } + ); + return this; + }; + + /** * Assert property _name_ exists, with optional _val_. * * @param {String} name @@ -357,70 +415,108 @@ * @api public */ - Assertion.prototype.property = function (name, val) { - if (this.flags.own) { - this.assert( - Object.prototype.hasOwnProperty.call(this.obj, name) - , function(){ return 'expected ' + i(this.obj) + ' to have own property ' + i(name) } - , function(){ return 'expected ' + i(this.obj) + ' to not have own property ' + i(name) }); - return this; - } + Assertion.prototype.property = function(name, val) { + if (this.flags.own) { + this.assert( + Object.prototype.hasOwnProperty.call(this.obj, name), + function() { + return 'expected ' + i(this.obj) + ' to have own property ' + i(name); + }, + function() { + return 'expected ' + i(this.obj) + ' to not have own property ' + i(name); + } + ); + return this; + } - if (this.flags.not && undefined !== val) { - if (undefined === this.obj[name]) { - throw new Error(i(this.obj) + ' has no property ' + i(name)); - } - } else { - var hasProp; - try { - hasProp = name in this.obj - } catch (e) { - hasProp = undefined !== this.obj[name] - } - - this.assert( - hasProp - , function(){ return 'expected ' + i(this.obj) + ' to have a property ' + i(name) } - , function(){ return 'expected ' + i(this.obj) + ' to not have a property ' + i(name) }); - } + if (this.flags.not && undefined !== val) { + if (undefined === this.obj[name]) { + throw new Error(i(this.obj) + ' has no property ' + i(name)); + } + } else { + var hasProp; + try { + hasProp = name in this.obj; + } catch (e) { + hasProp = undefined !== this.obj[name]; + } - if (undefined !== val) { - this.assert( - val === this.obj[name] - , function(){ return 'expected ' + i(this.obj) + ' to have a property ' + i(name) - + ' of ' + i(val) + ', but got ' + i(this.obj[name]) } - , function(){ return 'expected ' + i(this.obj) + ' to not have a property ' + i(name) - + ' of ' + i(val) }); - } + this.assert( + hasProp, + function() { + return 'expected ' + i(this.obj) + ' to have a property ' + i(name); + }, + function() { + return 'expected ' + i(this.obj) + ' to not have a property ' + i(name); + } + ); + } - this.obj = this.obj[name]; - return this; - }; + if (undefined !== val) { + this.assert( + val === this.obj[name], + function() { + return ( + 'expected ' + + i(this.obj) + + ' to have a property ' + + i(name) + + ' of ' + + i(val) + + ', but got ' + + i(this.obj[name]) + ); + }, + function() { + return ( + 'expected ' + + i(this.obj) + + ' to not have a property ' + + i(name) + + ' of ' + + i(val) + ); + } + ); + } - /** + this.obj = this.obj[name]; + return this; + }; + + /** * Assert that the array contains _obj_ or string contains _obj_. * * @param {Mixed} obj|string * @api public */ - Assertion.prototype.string = - Assertion.prototype.contain = function (obj) { - if ('string' == typeof this.obj) { - this.assert( - ~this.obj.indexOf(obj) - , function(){ return 'expected ' + i(this.obj) + ' to contain ' + i(obj) } - , function(){ return 'expected ' + i(this.obj) + ' to not contain ' + i(obj) }); - } else { - this.assert( - ~indexOf(this.obj, obj) - , function(){ return 'expected ' + i(this.obj) + ' to contain ' + i(obj) } - , function(){ return 'expected ' + i(this.obj) + ' to not contain ' + i(obj) }); - } - return this; - }; + Assertion.prototype.string = Assertion.prototype.contain = function(obj) { + if ('string' == typeof this.obj) { + this.assert( + ~this.obj.indexOf(obj), + function() { + return 'expected ' + i(this.obj) + ' to contain ' + i(obj); + }, + function() { + return 'expected ' + i(this.obj) + ' to not contain ' + i(obj); + } + ); + } else { + this.assert( + ~indexOf(this.obj, obj), + function() { + return 'expected ' + i(this.obj) + ' to contain ' + i(obj); + }, + function() { + return 'expected ' + i(this.obj) + ' to not contain ' + i(obj); + } + ); + } + return this; + }; - /** + /** * Assert exact keys or inclusion of keys by using * the `.own` modifier. * @@ -428,857 +524,892 @@ * @api public */ - Assertion.prototype.key = - Assertion.prototype.keys = function ($keys) { - var str - , ok = true; + Assertion.prototype.key = Assertion.prototype.keys = function($keys) { + var str, + ok = true; - $keys = isArray($keys) - ? $keys - : Array.prototype.slice.call(arguments); + $keys = isArray($keys) ? $keys : Array.prototype.slice.call(arguments); - if (!$keys.length) throw new Error('keys required'); + if (!$keys.length) throw new Error('keys required'); - var actual = keys(this.obj) - , len = $keys.length; + var actual = keys(this.obj), + len = $keys.length; - // Inclusion - ok = every($keys, function (key) { - return ~indexOf(actual, key); - }); + // Inclusion + ok = every($keys, function(key) { + return ~indexOf(actual, key); + }); - // Strict - if (!this.flags.not && this.flags.only) { - ok = ok && $keys.length == actual.length; - } + // Strict + if (!this.flags.not && this.flags.only) { + ok = ok && $keys.length == actual.length; + } - // Key string - if (len > 1) { - $keys = map($keys, function (key) { - return i(key); - }); - var last = $keys.pop(); - str = $keys.join(', ') + ', and ' + last; - } else { - str = i($keys[0]); - } + // Key string + if (len > 1) { + $keys = map($keys, function(key) { + return i(key); + }); + var last = $keys.pop(); + str = $keys.join(', ') + ', and ' + last; + } else { + str = i($keys[0]); + } - // Form - str = (len > 1 ? 'keys ' : 'key ') + str; + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; - // Have / include - str = (!this.flags.only ? 'include ' : 'only have ') + str; + // Have / include + str = (!this.flags.only ? 'include ' : 'only have ') + str; - // Assertion - this.assert( - ok - , function(){ return 'expected ' + i(this.obj) + ' to ' + str } - , function(){ return 'expected ' + i(this.obj) + ' to not ' + str }); + // Assertion + this.assert( + ok, + function() { + return 'expected ' + i(this.obj) + ' to ' + str; + }, + function() { + return 'expected ' + i(this.obj) + ' to not ' + str; + } + ); - return this; - }; + return this; + }; - /** + /** * Assert a failure. * * @param {String ...} custom message * @api public */ - Assertion.prototype.fail = function (msg) { - var error = function() { return msg || "explicit failure"; } - this.assert(false, error, error); - return this; - }; + Assertion.prototype.fail = function(msg) { + var error = function() { + return msg || 'explicit failure'; + }; + this.assert(false, error, error); + return this; + }; - /** + /** * Function bind implementation. */ - function bind (fn, scope) { - return function () { - return fn.apply(scope, arguments); + function bind(fn, scope) { + return function() { + return fn.apply(scope, arguments); + }; } - } - /** + /** * Array every compatibility * * @see bit.ly/5Fq1N2 * @api public */ - function every (arr, fn, thisObj) { - var scope = thisObj || global; - for (var i = 0, j = arr.length; i < j; ++i) { - if (!fn.call(scope, arr[i], i, arr)) { - return false; - } + function every(arr, fn, thisObj) { + var scope = thisObj || global; + for (var i = 0, j = arr.length; i < j; ++i) { + if (!fn.call(scope, arr[i], i, arr)) { + return false; + } + } + return true; } - return true; - } - /** + /** * Array indexOf compatibility. * * @see bit.ly/a5Dxa2 * @api public */ - function indexOf (arr, o, i) { - if (Array.prototype.indexOf) { - return Array.prototype.indexOf.call(arr, o, i); - } + function indexOf(arr, o, i) { + if (Array.prototype.indexOf) { + return Array.prototype.indexOf.call(arr, o, i); + } - if (arr.length === undefined) { - return -1; - } + if (arr.length === undefined) { + return -1; + } - for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0 - ; i < j && arr[i] !== o; i++); - - return j <= i ? -1 : i; - } - - // https://gist.github.com/1044128/ - var getOuterHTML = function(element) { - if ('outerHTML' in element) return element.outerHTML; - var ns = "http://www.w3.org/1999/xhtml"; - var container = document.createElementNS(ns, '_'); - var xmlSerializer = new XMLSerializer(); - var html; - if (document.xmlVersion) { - return xmlSerializer.serializeToString(element); - } else { - container.appendChild(element.cloneNode(false)); - html = container.innerHTML.replace('><', '>' + element.innerHTML + '<'); - container.innerHTML = ''; - return html; - } - }; - - // Returns true if object is a DOM element. - var isDOMElement = function (object) { - if (typeof HTMLElement === 'object') { - return object instanceof HTMLElement; - } else { - return object && - typeof object === 'object' && - object.nodeType === 1 && - typeof object.nodeName === 'string'; + for ( + var j = arr.length, i = i < 0 ? (i + j < 0 ? 0 : i + j) : i || 0; + i < j && arr[i] !== o; + i++ + ); + + return j <= i ? -1 : i; } - }; - /** + // https://gist.github.com/1044128/ + var getOuterHTML = function(element) { + if ('outerHTML' in element) return element.outerHTML; + var ns = 'http://www.w3.org/1999/xhtml'; + var container = document.createElementNS(ns, '_'); + var xmlSerializer = new XMLSerializer(); + var html; + if (document.xmlVersion) { + return xmlSerializer.serializeToString(element); + } else { + container.appendChild(element.cloneNode(false)); + html = container.innerHTML.replace('><', '>' + element.innerHTML + '<'); + container.innerHTML = ''; + return html; + } + }; + + // Returns true if object is a DOM element. + var isDOMElement = function(object) { + if (typeof HTMLElement === 'object') { + return object instanceof HTMLElement; + } else { + return ( + object && + typeof object === 'object' && + object.nodeType === 1 && + typeof object.nodeName === 'string' + ); + } + }; + + /** * Inspects an object. * * @see taken from node.js `util` module (copyright Joyent, MIT license) * @api private */ - function i (obj, showHidden, depth) { - var seen = []; - - function stylize (str) { - return str; - } + function i(obj, showHidden, depth) { + var seen = []; - function format (value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (value && typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value !== exports && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - return value.inspect(recurseTimes); - } - - // Primitive types cannot have properties - switch (typeof value) { - case 'undefined': - return stylize('undefined', 'undefined'); - - case 'string': - var simple = '\'' + json.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return stylize(simple, 'string'); - - case 'number': - return stylize('' + value, 'number'); - - case 'boolean': - return stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return stylize('null', 'null'); - } - - if (isDOMElement(value)) { - return getOuterHTML(value); - } - - // Look up the keys of the object. - var visible_keys = keys(value); - var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; - - // Functions without properties can be shortcutted. - if (typeof value === 'function' && $keys.length === 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - var name = value.name ? ': ' + value.name : ''; - return stylize('[Function' + name + ']', 'special'); - } - } - - // Dates without properties can be shortcutted - if (isDate(value) && $keys.length === 0) { - return stylize(value.toUTCString(), 'date'); - } - - // Error objects can be shortcutted - if (value instanceof Error) { - return stylize("["+value.toString()+"]", 'Error'); - } - - var base, type, braces; - // Determine the object type - if (isArray(value)) { - type = 'Array'; - braces = ['[', ']']; - } else { - type = 'Object'; - braces = ['{', '}']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var n = value.name ? ': ' + value.name : ''; - base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; - } else { - base = ''; - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + value.toUTCString(); - } - - if ($keys.length === 0) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - return stylize('[Object]', 'special'); + function stylize(str) { + return str; } - } - seen.push(value); + function format(value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if ( + value && + typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value !== exports && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value) + ) { + return value.inspect(recurseTimes); + } - var output = map($keys, function (key) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = stylize('[Getter/Setter]', 'special'); - } else { - str = stylize('[Getter]', 'special'); + // Primitive types cannot have properties + switch (typeof value) { + case 'undefined': + return stylize('undefined', 'undefined'); + + case 'string': + var simple = + "'" + + json + .stringify(value) + .replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + + "'"; + return stylize(simple, 'string'); + + case 'number': + return stylize('' + value, 'number'); + + case 'boolean': + return stylize('' + value, 'boolean'); } - } else { - if (value.__lookupSetter__(key)) { - str = stylize('[Setter]', 'special'); + // For some reason typeof null is "object", so special case here. + if (value === null) { + return stylize('null', 'null'); } - } - } - if (indexOf(visible_keys, key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (indexOf(seen, value[key]) < 0) { - if (recurseTimes === null) { - str = format(value[key]); + + if (isDOMElement(value)) { + return getOuterHTML(value); + } + + // Look up the keys of the object. + var visible_keys = keys(value); + var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; + + // Functions without properties can be shortcutted. + if (typeof value === 'function' && $keys.length === 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + var name = value.name ? ': ' + value.name : ''; + return stylize('[Function' + name + ']', 'special'); + } + } + + // Dates without properties can be shortcutted + if (isDate(value) && $keys.length === 0) { + return stylize(value.toUTCString(), 'date'); + } + + // Error objects can be shortcutted + if (value instanceof Error) { + return stylize('[' + value.toString() + ']', 'Error'); + } + + var base, type, braces; + // Determine the object type + if (isArray(value)) { + type = 'Array'; + braces = ['[', ']']; } else { - str = format(value[key], recurseTimes - 1); + type = 'Object'; + braces = ['{', '}']; } - if (str.indexOf('\n') > -1) { - if (isArray(value)) { - str = map(str.split('\n'), function (line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + map(str.split('\n'), function (line) { - return ' ' + line; - }).join('\n'); - } + + // Make functions say that they are functions + if (typeof value === 'function') { + var n = value.name ? ': ' + value.name : ''; + base = isRegExp(value) ? ' ' + value : ' [Function' + n + ']'; + } else { + base = ''; } - } else { - str = stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (type === 'Array' && key.match(/^\d+$/)) { - return str; - } - name = json.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = stylize(name, 'string'); - } - } - return name + ': ' + str; - }); + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + value.toUTCString(); + } - seen.pop(); + if ($keys.length === 0) { + return braces[0] + base + braces[1]; + } - var numLinesEst = 0; - var length = reduce(output, function (prev, cur) { - numLinesEst++; - if (indexOf(cur, '\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, 0); + if (recurseTimes < 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + return stylize('[Object]', 'special'); + } + } - if (length > 50) { - output = braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; + seen.push(value); - } else { - output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } + var output = map($keys, function(key) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = stylize('[Getter/Setter]', 'special'); + } else { + str = stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = stylize('[Setter]', 'special'); + } + } + } + if (indexOf(visible_keys, key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (indexOf(seen, value[key]) < 0) { + if (recurseTimes === null) { + str = format(value[key]); + } else { + str = format(value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (isArray(value)) { + str = map(str.split('\n'), function(line) { + return ' ' + line; + }) + .join('\n') + .substr(2); + } else { + str = + '\n' + + map(str.split('\n'), function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (type === 'Array' && key.match(/^\d+$/)) { + return str; + } + name = json.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = stylize(name, 'name'); + } else { + name = name + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = stylize(name, 'string'); + } + } + + return name + ': ' + str; + }); - return output; + seen.pop(); + + var numLinesEst = 0; + var length = reduce( + output, + function(prev, cur) { + numLinesEst++; + if (indexOf(cur, '\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, + 0 + ); + + if (length > 50) { + output = + braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } else { + output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; + } + + return output; + } + return format(obj, typeof depth === 'undefined' ? 2 : depth); } - return format(obj, (typeof depth === 'undefined' ? 2 : depth)); - } - expect.stringify = i; + expect.stringify = i; - function isArray (ar) { - return Object.prototype.toString.call(ar) === '[object Array]'; - } + function isArray(ar) { + return Object.prototype.toString.call(ar) === '[object Array]'; + } + + function isRegExp(re) { + var s; + try { + s = '' + re; + } catch (e) { + return false; + } - function isRegExp(re) { - var s; - try { - s = '' + re; - } catch (e) { - return false; + return ( + re instanceof RegExp || // easy case + // duck-type for context-switching evalcx case + (typeof re === 'function' && + re.constructor.name === 'RegExp' && + re.compile && + re.test && + re.exec && + s.match(/^\/.*\/[gim]{0,3}$/)) + ); } - return re instanceof RegExp || // easy case - // duck-type for context-switching evalcx case - typeof(re) === 'function' && - re.constructor.name === 'RegExp' && - re.compile && - re.test && - re.exec && - s.match(/^\/.*\/[gim]{0,3}$/); - } - - function isDate(d) { - return d instanceof Date; - } - - function keys (obj) { - if (Object.keys) { - return Object.keys(obj); + function isDate(d) { + return d instanceof Date; } - var keys = []; + function keys(obj) { + if (Object.keys) { + return Object.keys(obj); + } - for (var i in obj) { - if (Object.prototype.hasOwnProperty.call(obj, i)) { - keys.push(i); - } - } + var keys = []; - return keys; - } + for (var i in obj) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + keys.push(i); + } + } - function map (arr, mapper, that) { - if (Array.prototype.map) { - return Array.prototype.map.call(arr, mapper, that); + return keys; } - var other= new Array(arr.length); + function map(arr, mapper, that) { + if (Array.prototype.map) { + return Array.prototype.map.call(arr, mapper, that); + } - for (var i= 0, n = arr.length; i= 2) { - var rv = arguments[1]; - } else { - do { - if (i in this) { - rv = this[i++]; - break; + var i = 0; + if (arguments.length >= 2) { + var rv = arguments[1]; + } else { + do { + if (i in this) { + rv = this[i++]; + break; + } + + // if array contains no values, no initial value to return + if (++i >= len) throw new TypeError(); + } while (true); } - // if array contains no values, no initial value to return - if (++i >= len) - throw new TypeError(); - } while (true); - } + for (; i < len; i++) { + if (i in this) rv = fun.call(null, rv, this[i], i, this); + } - for (; i < len; i++) { - if (i in this) - rv = fun.call(null, rv, this[i], i, this); + return rv; } - return rv; - } - - /** + /** * Asserts deep equality * * @see taken from node.js `assert` module (copyright Joyent, MIT license) * @api private */ - expect.eql = function eql(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if ('undefined' != typeof Buffer - && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { - if (actual.length != expected.length) return false; - - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } - - return true; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == "object", - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - // If both are regular expression use the special `regExpEquiv` method - // to determine equivalence. - } else if (isRegExp(actual) && isRegExp(expected)) { - return regExpEquiv(actual, expected); - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical "prototype" property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } - }; - - function isUndefinedOrNull (value) { - return value === null || value === undefined; - } - - function isArguments (object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; - } - - function regExpEquiv (a, b) { - return a.source === b.source && a.global === b.global && - a.ignoreCase === b.ignoreCase && a.multiline === b.multiline; - } - - function objEquiv (a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical "prototype" property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return expect.eql(a, b); - } - try{ - var ka = keys(a), - kb = keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!expect.eql(a[key], b[key])) - return false; - } - return true; - } + expect.eql = function eql(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if ( + 'undefined' != typeof Buffer && + Buffer.isBuffer(actual) && + Buffer.isBuffer(expected) + ) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } - var json = (function () { - "use strict"; + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (actual instanceof Date && expected instanceof Date) { + return actual.getTime() === expected.getTime(); + + // 7.3. Other pairs that do not both pass typeof value == "object", + // equivalence is determined by ==. + } else if (typeof actual != 'object' && typeof expected != 'object') { + return actual == expected; + // If both are regular expression use the special `regExpEquiv` method + // to determine equivalence. + } else if (isRegExp(actual) && isRegExp(expected)) { + return regExpEquiv(actual, expected); + // 7.4. For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical "prototype" property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } + }; - if ('object' == typeof JSON && JSON.parse && JSON.stringify) { - return { - parse: nativeJSON.parse - , stringify: nativeJSON.stringify - } + function isUndefinedOrNull(value) { + return value === null || value === undefined; } - var JSON = {}; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; + function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; } - function date(d, key) { - return isFinite(d.valueOf()) ? - d.getUTCFullYear() + '-' + - f(d.getUTCMonth() + 1) + '-' + - f(d.getUTCDate()) + 'T' + - f(d.getUTCHours()) + ':' + - f(d.getUTCMinutes()) + ':' + - f(d.getUTCSeconds()) + 'Z' : null; + function regExpEquiv(a, b) { + return ( + a.source === b.source && + a.global === b.global && + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline + ); } - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; + function objEquiv(a, b) { + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) return false; + // an identical "prototype" property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return expect.eql(a, b); + } + try { + var ka = keys(a), + kb = keys(b), + key, + i; + } catch (e) { + //happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates hasOwnProperty) + if (ka.length != kb.length) return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!expect.eql(a[key], b[key])) return false; + } + return true; } + var json = (function() { + 'use strict'; - function str(key, holder) { - - // Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - - if (value instanceof Date) { - value = date(key); + if ('object' == typeof JSON && JSON.parse && JSON.stringify) { + return { + parse: nativeJSON.parse, + stringify: nativeJSON.stringify + }; } - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. + var JSON = {}; - if (typeof rep === 'function') { - value = rep.call(holder, key, value); + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; } - // What happens next depends on the value's type. + function date(d, key) { + return isFinite(d.valueOf()) + ? d.getUTCFullYear() + + '-' + + f(d.getUTCMonth() + 1) + + '-' + + f(d.getUTCDate()) + + 'T' + + f(d.getUTCHours()) + + ':' + + f(d.getUTCMinutes()) + + ':' + + f(d.getUTCSeconds()) + + 'Z' + : null; + } - switch (typeof value) { - case 'string': - return quote(value); + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { + // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"': '\\"', + '\\': '\\\\' + }, + rep; + + function quote(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) + ? '"' + + string.replace(escapable, function(a) { + var c = meta[a]; + return typeof c === 'string' + ? c + : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + + '"' + : '"' + string + '"'; + } - case 'number': + function str(key, holder) { + // Produce a string from holder[key]. - // JSON numbers must be finite. Encode non-finite numbers as null. + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; - return isFinite(value) ? String(value) : 'null'; + // If the value has a toJSON method, call it to obtain a replacement value. - case 'boolean': - case 'null': + if (value instanceof Date) { + value = date(key); + } - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. - return String(value); + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } - // If the type is 'object', we might be dealing with an object or an array or - // null. + // What happens next depends on the value's type. - case 'object': + switch (typeof value) { + case 'string': + return quote(value); - // Due to a specification blunder in ECMAScript, typeof null is 'object', - // so watch out for that case. + case 'number': + // JSON numbers must be finite. Encode non-finite numbers as null. - if (!value) { - return 'null'; - } + return isFinite(value) ? String(value) : 'null'; - // Make an array to hold the partial results of stringifying this object value. + case 'boolean': + case 'null': + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. - gap += indent; - partial = []; + return String(value); - // Is the value an array? + // If the type is 'object', we might be dealing with an object or an array or + // null. - if (Object.prototype.toString.apply(value) === '[object Array]') { + case 'object': + // Due to a specification blunder in ECMAScript, typeof null is 'object', + // so watch out for that case. - // The value is an array. Stringify every element. Use null as a placeholder - // for non-JSON values. + if (!value) { + return 'null'; + } - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } + // Make an array to hold the partial results of stringifying this object value. - // Join all of the elements together, separated with commas, and wrap them in - // brackets. + gap += indent; + partial = []; - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } + // Is the value an array? - // If the replacer is an array, use it to select the members to be stringified. + if (Object.prototype.toString.apply(value) === '[object Array]') { + // The value is an array. Stringify every element. Use null as a placeholder + // for non-JSON values. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; } - } - } - } else { - // Otherwise, iterate through all of the keys in the object. + // Join all of the elements together, separated with commas, and wrap them in + // brackets. + + v = + partial.length === 0 + ? '[]' + : gap + ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' + : '[' + partial.join(',') + ']'; + gap = mind; + return v; + } - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); + // If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + // Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } } } - } - } - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = + partial.length === 0 + ? '{}' + : gap + ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' + : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } } - } - // If the JSON object does not yet have a stringify method, give it one. + // If the JSON object does not yet have a stringify method, give it one. - JSON.stringify = function (value, replacer, space) { + JSON.stringify = function(value, replacer, space) { + // The stringify method takes a value and an optional replacer, and an optional + // space parameter, and returns a JSON text. The replacer can be a function + // that can replace values, or an array of strings that will select the keys. + // A default replacer method can be provided. Use of the space parameter can + // produce text that is more easily readable. - // The stringify method takes a value and an optional replacer, and an optional - // space parameter, and returns a JSON text. The replacer can be a function - // that can replace values, or an array of strings that will select the keys. - // A default replacer method can be provided. Use of the space parameter can - // produce text that is more easily readable. + var i; + gap = ''; + indent = ''; - var i; - gap = ''; - indent = ''; + // If the space parameter is a number, make an indent string containing that + // many spaces. - // If the space parameter is a number, make an indent string containing that - // many spaces. + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; + // If the space parameter is a string, it will be used as the indent string. + } else if (typeof space === 'string') { + indent = space; } - // If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. + rep = replacer; + if ( + replacer && + typeof replacer !== 'function' && + (typeof replacer !== 'object' || typeof replacer.length !== 'number') + ) { + throw new Error('JSON.stringify'); + } - return str('', {'': value}); - }; + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. - // If the JSON object does not yet have a parse method, give it one. + return str('', {'': value}); + }; - JSON.parse = function (text, reviver) { - // The parse method takes a text and an optional reviver function, and returns - // a JavaScript value if the text is a valid JSON text. + // If the JSON object does not yet have a parse method, give it one. - var j; + JSON.parse = function(text, reviver) { + // The parse method takes a text and an optional reviver function, and returns + // a JavaScript value if the text is a valid JSON text. - function walk(holder, key) { + var j; - // The walk method is used to recursively walk the resulting structure so - // that modifications can be made. + function walk(holder, key) { + // The walk method is used to recursively walk the resulting structure so + // that modifications can be made. - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; + var k, + v, + value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } } } } + return reviver.call(holder, key, value); } - return reviver.call(holder, key, value); - } - - // Parsing happens in four stages. In the first stage, we replace certain - // Unicode characters with escape sequences. JavaScript handles many characters - // incorrectly, either silently deleting them, or treating them as line endings. + // Parsing happens in four stages. In the first stage, we replace certain + // Unicode characters with escape sequences. JavaScript handles many characters + // incorrectly, either silently deleting them, or treating them as line endings. - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - - // In the second stage, we run the text against regular expressions that look - // for non-JSON patterns. We are especially concerned with '()' and 'new' - // because they can cause invocation, and '=' because it can cause mutation. - // But just to be safe, we want to reject all unexpected forms. - - // We split the second stage into 4 regexp operations in order to work around - // crippling inefficiencies in IE's and Safari's regexp engines. First we - // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we - // replace all simple value tokens with ']' characters. Third, we delete all - // open brackets that follow a colon or comma or that begin the text. Finally, - // we look to see that the remaining characters are only whitespace or ']' or - // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - - // In the third stage we use the eval function to compile the text into a - // JavaScript structure. The '{' operator is subject to a syntactic ambiguity - // in JavaScript: it can begin a block or an object literal. We wrap the text - // in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - - // In the optional fourth stage, we recursively walk the new structure, passing - // each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function(a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } - // If the text is not JSON parseable, then a SyntaxError is thrown. + // In the second stage, we run the text against regular expressions that look + // for non-JSON patterns. We are especially concerned with '()' and 'new' + // because they can cause invocation, and '=' because it can cause mutation. + // But just to be safe, we want to reject all unexpected forms. + + // We split the second stage into 4 regexp operations in order to work around + // crippling inefficiencies in IE's and Safari's regexp engines. First we + // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we + // replace all simple value tokens with ']' characters. Third, we delete all + // open brackets that follow a colon or comma or that begin the text. Finally, + // we look to see that the remaining characters are only whitespace or ']' or + // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if ( + /^[\],:{}\s]*$/.test( + text + .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace( + /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + ']' + ) + .replace(/(?:^|:|,)(?:\s*\[)+/g, '') + ) + ) { + // In the third stage we use the eval function to compile the text into a + // JavaScript structure. The '{' operator is subject to a syntactic ambiguity + // in JavaScript: it can begin a block or an object literal. We wrap the text + // in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + + // In the optional fourth stage, we recursively walk the new structure, passing + // each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? walk({'': j}, '') : j; + } - throw new SyntaxError('JSON.parse'); - }; + // If the text is not JSON parseable, then a SyntaxError is thrown. - return JSON; - })(); + throw new SyntaxError('JSON.parse'); + }; - if ('undefined' != typeof window) { - window.expect = module.exports; - } + return JSON; + })(); -})( - this - , 'undefined' != typeof module ? module : {exports: {}} -); + if ('undefined' != typeof window) { + window.expect = module.exports; + } +})(this, 'undefined' != typeof module ? module : {exports: {}}); diff --git a/tests/mocha/lib/mocha.js b/tests/mocha/lib/mocha.js index 2b6017644..1eb4c32af 100644 --- a/tests/mocha/lib/mocha.js +++ b/tests/mocha/lib/mocha.js @@ -1,65 +1,58 @@ -;(function(){ +(function() { + // CommonJS require() + + function require(p) { + var path = require.resolve(p), + mod = require.modules[path]; + if (!mod) throw new Error('failed to require "' + p + '"'); + if (!mod.exports) { + mod.exports = {}; + mod.call(mod.exports, mod, mod.exports, require.relative(path)); + } + return mod.exports; + } -// CommonJS require() + require.modules = {}; -function require(p){ - var path = require.resolve(p) - , mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - } - -require.modules = {}; - -require.resolve = function (path){ - var orig = path - , reg = path + '.js' - , index = path + '/index.js'; - return require.modules[reg] && reg - || require.modules[index] && index - || orig; - }; - -require.register = function (path, fn){ - require.modules[path] = fn; - }; - -require.relative = function (parent) { - return function(p){ - if ('.' != p.charAt(0)) return require(p); - - var path = parent.split('/') - , segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); + require.resolve = function(path) { + var orig = path, + reg = path + '.js', + index = path + '/index.js'; + return (require.modules[reg] && reg) || (require.modules[index] && index) || orig; + }; + + require.register = function(path, fn) { + require.modules[path] = fn; }; - }; + require.relative = function(parent) { + return function(p) { + if ('.' != p.charAt(0)) return require(p); + + var path = parent.split('/'), + segs = p.split('/'); + path.pop(); -require.register("browser/debug.js", function(module, exports, require){ + for (var i = 0; i < segs.length; i++) { + var seg = segs[i]; + if ('..' == seg) path.pop(); + else if ('.' != seg) path.push(seg); + } -module.exports = function(type){ - return function(){ - } -}; + return require(path.join('/')); + }; + }; -}); // module: browser/debug.js + require.register('browser/debug.js', function(module, exports, require) { + module.exports = function(type) { + return function() {}; + }; + }); // module: browser/debug.js -require.register("browser/diff.js", function(module, exports, require){ -/* See LICENSE file for terms of use */ + require.register('browser/diff.js', function(module, exports, require) { + /* See LICENSE file for terms of use */ -/* + /* * Text diff implementation. * * This library supports the following APIS: @@ -73,589 +66,659 @@ require.register("browser/diff.js", function(module, exports, require){ * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 */ -var JsDiff = (function() { - /*jshint maxparams: 5*/ - function clonePath(path) { - return { newPos: path.newPos, components: path.components.slice(0) }; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, '&'); - n = n.replace(//g, '>'); - n = n.replace(/"/g, '"'); - - return n; - } - - var Diff = function(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - }; - Diff.prototype = { - diff: function(oldString, newString) { - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString === oldString) { - return [{ value: newString }]; - } - if (!newString) { - return [{ value: oldString, removed: true }]; - } - if (!oldString) { - return [{ value: newString, added: true }]; - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, oldLen = oldString.length; - var maxEditLength = newLen + oldLen; - var bestPath = [{ newPos: -1, components: [] }]; - - // Seed editLength = 0 - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos+1 >= newLen && oldPos+1 >= oldLen) { - return bestPath[0].components; - } - - for (var editLength = 1; editLength <= maxEditLength; editLength++) { - for (var diagonalPath = -1*editLength; diagonalPath <= editLength; diagonalPath+=2) { - var basePath; - var addPath = bestPath[diagonalPath-1], - removePath = bestPath[diagonalPath+1]; - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath-1] = undefined; + var JsDiff = (function() { + /*jshint maxparams: 5*/ + function clonePath(path) { + return {newPos: path.newPos, components: path.components.slice(0)}; } - - var canAdd = addPath && addPath.newPos+1 < newLen; - var canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = undefined; - continue; + function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - this.pushComponent(basePath.components, oldString[oldPos], undefined, true); - } else { - basePath = clonePath(addPath); - basePath.newPos++; - this.pushComponent(basePath.components, newString[basePath.newPos], true, undefined); + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + + return n; } - var oldPos = this.extractCommon(basePath, newString, oldString, diagonalPath); - - if (basePath.newPos+1 >= newLen && oldPos+1 >= oldLen) { - return basePath.components; - } else { - bestPath[diagonalPath] = basePath; - } - } - } - }, - - pushComponent: function(components, value, added, removed) { - var last = components[components.length-1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length-1] = - {value: this.join(last.value, value), added: added, removed: removed }; - } else { - components.push({value: value, added: added, removed: removed }); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath; - while (newPos+1 < newLen && oldPos+1 < oldLen && this.equals(newString[newPos+1], oldString[oldPos+1])) { - newPos++; - oldPos++; - - this.pushComponent(basePath.components, newString[newPos], undefined, undefined); - } - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - if (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)) { - return true; - } else { - return left === right; + var Diff = function(ignoreWhitespace) { + this.ignoreWhitespace = ignoreWhitespace; + }; + Diff.prototype = { + diff: function(oldString, newString) { + // Handle the identity case (this is due to unrolling editLength == 0 + if (newString === oldString) { + return [{value: newString}]; + } + if (!newString) { + return [{value: oldString, removed: true}]; + } + if (!oldString) { + return [{value: newString, added: true}]; + } + + newString = this.tokenize(newString); + oldString = this.tokenize(oldString); + + var newLen = newString.length, + oldLen = oldString.length; + var maxEditLength = newLen + oldLen; + var bestPath = [{newPos: -1, components: []}]; + + // Seed editLength = 0 + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return bestPath[0].components; + } + + for (var editLength = 1; editLength <= maxEditLength; editLength++) { + for ( + var diagonalPath = -1 * editLength; + diagonalPath <= editLength; + diagonalPath += 2 + ) { + var basePath; + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1]; + oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen; + var canRemove = removePath && 0 <= oldPos && oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = undefined; + continue; + } + + // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { + basePath = clonePath(removePath); + this.pushComponent( + basePath.components, + oldString[oldPos], + undefined, + true + ); + } else { + basePath = clonePath(addPath); + basePath.newPos++; + this.pushComponent( + basePath.components, + newString[basePath.newPos], + true, + undefined + ); + } + + var oldPos = this.extractCommon( + basePath, + newString, + oldString, + diagonalPath + ); + + if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return basePath.components; + } else { + bestPath[diagonalPath] = basePath; + } + } + } + }, + + pushComponent: function(components, value, added, removed) { + var last = components[components.length - 1]; + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + value: this.join(last.value, value), + added: added, + removed: removed + }; + } else { + components.push({value: value, added: added, removed: removed}); + } + }, + extractCommon: function(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath; + while ( + newPos + 1 < newLen && + oldPos + 1 < oldLen && + this.equals(newString[newPos + 1], oldString[oldPos + 1]) + ) { + newPos++; + oldPos++; + + this.pushComponent( + basePath.components, + newString[newPos], + undefined, + undefined + ); + } + basePath.newPos = newPos; + return oldPos; + }, + + equals: function(left, right) { + var reWhitespace = /\S/; + if ( + this.ignoreWhitespace && + !reWhitespace.test(left) && + !reWhitespace.test(right) + ) { + return true; + } else { + return left === right; + } + }, + join: function(left, right) { + return left + right; + }, + tokenize: function(value) { + return value; + } + }; + + var CharDiff = new Diff(); + + var WordDiff = new Diff(true); + var WordWithSpaceDiff = new Diff(); + WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { + return removeEmpty(value.split(/(\s+|\b)/)); + }; + + var CssDiff = new Diff(true); + CssDiff.tokenize = function(value) { + return removeEmpty(value.split(/([{}:;,]|\s+)/)); + }; + + var LineDiff = new Diff(); + LineDiff.tokenize = function(value) { + var retLines = [], + lines = value.split(/^/m); + + for (var i = 0; i < lines.length; i++) { + var line = lines[i], + lastLine = lines[i - 1]; + + // Merge lines that may contain windows new lines + if (line == '\n' && lastLine && lastLine[lastLine.length - 1] === '\r') { + retLines[retLines.length - 1] += '\n'; + } else if (line) { + retLines.push(line); + } + } + + return retLines; + }; + + return { + Diff: Diff, + + diffChars: function(oldStr, newStr) { + return CharDiff.diff(oldStr, newStr); + }, + diffWords: function(oldStr, newStr) { + return WordDiff.diff(oldStr, newStr); + }, + diffWordsWithSpace: function(oldStr, newStr) { + return WordWithSpaceDiff.diff(oldStr, newStr); + }, + diffLines: function(oldStr, newStr) { + return LineDiff.diff(oldStr, newStr); + }, + + diffCss: function(oldStr, newStr) { + return CssDiff.diff(oldStr, newStr); + }, + + createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { + var ret = []; + + ret.push('Index: ' + fileName); + ret.push('==================================================================='); + ret.push( + '--- ' + + fileName + + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader) + ); + ret.push( + '+++ ' + + fileName + + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader) + ); + + var diff = LineDiff.diff(oldStr, newStr); + if (!diff[diff.length - 1].value) { + diff.pop(); // Remove trailing newline add + } + diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function(entry) { + return ' ' + entry; + }); + } + function eofNL(curRange, i, current) { + var last = diff[diff.length - 2], + isLast = i === diff.length - 2, + isLastOfType = + i === diff.length - 3 && + (current.added !== last.added || current.removed !== last.removed); + + // Figure out if this is the last line for the given file and missing NL + if (!/\n$/.test(current.value) && (isLast || isLastOfType)) { + curRange.push('\\ No newline at end of file'); + } + } + + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + for (var i = 0; i < diff.length; i++) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = contextLines(prev.lines.slice(-4)); + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + curRange.push.apply( + curRange, + lines.map(function(entry) { + return (current.added ? '+' : '-') + entry; + }) + ); + eofNL(curRange, i, current); + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= 8 && i < diff.length - 2) { + // Overlapping + curRange.push.apply(curRange, contextLines(lines)); + } else { + // end the range and output + var contextSize = Math.min(lines.length, 4); + ret.push( + '@@ -' + + oldRangeStart + + ',' + + (oldLine - oldRangeStart + contextSize) + + ' +' + + newRangeStart + + ',' + + (newLine - newRangeStart + contextSize) + + ' @@' + ); + ret.push.apply(ret, curRange); + ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); + if (lines.length <= 4) { + eofNL(ret, i, current); + } + + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + } + + return ret.join('\n') + '\n'; + }, + + applyPatch: function(oldStr, uniDiff) { + var diffstr = uniDiff.split('\n'); + var diff = []; + var remEOFNL = false, + addEOFNL = false; + + for (var i = diffstr[0][0] === 'I' ? 4 : 0; i < diffstr.length; i++) { + if (diffstr[i][0] === '@') { + var meh = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); + diff.unshift({ + start: meh[3], + oldlength: meh[2], + oldlines: [], + newlength: meh[4], + newlines: [] + }); + } else if (diffstr[i][0] === '+') { + diff[0].newlines.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '-') { + diff[0].oldlines.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === ' ') { + diff[0].newlines.push(diffstr[i].substr(1)); + diff[0].oldlines.push(diffstr[i].substr(1)); + } else if (diffstr[i][0] === '\\') { + if (diffstr[i - 1][0] === '+') { + remEOFNL = true; + } else if (diffstr[i - 1][0] === '-') { + addEOFNL = true; + } + } + } + + var str = oldStr.split('\n'); + for (var i = diff.length - 1; i >= 0; i--) { + var d = diff[i]; + for (var j = 0; j < d.oldlength; j++) { + if (str[d.start - 1 + j] !== d.oldlines[j]) { + return false; + } + } + Array.prototype.splice.apply( + str, + [d.start - 1, +d.oldlength].concat(d.newlines) + ); + } + + if (remEOFNL) { + while (!str[str.length - 1]) { + str.pop(); + } + } else if (addEOFNL) { + str.push(''); + } + return str.join('\n'); + }, + + convertChangesToXML: function(changes) { + var ret = []; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + return ret.join(''); + }, + + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + convertChangesToDMP: function(changes) { + var ret = [], + change; + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + ret.push([change.added ? 1 : change.removed ? -1 : 0, change.value]); + } + return ret; + } + }; + })(); + + if (typeof module !== 'undefined') { + module.exports = JsDiff; } - }, - join: function(left, right) { - return left + right; - }, - tokenize: function(value) { - return value; - } - }; - - var CharDiff = new Diff(); - - var WordDiff = new Diff(true); - var WordWithSpaceDiff = new Diff(); - WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/)); - }; - - var CssDiff = new Diff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/)); - }; - - var LineDiff = new Diff(); - LineDiff.tokenize = function(value) { - var retLines = [], - lines = value.split(/^/m); - - for(var i = 0; i < lines.length; i++) { - var line = lines[i], - lastLine = lines[i - 1]; - - // Merge lines that may contain windows new lines - if (line == '\n' && lastLine && lastLine[lastLine.length - 1] === '\r') { - retLines[retLines.length - 1] += '\n'; - } else if (line) { - retLines.push(line); - } - } - - return retLines; - }; - - return { - Diff: Diff, - - diffChars: function(oldStr, newStr) { return CharDiff.diff(oldStr, newStr); }, - diffWords: function(oldStr, newStr) { return WordDiff.diff(oldStr, newStr); }, - diffWordsWithSpace: function(oldStr, newStr) { return WordWithSpaceDiff.diff(oldStr, newStr); }, - diffLines: function(oldStr, newStr) { return LineDiff.diff(oldStr, newStr); }, + }); // module: browser/diff.js - diffCss: function(oldStr, newStr) { return CssDiff.diff(oldStr, newStr); }, + require.register('browser/escape-string-regexp.js', function(module, exports, require) { + 'use strict'; - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; + var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - ret.push('Index: ' + fileName); - ret.push('==================================================================='); - ret.push('--- ' + fileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); - ret.push('+++ ' + fileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); - - var diff = LineDiff.diff(oldStr, newStr); - if (!diff[diff.length-1].value) { - diff.pop(); // Remove trailing newline add - } - diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier - - function contextLines(lines) { - return lines.map(function(entry) { return ' ' + entry; }); - } - function eofNL(curRange, i, current) { - var last = diff[diff.length-2], - isLast = i === diff.length-2, - isLastOfType = i === diff.length-3 && (current.added !== last.added || current.removed !== last.removed); - - // Figure out if this is the last line for the given file and missing NL - if (!/\n$/.test(current.value) && (isLast || isLastOfType)) { - curRange.push('\\ No newline at end of file'); - } - } - - var oldRangeStart = 0, newRangeStart = 0, curRange = [], - oldLine = 1, newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - if (!oldRangeStart) { - var prev = diff[i-1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = contextLines(prev.lines.slice(-4)); - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; + module.exports = function(str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); } - } - curRange.push.apply(curRange, lines.map(function(entry) { return (current.added?'+':'-') + entry; })); - eofNL(curRange, i, current); - - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= 8 && i < diff.length-2) { - // Overlapping - curRange.push.apply(curRange, contextLines(lines)); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - '@@ -' + oldRangeStart + ',' + (oldLine-oldRangeStart+contextSize) - + ' +' + newRangeStart + ',' + (newLine-newRangeStart+contextSize) - + ' @@'); - ret.push.apply(ret, curRange); - ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); - if (lines.length <= 4) { - eofNL(ret, i, current); - } - - oldRangeStart = 0; newRangeStart = 0; curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - - return ret.join('\n') + '\n'; - }, - - applyPatch: function(oldStr, uniDiff) { - var diffstr = uniDiff.split('\n'); - var diff = []; - var remEOFNL = false, - addEOFNL = false; - - for (var i = (diffstr[0][0]==='I'?4:0); i < diffstr.length; i++) { - if(diffstr[i][0] === '@') { - var meh = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); - diff.unshift({ - start:meh[3], - oldlength:meh[2], - oldlines:[], - newlength:meh[4], - newlines:[] - }); - } else if(diffstr[i][0] === '+') { - diff[0].newlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === '-') { - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === ' ') { - diff[0].newlines.push(diffstr[i].substr(1)); - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === '\\') { - if (diffstr[i-1][0] === '+') { - remEOFNL = true; - } else if(diffstr[i-1][0] === '-') { - addEOFNL = true; - } - } - } - - var str = oldStr.split('\n'); - for (var i = diff.length - 1; i >= 0; i--) { - var d = diff[i]; - for (var j = 0; j < d.oldlength; j++) { - if(str[d.start-1+j] !== d.oldlines[j]) { - return false; - } - } - Array.prototype.splice.apply(str,[d.start-1,+d.oldlength].concat(d.newlines)); - } - - if (remEOFNL) { - while (!str[str.length-1]) { - str.pop(); - } - } else if (addEOFNL) { - str.push(''); - } - return str.join('\n'); - }, - - convertChangesToXML: function(changes){ - var ret = []; - for ( var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - ret.push(escapeHTML(change.value)); + return str.replace(matchOperatorsRe, '\\$&'); + }; + }); // module: browser/escape-string-regexp.js - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - } - return ret.join(''); - }, - - // See: http://code.google.com/p/google-diff-match-patch/wiki/API - convertChangesToDMP: function(changes){ - var ret = [], change; - for ( var i = 0; i < changes.length; i++) { - change = changes[i]; - ret.push([(change.added ? 1 : change.removed ? -1 : 0), change.value]); - } - return ret; - } - }; -})(); - -if (typeof module !== 'undefined') { - module.exports = JsDiff; -} - -}); // module: browser/diff.js - -require.register("browser/escape-string-regexp.js", function(module, exports, require){ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; - -}); // module: browser/escape-string-regexp.js - -require.register("browser/events.js", function(module, exports, require){ - -/** + require.register('browser/events.js', function(module, exports, require) { + /** * Module exports. */ -exports.EventEmitter = EventEmitter; + exports.EventEmitter = EventEmitter; -/** + /** * Check if `obj` is an array. */ -function isArray(obj) { - return '[object Array]' == {}.toString.call(obj); -} + function isArray(obj) { + return '[object Array]' == {}.toString.call(obj); + } -/** + /** * Event emitter constructor. * * @api public */ -function EventEmitter(){}; + function EventEmitter() {} -/** + /** * Adds a listener. * * @api public */ -EventEmitter.prototype.on = function (name, fn) { - if (!this.$events) { - this.$events = {}; - } + EventEmitter.prototype.on = function(name, fn) { + if (!this.$events) { + this.$events = {}; + } - if (!this.$events[name]) { - this.$events[name] = fn; - } else if (isArray(this.$events[name])) { - this.$events[name].push(fn); - } else { - this.$events[name] = [this.$events[name], fn]; - } + if (!this.$events[name]) { + this.$events[name] = fn; + } else if (isArray(this.$events[name])) { + this.$events[name].push(fn); + } else { + this.$events[name] = [this.$events[name], fn]; + } - return this; -}; + return this; + }; -EventEmitter.prototype.addListener = EventEmitter.prototype.on; + EventEmitter.prototype.addListener = EventEmitter.prototype.on; -/** + /** * Adds a volatile listener. * * @api public */ -EventEmitter.prototype.once = function (name, fn) { - var self = this; + EventEmitter.prototype.once = function(name, fn) { + var self = this; - function on () { - self.removeListener(name, on); - fn.apply(this, arguments); - }; + function on() { + self.removeListener(name, on); + fn.apply(this, arguments); + } - on.listener = fn; - this.on(name, on); + on.listener = fn; + this.on(name, on); - return this; -}; + return this; + }; -/** + /** * Removes a listener. * * @api public */ -EventEmitter.prototype.removeListener = function (name, fn) { - if (this.$events && this.$events[name]) { - var list = this.$events[name]; + EventEmitter.prototype.removeListener = function(name, fn) { + if (this.$events && this.$events[name]) { + var list = this.$events[name]; - if (isArray(list)) { - var pos = -1; + if (isArray(list)) { + var pos = -1; - for (var i = 0, l = list.length; i < l; i++) { - if (list[i] === fn || (list[i].listener && list[i].listener === fn)) { - pos = i; - break; - } - } + for (var i = 0, l = list.length; i < l; i++) { + if (list[i] === fn || (list[i].listener && list[i].listener === fn)) { + pos = i; + break; + } + } - if (pos < 0) { - return this; - } + if (pos < 0) { + return this; + } - list.splice(pos, 1); + list.splice(pos, 1); - if (!list.length) { - delete this.$events[name]; - } - } else if (list === fn || (list.listener && list.listener === fn)) { - delete this.$events[name]; - } - } + if (!list.length) { + delete this.$events[name]; + } + } else if (list === fn || (list.listener && list.listener === fn)) { + delete this.$events[name]; + } + } - return this; -}; + return this; + }; -/** + /** * Removes all listeners for an event. * * @api public */ -EventEmitter.prototype.removeAllListeners = function (name) { - if (name === undefined) { - this.$events = {}; - return this; - } + EventEmitter.prototype.removeAllListeners = function(name) { + if (name === undefined) { + this.$events = {}; + return this; + } - if (this.$events && this.$events[name]) { - this.$events[name] = null; - } + if (this.$events && this.$events[name]) { + this.$events[name] = null; + } - return this; -}; + return this; + }; -/** + /** * Gets all listeners for a certain event. * * @api public */ -EventEmitter.prototype.listeners = function (name) { - if (!this.$events) { - this.$events = {}; - } + EventEmitter.prototype.listeners = function(name) { + if (!this.$events) { + this.$events = {}; + } - if (!this.$events[name]) { - this.$events[name] = []; - } + if (!this.$events[name]) { + this.$events[name] = []; + } - if (!isArray(this.$events[name])) { - this.$events[name] = [this.$events[name]]; - } + if (!isArray(this.$events[name])) { + this.$events[name] = [this.$events[name]]; + } - return this.$events[name]; -}; + return this.$events[name]; + }; -/** + /** * Emits an event. * * @api public */ -EventEmitter.prototype.emit = function (name) { - if (!this.$events) { - return false; - } - - var handler = this.$events[name]; - - if (!handler) { - return false; - } - - var args = [].slice.call(arguments, 1); + EventEmitter.prototype.emit = function(name) { + if (!this.$events) { + return false; + } - if ('function' == typeof handler) { - handler.apply(this, args); - } else if (isArray(handler)) { - var listeners = handler.slice(); + var handler = this.$events[name]; - for (var i = 0, l = listeners.length; i < l; i++) { - listeners[i].apply(this, args); - } - } else { - return false; - } + if (!handler) { + return false; + } - return true; -}; -}); // module: browser/events.js + var args = [].slice.call(arguments, 1); -require.register("browser/fs.js", function(module, exports, require){ + if ('function' == typeof handler) { + handler.apply(this, args); + } else if (isArray(handler)) { + var listeners = handler.slice(); -}); // module: browser/fs.js + for (var i = 0, l = listeners.length; i < l; i++) { + listeners[i].apply(this, args); + } + } else { + return false; + } -require.register("browser/glob.js", function(module, exports, require){ + return true; + }; + }); // module: browser/events.js -}); // module: browser/glob.js + require.register('browser/fs.js', function(module, exports, require) {}); // module: browser/fs.js -require.register("browser/path.js", function(module, exports, require){ + require.register('browser/glob.js', function(module, exports, require) {}); // module: browser/glob.js -}); // module: browser/path.js + require.register('browser/path.js', function(module, exports, require) {}); // module: browser/path.js -require.register("browser/progress.js", function(module, exports, require){ -/** + require.register('browser/progress.js', function(module, exports, require) { + /** * Expose `Progress`. */ -module.exports = Progress; + module.exports = Progress; -/** + /** * Initialize a new `Progress` indicator. */ -function Progress() { - this.percent = 0; - this.size(0); - this.fontSize(11); - this.font('helvetica, arial, sans-serif'); -} + function Progress() { + this.percent = 0; + this.size(0); + this.fontSize(11); + this.font('helvetica, arial, sans-serif'); + } -/** + /** * Set progress size to `n`. * * @param {Number} n @@ -663,12 +726,12 @@ function Progress() { * @api public */ -Progress.prototype.size = function(n){ - this._size = n; - return this; -}; + Progress.prototype.size = function(n) { + this._size = n; + return this; + }; -/** + /** * Set text to `str`. * * @param {String} str @@ -676,12 +739,12 @@ Progress.prototype.size = function(n){ * @api public */ -Progress.prototype.text = function(str){ - this._text = str; - return this; -}; + Progress.prototype.text = function(str) { + this._text = str; + return this; + }; -/** + /** * Set font size to `n`. * * @param {Number} n @@ -689,117 +752,110 @@ Progress.prototype.text = function(str){ * @api public */ -Progress.prototype.fontSize = function(n){ - this._fontSize = n; - return this; -}; + Progress.prototype.fontSize = function(n) { + this._fontSize = n; + return this; + }; -/** + /** * Set font `family`. * * @param {String} family * @return {Progress} for chaining */ -Progress.prototype.font = function(family){ - this._font = family; - return this; -}; + Progress.prototype.font = function(family) { + this._font = family; + return this; + }; -/** + /** * Update percentage to `n`. * * @param {Number} n * @return {Progress} for chaining */ -Progress.prototype.update = function(n){ - this.percent = n; - return this; -}; + Progress.prototype.update = function(n) { + this.percent = n; + return this; + }; -/** + /** * Draw on `ctx`. * * @param {CanvasRenderingContext2d} ctx * @return {Progress} for chaining */ -Progress.prototype.draw = function(ctx){ - try { - var percent = Math.min(this.percent, 100) - , size = this._size - , half = size / 2 - , x = half - , y = half - , rad = half - 1 - , fontSize = this._fontSize; - - ctx.font = fontSize + 'px ' + this._font; - - var angle = Math.PI * 2 * (percent / 100); - ctx.clearRect(0, 0, size, size); - - // outer circle - ctx.strokeStyle = '#9f9f9f'; - ctx.beginPath(); - ctx.arc(x, y, rad, 0, angle, false); - ctx.stroke(); - - // inner circle - ctx.strokeStyle = '#eee'; - ctx.beginPath(); - ctx.arc(x, y, rad - 1, 0, angle, true); - ctx.stroke(); - - // text - var text = this._text || (percent | 0) + '%' - , w = ctx.measureText(text).width; - - ctx.fillText( - text - , x - w / 2 + 1 - , y + fontSize / 2 - 1); - } catch (ex) {} //don't fail if we can't render progress - return this; -}; - -}); // module: browser/progress.js - -require.register("browser/tty.js", function(module, exports, require){ - -exports.isatty = function(){ - return true; -}; - -exports.getWindowSize = function(){ - if ('innerHeight' in global) { - return [global.innerHeight, global.innerWidth]; - } else { - // In a Web Worker, the DOM Window is not available. - return [640, 480]; - } -}; - -}); // module: browser/tty.js - -require.register("context.js", function(module, exports, require){ + Progress.prototype.draw = function(ctx) { + try { + var percent = Math.min(this.percent, 100), + size = this._size, + half = size / 2, + x = half, + y = half, + rad = half - 1, + fontSize = this._fontSize; + + ctx.font = fontSize + 'px ' + this._font; + + var angle = Math.PI * 2 * (percent / 100); + ctx.clearRect(0, 0, size, size); + + // outer circle + ctx.strokeStyle = '#9f9f9f'; + ctx.beginPath(); + ctx.arc(x, y, rad, 0, angle, false); + ctx.stroke(); + + // inner circle + ctx.strokeStyle = '#eee'; + ctx.beginPath(); + ctx.arc(x, y, rad - 1, 0, angle, true); + ctx.stroke(); + + // text + var text = this._text || (percent | 0) + '%', + w = ctx.measureText(text).width; + + ctx.fillText(text, x - w / 2 + 1, y + fontSize / 2 - 1); + } catch (ex) {} //don't fail if we can't render progress + return this; + }; + }); // module: browser/progress.js + + require.register('browser/tty.js', function(module, exports, require) { + exports.isatty = function() { + return true; + }; + + exports.getWindowSize = function() { + if ('innerHeight' in global) { + return [global.innerHeight, global.innerWidth]; + } else { + // In a Web Worker, the DOM Window is not available. + return [640, 480]; + } + }; + }); // module: browser/tty.js -/** + require.register('context.js', function(module, exports, require) { + /** * Expose `Context`. */ -module.exports = Context; + module.exports = Context; -/** + /** * Initialize a new `Context`. * * @api private */ -function Context(){} + function Context() {} -/** + /** * Set or get the context `Runnable` to `runnable`. * * @param {Runnable} runnable @@ -807,13 +863,13 @@ function Context(){} * @api private */ -Context.prototype.runnable = function(runnable){ - if (0 == arguments.length) return this._runnable; - this.test = this._runnable = runnable; - return this; -}; + Context.prototype.runnable = function(runnable) { + if (0 == arguments.length) return this._runnable; + this.test = this._runnable = runnable; + return this; + }; -/** + /** * Set test timeout `ms`. * * @param {Number} ms @@ -821,13 +877,13 @@ Context.prototype.runnable = function(runnable){ * @api private */ -Context.prototype.timeout = function(ms){ - if (arguments.length === 0) return this.runnable().timeout(); - this.runnable().timeout(ms); - return this; -}; + Context.prototype.timeout = function(ms) { + if (arguments.length === 0) return this.runnable().timeout(); + this.runnable().timeout(ms); + return this; + }; -/** + /** * Set test timeout `enabled`. * * @param {Boolean} enabled @@ -835,13 +891,12 @@ Context.prototype.timeout = function(ms){ * @api private */ -Context.prototype.enableTimeouts = function (enabled) { - this.runnable().enableTimeouts(enabled); - return this; -}; - + Context.prototype.enableTimeouts = function(enabled) { + this.runnable().enableTimeouts(enabled); + return this; + }; -/** + /** * Set test slowness threshold `ms`. * * @param {Number} ms @@ -849,43 +904,45 @@ Context.prototype.enableTimeouts = function (enabled) { * @api private */ -Context.prototype.slow = function(ms){ - this.runnable().slow(ms); - return this; -}; + Context.prototype.slow = function(ms) { + this.runnable().slow(ms); + return this; + }; -/** + /** * Inspect the context void of `._runnable`. * * @return {String} * @api private */ -Context.prototype.inspect = function(){ - return JSON.stringify(this, function(key, val){ - if ('_runnable' == key) return; - if ('test' == key) return; - return val; - }, 2); -}; - -}); // module: context.js - -require.register("hook.js", function(module, exports, require){ - -/** + Context.prototype.inspect = function() { + return JSON.stringify( + this, + function(key, val) { + if ('_runnable' == key) return; + if ('test' == key) return; + return val; + }, + 2 + ); + }; + }); // module: context.js + + require.register('hook.js', function(module, exports, require) { + /** * Module dependencies. */ -var Runnable = require('./runnable'); + var Runnable = require('./runnable'); -/** + /** * Expose `Hook`. */ -module.exports = Hook; + module.exports = Hook; -/** + /** * Initialize a new `Hook` with the given `title` and callback `fn`. * * @param {String} title @@ -893,22 +950,21 @@ module.exports = Hook; * @api private */ -function Hook(title, fn) { - Runnable.call(this, title, fn); - this.type = 'hook'; -} + function Hook(title, fn) { + Runnable.call(this, title, fn); + this.type = 'hook'; + } -/** + /** * Inherit from `Runnable.prototype`. */ -function F(){}; -F.prototype = Runnable.prototype; -Hook.prototype = new F; -Hook.prototype.constructor = Hook; + function F() {} + F.prototype = Runnable.prototype; + Hook.prototype = new F(); + Hook.prototype.constructor = Hook; - -/** + /** * Get or set the test `err`. * * @param {Error} err @@ -916,30 +972,28 @@ Hook.prototype.constructor = Hook; * @api public */ -Hook.prototype.error = function(err){ - if (0 == arguments.length) { - var err = this._error; - this._error = null; - return err; - } - - this._error = err; -}; - -}); // module: hook.js + Hook.prototype.error = function(err) { + if (0 == arguments.length) { + var err = this._error; + this._error = null; + return err; + } -require.register("interfaces/bdd.js", function(module, exports, require){ + this._error = err; + }; + }); // module: hook.js -/** + require.register('interfaces/bdd.js', function(module, exports, require) { + /** * Module dependencies. */ -var Suite = require('../suite') - , Test = require('../test') - , utils = require('../utils') - , escapeRe = require('browser/escape-string-regexp'); + var Suite = require('../suite'), + Test = require('../test'), + utils = require('../utils'), + escapeRe = require('browser/escape-string-regexp'); -/** + /** * BDD-style interface: * * describe('Array', function(){ @@ -956,132 +1010,125 @@ var Suite = require('../suite') * */ -module.exports = function(suite){ - var suites = [suite]; + module.exports = function(suite) { + var suites = [suite]; - suite.on('pre-require', function(context, file, mocha){ - - /** + suite.on('pre-require', function(context, file, mocha) { + /** * Execute before running tests. */ - context.before = function(name, fn){ - suites[0].beforeAll(name, fn); - }; + context.before = function(name, fn) { + suites[0].beforeAll(name, fn); + }; - /** + /** * Execute after running tests. */ - context.after = function(name, fn){ - suites[0].afterAll(name, fn); - }; + context.after = function(name, fn) { + suites[0].afterAll(name, fn); + }; - /** + /** * Execute before each test case. */ - context.beforeEach = function(name, fn){ - suites[0].beforeEach(name, fn); - }; + context.beforeEach = function(name, fn) { + suites[0].beforeEach(name, fn); + }; - /** + /** * Execute after each test case. */ - context.afterEach = function(name, fn){ - suites[0].afterEach(name, fn); - }; + context.afterEach = function(name, fn) { + suites[0].afterEach(name, fn); + }; - /** + /** * Describe a "suite" with the given `title` * and callback `fn` containing nested suites * and/or tests. */ - context.describe = context.context = function(title, fn){ - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - return suite; - }; + context.describe = context.context = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + return suite; + }; - /** + /** * Pending describe. */ - context.xdescribe = - context.xcontext = - context.describe.skip = function(title, fn){ - var suite = Suite.create(suites[0], title); - suite.pending = true; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - }; + context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.pending = true; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + }; - /** + /** * Exclusive suite. */ - context.describe.only = function(title, fn){ - var suite = context.describe(title, fn); - mocha.grep(suite.fullTitle()); - return suite; - }; + context.describe.only = function(title, fn) { + var suite = context.describe(title, fn); + mocha.grep(suite.fullTitle()); + return suite; + }; - /** + /** * Describe a specification or test-case * with the given `title` and callback `fn` * acting as a thunk. */ - context.it = context.specify = function(title, fn){ - var suite = suites[0]; - if (suite.pending) fn = null; - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; + context.it = context.specify = function(title, fn) { + var suite = suites[0]; + if (suite.pending) fn = null; + var test = new Test(title, fn); + test.file = file; + suite.addTest(test); + return test; + }; - /** + /** * Exclusive test-case. */ - context.it.only = function(title, fn){ - var test = context.it(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - return test; - }; + context.it.only = function(title, fn) { + var test = context.it(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + return test; + }; - /** + /** * Pending test case. */ - context.xit = - context.xspecify = - context.it.skip = function(title){ - context.it(title); - }; - }); -}; - -}); // module: interfaces/bdd.js - -require.register("interfaces/exports.js", function(module, exports, require){ + context.xit = context.xspecify = context.it.skip = function(title) { + context.it(title); + }; + }); + }; + }); // module: interfaces/bdd.js -/** + require.register('interfaces/exports.js', function(module, exports, require) { + /** * Module dependencies. */ -var Suite = require('../suite') - , Test = require('../test'); + var Suite = require('../suite'), + Test = require('../test'); -/** + /** * TDD-style interface: * * exports.Array = { @@ -1098,67 +1145,63 @@ var Suite = require('../suite') * */ -module.exports = function(suite){ - var suites = [suite]; - - suite.on('require', visit); - - function visit(obj, file) { - var suite; - for (var key in obj) { - if ('function' == typeof obj[key]) { - var fn = obj[key]; - switch (key) { - case 'before': - suites[0].beforeAll(fn); - break; - case 'after': - suites[0].afterAll(fn); - break; - case 'beforeEach': - suites[0].beforeEach(fn); - break; - case 'afterEach': - suites[0].afterEach(fn); - break; - default: - var test = new Test(key, fn); - test.file = file; - suites[0].addTest(test); - } - } else { - suite = Suite.create(suites[0], key); - suites.unshift(suite); - visit(obj[key]); - suites.shift(); - } - } - } -}; - -}); // module: interfaces/exports.js - -require.register("interfaces/index.js", function(module, exports, require){ - -exports.bdd = require('./bdd'); -exports.tdd = require('./tdd'); -exports.qunit = require('./qunit'); -exports.exports = require('./exports'); - -}); // module: interfaces/index.js - -require.register("interfaces/qunit.js", function(module, exports, require){ - -/** + module.exports = function(suite) { + var suites = [suite]; + + suite.on('require', visit); + + function visit(obj, file) { + var suite; + for (var key in obj) { + if ('function' == typeof obj[key]) { + var fn = obj[key]; + switch (key) { + case 'before': + suites[0].beforeAll(fn); + break; + case 'after': + suites[0].afterAll(fn); + break; + case 'beforeEach': + suites[0].beforeEach(fn); + break; + case 'afterEach': + suites[0].afterEach(fn); + break; + default: + var test = new Test(key, fn); + test.file = file; + suites[0].addTest(test); + } + } else { + suite = Suite.create(suites[0], key); + suites.unshift(suite); + visit(obj[key]); + suites.shift(); + } + } + } + }; + }); // module: interfaces/exports.js + + require.register('interfaces/index.js', function(module, exports, require) { + exports.bdd = require('./bdd'); + exports.tdd = require('./tdd'); + exports.qunit = require('./qunit'); + exports.exports = require('./exports'); + }); // module: interfaces/index.js + + require.register('interfaces/qunit.js', function(module, exports, require) { + /** * Module dependencies. */ -var Suite = require('../suite') - , Test = require('../test') - , escapeRe = require('browser/escape-string-regexp') - , utils = require('../utils'); + var Suite = require('../suite'), + Test = require('../test'), + escapeRe = require('browser/escape-string-regexp'), + utils = require('../utils'); -/** + /** * QUnit-style interface: * * suite('Array'); @@ -1183,111 +1226,108 @@ var Suite = require('../suite') * */ -module.exports = function(suite){ - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha){ + module.exports = function(suite) { + var suites = [suite]; - /** + suite.on('pre-require', function(context, file, mocha) { + /** * Execute before running tests. */ - context.before = function(name, fn){ - suites[0].beforeAll(name, fn); - }; + context.before = function(name, fn) { + suites[0].beforeAll(name, fn); + }; - /** + /** * Execute after running tests. */ - context.after = function(name, fn){ - suites[0].afterAll(name, fn); - }; + context.after = function(name, fn) { + suites[0].afterAll(name, fn); + }; - /** + /** * Execute before each test case. */ - context.beforeEach = function(name, fn){ - suites[0].beforeEach(name, fn); - }; + context.beforeEach = function(name, fn) { + suites[0].beforeEach(name, fn); + }; - /** + /** * Execute after each test case. */ - context.afterEach = function(name, fn){ - suites[0].afterEach(name, fn); - }; + context.afterEach = function(name, fn) { + suites[0].afterEach(name, fn); + }; - /** + /** * Describe a "suite" with the given `title`. */ - context.suite = function(title){ - if (suites.length > 1) suites.shift(); - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - return suite; - }; + context.suite = function(title) { + if (suites.length > 1) suites.shift(); + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + return suite; + }; - /** + /** * Exclusive test-case. */ - context.suite.only = function(title, fn){ - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; - /** + /** * Describe a specification or test-case * with the given `title` and callback `fn` * acting as a thunk. */ - context.test = function(title, fn){ - var test = new Test(title, fn); - test.file = file; - suites[0].addTest(test); - return test; - }; + context.test = function(title, fn) { + var test = new Test(title, fn); + test.file = file; + suites[0].addTest(test); + return test; + }; - /** + /** * Exclusive test-case. */ - context.test.only = function(title, fn){ - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; - /** + /** * Pending test case. */ - context.test.skip = function(title){ - context.test(title); - }; - }); -}; - -}); // module: interfaces/qunit.js - -require.register("interfaces/tdd.js", function(module, exports, require){ + context.test.skip = function(title) { + context.test(title); + }; + }); + }; + }); // module: interfaces/qunit.js -/** + require.register('interfaces/tdd.js', function(module, exports, require) { + /** * Module dependencies. */ -var Suite = require('../suite') - , Test = require('../test') - , escapeRe = require('browser/escape-string-regexp') - , utils = require('../utils'); + var Suite = require('../suite'), + Test = require('../test'), + escapeRe = require('browser/escape-string-regexp'), + utils = require('../utils'); -/** + /** * TDD-style interface: * * suite('Array', function(){ @@ -1312,161 +1352,159 @@ var Suite = require('../suite') * */ -module.exports = function(suite){ - var suites = [suite]; + module.exports = function(suite) { + var suites = [suite]; - suite.on('pre-require', function(context, file, mocha){ - - /** + suite.on('pre-require', function(context, file, mocha) { + /** * Execute before each test case. */ - context.setup = function(name, fn){ - suites[0].beforeEach(name, fn); - }; + context.setup = function(name, fn) { + suites[0].beforeEach(name, fn); + }; - /** + /** * Execute after each test case. */ - context.teardown = function(name, fn){ - suites[0].afterEach(name, fn); - }; + context.teardown = function(name, fn) { + suites[0].afterEach(name, fn); + }; - /** + /** * Execute before the suite. */ - context.suiteSetup = function(name, fn){ - suites[0].beforeAll(name, fn); - }; + context.suiteSetup = function(name, fn) { + suites[0].beforeAll(name, fn); + }; - /** + /** * Execute after the suite. */ - context.suiteTeardown = function(name, fn){ - suites[0].afterAll(name, fn); - }; + context.suiteTeardown = function(name, fn) { + suites[0].afterAll(name, fn); + }; - /** + /** * Describe a "suite" with the given `title` * and callback `fn` containing nested suites * and/or tests. */ - context.suite = function(title, fn){ - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - return suite; - }; + context.suite = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.file = file; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + return suite; + }; - /** + /** * Pending suite. */ - context.suite.skip = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.pending = true; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - }; - - /** + context.suite.skip = function(title, fn) { + var suite = Suite.create(suites[0], title); + suite.pending = true; + suites.unshift(suite); + fn.call(suite); + suites.shift(); + }; + + /** * Exclusive test-case. */ - context.suite.only = function(title, fn){ - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; + context.suite.only = function(title, fn) { + var suite = context.suite(title, fn); + mocha.grep(suite.fullTitle()); + }; - /** + /** * Describe a specification or test-case * with the given `title` and callback `fn` * acting as a thunk. */ - context.test = function(title, fn){ - var suite = suites[0]; - if (suite.pending) fn = null; - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; + context.test = function(title, fn) { + var suite = suites[0]; + if (suite.pending) fn = null; + var test = new Test(title, fn); + test.file = file; + suite.addTest(test); + return test; + }; - /** + /** * Exclusive test-case. */ - context.test.only = function(title, fn){ - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; + context.test.only = function(title, fn) { + var test = context.test(title, fn); + var reString = '^' + escapeRe(test.fullTitle()) + '$'; + mocha.grep(new RegExp(reString)); + }; - /** + /** * Pending test case. */ - context.test.skip = function(title){ - context.test(title); - }; - }); -}; - -}); // module: interfaces/tdd.js + context.test.skip = function(title) { + context.test(title); + }; + }); + }; + }); // module: interfaces/tdd.js -require.register("mocha.js", function(module, exports, require){ -/*! + require.register('mocha.js', function(module, exports, require) { + /*! * mocha * Copyright(c) 2011 TJ Holowaychuk * MIT Licensed */ -/** + /** * Module dependencies. */ -var path = require('browser/path') - , escapeRe = require('browser/escape-string-regexp') - , utils = require('./utils'); + var path = require('browser/path'), + escapeRe = require('browser/escape-string-regexp'), + utils = require('./utils'); -/** + /** * Expose `Mocha`. */ -exports = module.exports = Mocha; + exports = module.exports = Mocha; -/** + /** * To require local UIs and reporters when running in node. */ -if (typeof process !== 'undefined' && typeof process.cwd === 'function') { - var join = path.join - , cwd = process.cwd(); - module.paths.push(cwd, join(cwd, 'node_modules')); -} + if (typeof process !== 'undefined' && typeof process.cwd === 'function') { + var join = path.join, + cwd = process.cwd(); + module.paths.push(cwd, join(cwd, 'node_modules')); + } -/** + /** * Expose internals. */ -exports.utils = utils; -exports.interfaces = require('./interfaces'); -exports.reporters = require('./reporters'); -exports.Runnable = require('./runnable'); -exports.Context = require('./context'); -exports.Runner = require('./runner'); -exports.Suite = require('./suite'); -exports.Hook = require('./hook'); -exports.Test = require('./test'); + exports.utils = utils; + exports.interfaces = require('./interfaces'); + exports.reporters = require('./reporters'); + exports.Runnable = require('./runnable'); + exports.Context = require('./context'); + exports.Runner = require('./runner'); + exports.Suite = require('./suite'); + exports.Hook = require('./hook'); + exports.Test = require('./test'); -/** + /** * Return image `name` path. * * @param {String} name @@ -1474,11 +1512,11 @@ exports.Test = require('./test'); * @api private */ -function image(name) { - return __dirname + '/../images/' + name + '.png'; -} + function image(name) { + return __dirname + '/../images/' + name + '.png'; + } -/** + /** * Setup mocha with `options`. * * Options: @@ -1496,146 +1534,156 @@ function image(name) { * @api public */ -function Mocha(options) { - options = options || {}; - this.files = []; - this.options = options; - this.grep(options.grep); - this.suite = new exports.Suite('', new exports.Context); - this.ui(options.ui); - this.bail(options.bail); - this.reporter(options.reporter); - if (null != options.timeout) this.timeout(options.timeout); - this.useColors(options.useColors) - if (options.enableTimeouts !== null) this.enableTimeouts(options.enableTimeouts); - if (options.slow) this.slow(options.slow); - - this.suite.on('pre-require', function (context) { - exports.afterEach = context.afterEach || context.teardown; - exports.after = context.after || context.suiteTeardown; - exports.beforeEach = context.beforeEach || context.setup; - exports.before = context.before || context.suiteSetup; - exports.describe = context.describe || context.suite; - exports.it = context.it || context.test; - exports.setup = context.setup || context.beforeEach; - exports.suiteSetup = context.suiteSetup || context.before; - exports.suiteTeardown = context.suiteTeardown || context.after; - exports.suite = context.suite || context.describe; - exports.teardown = context.teardown || context.afterEach; - exports.test = context.test || context.it; - }); -} - -/** + function Mocha(options) { + options = options || {}; + this.files = []; + this.options = options; + this.grep(options.grep); + this.suite = new exports.Suite('', new exports.Context()); + this.ui(options.ui); + this.bail(options.bail); + this.reporter(options.reporter); + if (null != options.timeout) this.timeout(options.timeout); + this.useColors(options.useColors); + if (options.enableTimeouts !== null) this.enableTimeouts(options.enableTimeouts); + if (options.slow) this.slow(options.slow); + + this.suite.on('pre-require', function(context) { + exports.afterEach = context.afterEach || context.teardown; + exports.after = context.after || context.suiteTeardown; + exports.beforeEach = context.beforeEach || context.setup; + exports.before = context.before || context.suiteSetup; + exports.describe = context.describe || context.suite; + exports.it = context.it || context.test; + exports.setup = context.setup || context.beforeEach; + exports.suiteSetup = context.suiteSetup || context.before; + exports.suiteTeardown = context.suiteTeardown || context.after; + exports.suite = context.suite || context.describe; + exports.teardown = context.teardown || context.afterEach; + exports.test = context.test || context.it; + }); + } + + /** * Enable or disable bailing on the first failure. * * @param {Boolean} [bail] * @api public */ -Mocha.prototype.bail = function(bail){ - if (0 == arguments.length) bail = true; - this.suite.bail(bail); - return this; -}; + Mocha.prototype.bail = function(bail) { + if (0 == arguments.length) bail = true; + this.suite.bail(bail); + return this; + }; -/** + /** * Add test `file`. * * @param {String} file * @api public */ -Mocha.prototype.addFile = function(file){ - this.files.push(file); - return this; -}; + Mocha.prototype.addFile = function(file) { + this.files.push(file); + return this; + }; -/** + /** * Set reporter to `reporter`, defaults to "spec". * * @param {String|Function} reporter name or constructor * @api public */ -Mocha.prototype.reporter = function(reporter){ - if ('function' == typeof reporter) { - this._reporter = reporter; - } else { - reporter = reporter || 'spec'; - var _reporter; - try { _reporter = require('./reporters/' + reporter); } catch (err) {}; - if (!_reporter) try { _reporter = require(reporter); } catch (err) {}; - if (!_reporter && reporter === 'teamcity') - console.warn('The Teamcity reporter was moved to a package named ' + - 'mocha-teamcity-reporter ' + - '(https://npmjs.org/package/mocha-teamcity-reporter).'); - if (!_reporter) throw new Error('invalid reporter "' + reporter + '"'); - this._reporter = _reporter; - } - return this; -}; - -/** + Mocha.prototype.reporter = function(reporter) { + if ('function' == typeof reporter) { + this._reporter = reporter; + } else { + reporter = reporter || 'spec'; + var _reporter; + try { + _reporter = require('./reporters/' + reporter); + } catch (err) {} + if (!_reporter) + try { + _reporter = require(reporter); + } catch (err) {} + if (!_reporter && reporter === 'teamcity') + console.warn( + 'The Teamcity reporter was moved to a package named ' + + 'mocha-teamcity-reporter ' + + '(https://npmjs.org/package/mocha-teamcity-reporter).' + ); + if (!_reporter) throw new Error('invalid reporter "' + reporter + '"'); + this._reporter = _reporter; + } + return this; + }; + + /** * Set test UI `name`, defaults to "bdd". * * @param {String} bdd * @api public */ -Mocha.prototype.ui = function(name){ - name = name || 'bdd'; - this._ui = exports.interfaces[name]; - if (!this._ui) try { this._ui = require(name); } catch (err) {}; - if (!this._ui) throw new Error('invalid interface "' + name + '"'); - this._ui = this._ui(this.suite); - return this; -}; + Mocha.prototype.ui = function(name) { + name = name || 'bdd'; + this._ui = exports.interfaces[name]; + if (!this._ui) + try { + this._ui = require(name); + } catch (err) {} + if (!this._ui) throw new Error('invalid interface "' + name + '"'); + this._ui = this._ui(this.suite); + return this; + }; -/** + /** * Load registered files. * * @api private */ -Mocha.prototype.loadFiles = function(fn){ - var self = this; - var suite = this.suite; - var pending = this.files.length; - this.files.forEach(function(file){ - file = path.resolve(file); - suite.emit('pre-require', global, file, self); - suite.emit('require', require(file), file, self); - suite.emit('post-require', global, file, self); - --pending || (fn && fn()); - }); -}; - -/** + Mocha.prototype.loadFiles = function(fn) { + var self = this; + var suite = this.suite; + var pending = this.files.length; + this.files.forEach(function(file) { + file = path.resolve(file); + suite.emit('pre-require', global, file, self); + suite.emit('require', require(file), file, self); + suite.emit('post-require', global, file, self); + --pending || (fn && fn()); + }); + }; + + /** * Enable growl support. * * @api private */ -Mocha.prototype._growl = function(runner, reporter) { - var notify = require('growl'); - - runner.on('end', function(){ - var stats = reporter.stats; - if (stats.failures) { - var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); - } else { - notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { - name: 'mocha' - , title: 'Passed' - , image: image('ok') - }); - } - }); -}; - -/** + Mocha.prototype._growl = function(runner, reporter) { + var notify = require('growl'); + + runner.on('end', function() { + var stats = reporter.stats; + if (stats.failures) { + var msg = stats.failures + ' of ' + runner.total + ' tests failed'; + notify(msg, {name: 'mocha', title: 'Failed', image: image('error')}); + } else { + notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { + name: 'mocha', + title: 'Passed', + image: image('ok') + }); + } + }); + }; + + /** * Add regexp to grep, if `re` is a string it is escaped. * * @param {RegExp|String} re @@ -1643,26 +1691,24 @@ Mocha.prototype._growl = function(runner, reporter) { * @api public */ -Mocha.prototype.grep = function(re){ - this.options.grep = 'string' == typeof re - ? new RegExp(escapeRe(re)) - : re; - return this; -}; + Mocha.prototype.grep = function(re) { + this.options.grep = 'string' == typeof re ? new RegExp(escapeRe(re)) : re; + return this; + }; -/** + /** * Invert `.grep()` matches. * * @return {Mocha} * @api public */ -Mocha.prototype.invert = function(){ - this.options.invert = true; - return this; -}; + Mocha.prototype.invert = function() { + this.options.invert = true; + return this; + }; -/** + /** * Ignore global leaks. * * @param {Boolean} ignore @@ -1670,36 +1716,36 @@ Mocha.prototype.invert = function(){ * @api public */ -Mocha.prototype.ignoreLeaks = function(ignore){ - this.options.ignoreLeaks = !!ignore; - return this; -}; + Mocha.prototype.ignoreLeaks = function(ignore) { + this.options.ignoreLeaks = !!ignore; + return this; + }; -/** + /** * Enable global leak checking. * * @return {Mocha} * @api public */ -Mocha.prototype.checkLeaks = function(){ - this.options.ignoreLeaks = false; - return this; -}; + Mocha.prototype.checkLeaks = function() { + this.options.ignoreLeaks = false; + return this; + }; -/** + /** * Enable growl support. * * @return {Mocha} * @api public */ -Mocha.prototype.growl = function(){ - this.options.growl = true; - return this; -}; + Mocha.prototype.growl = function() { + this.options.growl = true; + return this; + }; -/** + /** * Ignore `globals` array or string. * * @param {Array|String} globals @@ -1707,12 +1753,12 @@ Mocha.prototype.growl = function(){ * @api public */ -Mocha.prototype.globals = function(globals){ - this.options.globals = (this.options.globals || []).concat(globals); - return this; -}; + Mocha.prototype.globals = function(globals) { + this.options.globals = (this.options.globals || []).concat(globals); + return this; + }; -/** + /** * Emit color output. * * @param {Boolean} colors @@ -1720,14 +1766,12 @@ Mocha.prototype.globals = function(globals){ * @api public */ -Mocha.prototype.useColors = function(colors){ - this.options.useColors = arguments.length && colors != undefined - ? colors - : true; - return this; -}; + Mocha.prototype.useColors = function(colors) { + this.options.useColors = arguments.length && colors != undefined ? colors : true; + return this; + }; -/** + /** * Use inline diffs rather than +/-. * * @param {Boolean} inlineDiffs @@ -1735,14 +1779,13 @@ Mocha.prototype.useColors = function(colors){ * @api public */ -Mocha.prototype.useInlineDiffs = function(inlineDiffs) { - this.options.useInlineDiffs = arguments.length && inlineDiffs != undefined - ? inlineDiffs - : false; - return this; -}; + Mocha.prototype.useInlineDiffs = function(inlineDiffs) { + this.options.useInlineDiffs = + arguments.length && inlineDiffs != undefined ? inlineDiffs : false; + return this; + }; -/** + /** * Set the timeout in milliseconds. * * @param {Number} timeout @@ -1750,12 +1793,12 @@ Mocha.prototype.useInlineDiffs = function(inlineDiffs) { * @api public */ -Mocha.prototype.timeout = function(timeout){ - this.suite.timeout(timeout); - return this; -}; + Mocha.prototype.timeout = function(timeout) { + this.suite.timeout(timeout); + return this; + }; -/** + /** * Set slowness threshold in milliseconds. * * @param {Number} slow @@ -1763,12 +1806,12 @@ Mocha.prototype.timeout = function(timeout){ * @api public */ -Mocha.prototype.slow = function(slow){ - this.suite.slow(slow); - return this; -}; + Mocha.prototype.slow = function(slow) { + this.suite.slow(slow); + return this; + }; -/** + /** * Enable timeouts. * * @param {Boolean} enabled @@ -1776,36 +1819,34 @@ Mocha.prototype.slow = function(slow){ * @api public */ -Mocha.prototype.enableTimeouts = function(enabled) { - this.suite.enableTimeouts(arguments.length && enabled !== undefined - ? enabled - : true); - return this -}; + Mocha.prototype.enableTimeouts = function(enabled) { + this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); + return this; + }; -/** + /** * Makes all tests async (accepting a callback) * * @return {Mocha} * @api public */ -Mocha.prototype.asyncOnly = function(){ - this.options.asyncOnly = true; - return this; -}; + Mocha.prototype.asyncOnly = function() { + this.options.asyncOnly = true; + return this; + }; -/** + /** * Disable syntax highlighting (in browser). * @returns {Mocha} * @api public */ -Mocha.prototype.noHighlighting = function() { - this.options.noHighlighting = true; - return this; -}; + Mocha.prototype.noHighlighting = function() { + this.options.noHighlighting = true; + return this; + }; -/** + /** * Run tests and invoke `fn()` when complete. * * @param {Function} fn @@ -1813,37 +1854,36 @@ Mocha.prototype.noHighlighting = function() { * @api public */ -Mocha.prototype.run = function(fn){ - if (this.files.length) this.loadFiles(); - var suite = this.suite; - var options = this.options; - options.files = this.files; - var runner = new exports.Runner(suite); - var reporter = new this._reporter(runner, options); - runner.ignoreLeaks = false !== options.ignoreLeaks; - runner.asyncOnly = options.asyncOnly; - if (options.grep) runner.grep(options.grep, options.invert); - if (options.globals) runner.globals(options.globals); - if (options.growl) this._growl(runner, reporter); - exports.reporters.Base.useColors = options.useColors; - exports.reporters.Base.inlineDiffs = options.useInlineDiffs; - return runner.run(fn); -}; - -}); // module: mocha.js - -require.register("ms.js", function(module, exports, require){ -/** + Mocha.prototype.run = function(fn) { + if (this.files.length) this.loadFiles(); + var suite = this.suite; + var options = this.options; + options.files = this.files; + var runner = new exports.Runner(suite); + var reporter = new this._reporter(runner, options); + runner.ignoreLeaks = false !== options.ignoreLeaks; + runner.asyncOnly = options.asyncOnly; + if (options.grep) runner.grep(options.grep, options.invert); + if (options.globals) runner.globals(options.globals); + if (options.growl) this._growl(runner, reporter); + exports.reporters.Base.useColors = options.useColors; + exports.reporters.Base.inlineDiffs = options.useInlineDiffs; + return runner.run(fn); + }; + }); // module: mocha.js + + require.register('ms.js', function(module, exports, require) { + /** * Helpers. */ -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; + var s = 1000; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var y = d * 365.25; -/** + /** * Parse or format the given `val`. * * Options: @@ -1856,13 +1896,13 @@ var y = d * 365.25; * @api public */ -module.exports = function(val, options){ - options = options || {}; - if ('string' == typeof val) return parse(val); - return options['long'] ? longFormat(val) : shortFormat(val); -}; + module.exports = function(val, options) { + options = options || {}; + if ('string' == typeof val) return parse(val); + return options['long'] ? longFormat(val) : shortFormat(val); + }; -/** + /** * Parse the given `str` and return milliseconds. * * @param {String} str @@ -1870,38 +1910,40 @@ module.exports = function(val, options){ * @api private */ -function parse(str) { - var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str); - if (!match) return; - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - } -} - -/** + function parse(str) { + var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec( + str + ); + if (!match) return; + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 's': + return n * s; + case 'ms': + return n; + } + } + + /** * Short format for `ms`. * * @param {Number} ms @@ -1909,15 +1951,15 @@ function parse(str) { * @api private */ -function shortFormat(ms) { - if (ms >= d) return Math.round(ms / d) + 'd'; - if (ms >= h) return Math.round(ms / h) + 'h'; - if (ms >= m) return Math.round(ms / m) + 'm'; - if (ms >= s) return Math.round(ms / s) + 's'; - return ms + 'ms'; -} + function shortFormat(ms) { + if (ms >= d) return Math.round(ms / d) + 'd'; + if (ms >= h) return Math.round(ms / h) + 'h'; + if (ms >= m) return Math.round(ms / m) + 'm'; + if (ms >= s) return Math.round(ms / s) + 's'; + return ms + 'ms'; + } -/** + /** * Long format for `ms`. * * @param {Number} ms @@ -1925,115 +1967,115 @@ function shortFormat(ms) { * @api private */ -function longFormat(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} + function longFormat(ms) { + return ( + plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms' + ); + } -/** + /** * Pluralization helper. */ -function plural(ms, n, name) { - if (ms < n) return; - if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; - return Math.ceil(ms / n) + ' ' + name + 's'; -} - -}); // module: ms.js - -require.register("reporters/base.js", function(module, exports, require){ + function plural(ms, n, name) { + if (ms < n) return; + if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; + return Math.ceil(ms / n) + ' ' + name + 's'; + } + }); // module: ms.js -/** + require.register('reporters/base.js', function(module, exports, require) { + /** * Module dependencies. */ -var tty = require('browser/tty') - , diff = require('browser/diff') - , ms = require('../ms') - , utils = require('../utils'); + var tty = require('browser/tty'), + diff = require('browser/diff'), + ms = require('../ms'), + utils = require('../utils'); -/** + /** * Save timer references to avoid Sinon interfering (see GH-237). */ -var Date = global.Date - , setTimeout = global.setTimeout - , setInterval = global.setInterval - , clearTimeout = global.clearTimeout - , clearInterval = global.clearInterval; + var Date = global.Date, + setTimeout = global.setTimeout, + setInterval = global.setInterval, + clearTimeout = global.clearTimeout, + clearInterval = global.clearInterval; -/** + /** * Check if both stdio streams are associated with a tty. */ -var isatty = tty.isatty(1) && tty.isatty(2); + var isatty = tty.isatty(1) && tty.isatty(2); -/** + /** * Expose `Base`. */ -exports = module.exports = Base; + exports = module.exports = Base; -/** + /** * Enable coloring by default. */ -exports.useColors = isatty || (process.env.MOCHA_COLORS !== undefined); + exports.useColors = isatty || process.env.MOCHA_COLORS !== undefined; -/** + /** * Inline diffs instead of +/- */ -exports.inlineDiffs = false; + exports.inlineDiffs = false; -/** + /** * Default color map. */ -exports.colors = { - 'pass': 90 - , 'fail': 31 - , 'bright pass': 92 - , 'bright fail': 91 - , 'bright yellow': 93 - , 'pending': 36 - , 'suite': 0 - , 'error title': 0 - , 'error message': 31 - , 'error stack': 90 - , 'checkmark': 32 - , 'fast': 90 - , 'medium': 33 - , 'slow': 31 - , 'green': 32 - , 'light': 90 - , 'diff gutter': 90 - , 'diff added': 42 - , 'diff removed': 41 -}; - -/** + exports.colors = { + pass: 90, + fail: 31, + 'bright pass': 92, + 'bright fail': 91, + 'bright yellow': 93, + pending: 36, + suite: 0, + 'error title': 0, + 'error message': 31, + 'error stack': 90, + checkmark: 32, + fast: 90, + medium: 33, + slow: 31, + green: 32, + light: 90, + 'diff gutter': 90, + 'diff added': 42, + 'diff removed': 41 + }; + + /** * Default symbol map. */ -exports.symbols = { - ok: '✓', - err: '✖', - dot: '․' -}; + exports.symbols = { + ok: '✓', + err: '✖', + dot: '․' + }; -// With node.js on Windows: use symbols available in terminal default fonts -if ('win32' == process.platform) { - exports.symbols.ok = '\u221A'; - exports.symbols.err = '\u00D7'; - exports.symbols.dot = '.'; -} + // With node.js on Windows: use symbols available in terminal default fonts + if ('win32' == process.platform) { + exports.symbols.ok = '\u221A'; + exports.symbols.err = '\u00D7'; + exports.symbols.dot = '.'; + } -/** + /** * Color `str` with the given `type`, * allowing colors to be disabled, * as well as user-defined color @@ -2045,115 +2087,115 @@ if ('win32' == process.platform) { * @api private */ -var color = exports.color = function(type, str) { - if (!exports.useColors) return str; - return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; -}; + var color = (exports.color = function(type, str) { + if (!exports.useColors) return str; + return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; + }); -/** + /** * Expose term window size, with some * defaults for when stderr is not a tty. */ -exports.window = { - width: isatty - ? process.stdout.getWindowSize - ? process.stdout.getWindowSize(1)[0] - : tty.getWindowSize()[1] - : 75 -}; + exports.window = { + width: isatty + ? process.stdout.getWindowSize + ? process.stdout.getWindowSize(1)[0] + : tty.getWindowSize()[1] + : 75 + }; -/** + /** * Expose some basic cursor interactions * that are common among reporters. */ -exports.cursor = { - hide: function(){ - isatty && process.stdout.write('\u001b[?25l'); - }, + exports.cursor = { + hide: function() { + isatty && process.stdout.write('\u001b[?25l'); + }, - show: function(){ - isatty && process.stdout.write('\u001b[?25h'); - }, + show: function() { + isatty && process.stdout.write('\u001b[?25h'); + }, - deleteLine: function(){ - isatty && process.stdout.write('\u001b[2K'); - }, + deleteLine: function() { + isatty && process.stdout.write('\u001b[2K'); + }, - beginningOfLine: function(){ - isatty && process.stdout.write('\u001b[0G'); - }, + beginningOfLine: function() { + isatty && process.stdout.write('\u001b[0G'); + }, - CR: function(){ - if (isatty) { - exports.cursor.deleteLine(); - exports.cursor.beginningOfLine(); - } else { - process.stdout.write('\r'); - } - } -}; + CR: function() { + if (isatty) { + exports.cursor.deleteLine(); + exports.cursor.beginningOfLine(); + } else { + process.stdout.write('\r'); + } + } + }; -/** + /** * Outut the given `failures` as a list. * * @param {Array} failures * @api public */ -exports.list = function(failures){ - console.error(); - failures.forEach(function(test, i){ - // format - var fmt = color('error title', ' %s) %s:\n') - + color('error message', ' %s') - + color('error stack', '\n%s\n'); - - // msg - var err = test.err - , message = err.message || '' - , stack = err.stack || message - , index = stack.indexOf(message) + message.length - , msg = stack.slice(0, index) - , actual = err.actual - , expected = err.expected - , escape = true; - - // uncaught - if (err.uncaught) { - msg = 'Uncaught ' + msg; - } - - // explicitly show diff - if (err.showDiff && sameType(actual, expected)) { - escape = false; - err.actual = actual = utils.stringify(actual); - err.expected = expected = utils.stringify(expected); - } - - // actual / expected diff - if (err.showDiff && 'string' == typeof actual && 'string' == typeof expected) { - fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); - var match = message.match(/^([^:]+): expected/); - msg = '\n ' + color('error message', match ? match[1] : msg); - - if (exports.inlineDiffs) { - msg += inlineDiff(err, escape); - } else { - msg += unifiedDiff(err, escape); - } - } - - // indent stack trace without msg - stack = stack.slice(index ? index + 1 : index) - .replace(/^/gm, ' '); - - console.error(fmt, (i + 1), test.fullTitle(), msg, stack); - }); -}; - -/** + exports.list = function(failures) { + console.error(); + failures.forEach(function(test, i) { + // format + var fmt = + color('error title', ' %s) %s:\n') + + color('error message', ' %s') + + color('error stack', '\n%s\n'); + + // msg + var err = test.err, + message = err.message || '', + stack = err.stack || message, + index = stack.indexOf(message) + message.length, + msg = stack.slice(0, index), + actual = err.actual, + expected = err.expected, + escape = true; + + // uncaught + if (err.uncaught) { + msg = 'Uncaught ' + msg; + } + + // explicitly show diff + if (err.showDiff && sameType(actual, expected)) { + escape = false; + err.actual = actual = utils.stringify(actual); + err.expected = expected = utils.stringify(expected); + } + + // actual / expected diff + if (err.showDiff && 'string' == typeof actual && 'string' == typeof expected) { + fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); + var match = message.match(/^([^:]+): expected/); + msg = '\n ' + color('error message', match ? match[1] : msg); + + if (exports.inlineDiffs) { + msg += inlineDiff(err, escape); + } else { + msg += unifiedDiff(err, escape); + } + } + + // indent stack trace without msg + stack = stack.slice(index ? index + 1 : index).replace(/^/gm, ' '); + + console.error(fmt, i + 1, test.fullTitle(), msg, stack); + }); + }; + + /** * Initialize a new `Base` reporter. * * All other reporters generally @@ -2165,106 +2207,100 @@ exports.list = function(failures){ * @api public */ -function Base(runner) { - var self = this - , stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 } - , failures = this.failures = []; + function Base(runner) { + var self = this, + stats = (this.stats = {suites: 0, tests: 0, passes: 0, pending: 0, failures: 0}), + failures = (this.failures = []); - if (!runner) return; - this.runner = runner; + if (!runner) return; + this.runner = runner; - runner.stats = stats; + runner.stats = stats; - runner.on('start', function(){ - stats.start = new Date; - }); + runner.on('start', function() { + stats.start = new Date(); + }); - runner.on('suite', function(suite){ - stats.suites = stats.suites || 0; - suite.root || stats.suites++; - }); + runner.on('suite', function(suite) { + stats.suites = stats.suites || 0; + suite.root || stats.suites++; + }); - runner.on('test end', function(test){ - stats.tests = stats.tests || 0; - stats.tests++; - }); + runner.on('test end', function(test) { + stats.tests = stats.tests || 0; + stats.tests++; + }); - runner.on('pass', function(test){ - stats.passes = stats.passes || 0; + runner.on('pass', function(test) { + stats.passes = stats.passes || 0; - var medium = test.slow() / 2; - test.speed = test.duration > test.slow() - ? 'slow' - : test.duration > medium - ? 'medium' - : 'fast'; + var medium = test.slow() / 2; + test.speed = + test.duration > test.slow() + ? 'slow' + : test.duration > medium ? 'medium' : 'fast'; - stats.passes++; - }); + stats.passes++; + }); - runner.on('fail', function(test, err){ - stats.failures = stats.failures || 0; - stats.failures++; - test.err = err; - failures.push(test); - }); + runner.on('fail', function(test, err) { + stats.failures = stats.failures || 0; + stats.failures++; + test.err = err; + failures.push(test); + }); - runner.on('end', function(){ - stats.end = new Date; - stats.duration = new Date - stats.start; - }); + runner.on('end', function() { + stats.end = new Date(); + stats.duration = new Date() - stats.start; + }); - runner.on('pending', function(){ - stats.pending++; - }); -} + runner.on('pending', function() { + stats.pending++; + }); + } -/** + /** * Output common epilogue used by many of * the bundled reporters. * * @api public */ -Base.prototype.epilogue = function(){ - var stats = this.stats; - var tests; - var fmt; + Base.prototype.epilogue = function() { + var stats = this.stats; + var tests; + var fmt; - console.log(); + console.log(); - // passes - fmt = color('bright pass', ' ') - + color('green', ' %d passing') - + color('light', ' (%s)'); + // passes + fmt = + color('bright pass', ' ') + color('green', ' %d passing') + color('light', ' (%s)'); - console.log(fmt, - stats.passes || 0, - ms(stats.duration)); + console.log(fmt, stats.passes || 0, ms(stats.duration)); - // pending - if (stats.pending) { - fmt = color('pending', ' ') - + color('pending', ' %d pending'); + // pending + if (stats.pending) { + fmt = color('pending', ' ') + color('pending', ' %d pending'); - console.log(fmt, stats.pending); - } + console.log(fmt, stats.pending); + } - // failures - if (stats.failures) { - fmt = color('fail', ' %d failing'); + // failures + if (stats.failures) { + fmt = color('fail', ' %d failing'); - console.error(fmt, - stats.failures); + console.error(fmt, stats.failures); - Base.list(this.failures); - console.error(); - } + Base.list(this.failures); + console.error(); + } - console.log(); -}; + console.log(); + }; -/** + /** * Pad the given `str` to `len`. * * @param {String} str @@ -2273,13 +2309,12 @@ Base.prototype.epilogue = function(){ * @api private */ -function pad(str, len) { - str = String(str); - return Array(len - str.length + 1).join(' ') + str; -} - + function pad(str, len) { + str = String(str); + return Array(len - str.length + 1).join(' ') + str; + } -/** + /** * Returns an inline diff between 2 strings with coloured ANSI output * * @param {Error} Error with actual/expected @@ -2287,33 +2322,36 @@ function pad(str, len) { * @api private */ -function inlineDiff(err, escape) { - var msg = errorDiff(err, 'WordsWithSpace', escape); - - // linenos - var lines = msg.split('\n'); - if (lines.length > 4) { - var width = String(lines.length).length; - msg = lines.map(function(str, i){ - return pad(++i, width) + ' |' + ' ' + str; - }).join('\n'); - } - - // legend - msg = '\n' - + color('diff removed', 'actual') - + ' ' - + color('diff added', 'expected') - + '\n\n' - + msg - + '\n'; - - // indent - msg = msg.replace(/^/gm, ' '); - return msg; -} - -/** + function inlineDiff(err, escape) { + var msg = errorDiff(err, 'WordsWithSpace', escape); + + // linenos + var lines = msg.split('\n'); + if (lines.length > 4) { + var width = String(lines.length).length; + msg = lines + .map(function(str, i) { + return pad(++i, width) + ' |' + ' ' + str; + }) + .join('\n'); + } + + // legend + msg = + '\n' + + color('diff removed', 'actual') + + ' ' + + color('diff added', 'expected') + + '\n\n' + + msg + + '\n'; + + // indent + msg = msg.replace(/^/gm, ' '); + return msg; + } + + /** * Returns a unified diff between 2 strings * * @param {Error} Error with actual/expected @@ -2321,31 +2359,34 @@ function inlineDiff(err, escape) { * @api private */ -function unifiedDiff(err, escape) { - var indent = ' '; - function cleanUp(line) { - if (escape) { - line = escapeInvisibles(line); - } - if (line[0] === '+') return indent + colorLines('diff added', line); - if (line[0] === '-') return indent + colorLines('diff removed', line); - if (line.match(/\@\@/)) return null; - if (line.match(/\\ No newline/)) return null; - else return indent + line; - } - function notBlank(line) { - return line != null; - } - msg = diff.createPatch('string', err.actual, err.expected); - var lines = msg.split('\n').splice(4); - return '\n ' - + colorLines('diff added', '+ expected') + ' ' - + colorLines('diff removed', '- actual') - + '\n\n' - + lines.map(cleanUp).filter(notBlank).join('\n'); -} - -/** + function unifiedDiff(err, escape) { + var indent = ' '; + function cleanUp(line) { + if (escape) { + line = escapeInvisibles(line); + } + if (line[0] === '+') return indent + colorLines('diff added', line); + if (line[0] === '-') return indent + colorLines('diff removed', line); + if (line.match(/\@\@/)) return null; + if (line.match(/\\ No newline/)) return null; + else return indent + line; + } + function notBlank(line) { + return line != null; + } + msg = diff.createPatch('string', err.actual, err.expected); + var lines = msg.split('\n').splice(4); + return ( + '\n ' + + colorLines('diff added', '+ expected') + + ' ' + + colorLines('diff removed', '- actual') + + '\n\n' + + lines.map(cleanUp).filter(notBlank).join('\n') + ); + } + + /** * Return a character diff for `err`. * * @param {Error} err @@ -2353,30 +2394,31 @@ function unifiedDiff(err, escape) { * @api private */ -function errorDiff(err, type, escape) { - var actual = escape ? escapeInvisibles(err.actual) : err.actual; - var expected = escape ? escapeInvisibles(err.expected) : err.expected; - return diff['diff' + type](actual, expected).map(function(str){ - if (str.added) return colorLines('diff added', str.value); - if (str.removed) return colorLines('diff removed', str.value); - return str.value; - }).join(''); -} + function errorDiff(err, type, escape) { + var actual = escape ? escapeInvisibles(err.actual) : err.actual; + var expected = escape ? escapeInvisibles(err.expected) : err.expected; + return diff + ['diff' + type](actual, expected) + .map(function(str) { + if (str.added) return colorLines('diff added', str.value); + if (str.removed) return colorLines('diff removed', str.value); + return str.value; + }) + .join(''); + } -/** + /** * Returns a string with all invisible characters in plain text * * @param {String} line * @return {String} * @api private */ -function escapeInvisibles(line) { - return line.replace(/\t/g, '') - .replace(/\r/g, '') - .replace(/\n/g, '\n'); -} + function escapeInvisibles(line) { + return line.replace(/\t/g, '').replace(/\r/g, '').replace(/\n/g, '\n'); + } -/** + /** * Color lines for `str`, using the color `name`. * * @param {String} name @@ -2385,13 +2427,16 @@ function escapeInvisibles(line) { * @api private */ -function colorLines(name, str) { - return str.split('\n').map(function(str){ - return color(name, str); - }).join('\n'); -} + function colorLines(name, str) { + return str + .split('\n') + .map(function(str) { + return color(name, str); + }) + .join('\n'); + } -/** + /** * Check that a / b have the same type. * * @param {Object} a @@ -2400,520 +2445,532 @@ function colorLines(name, str) { * @api private */ -function sameType(a, b) { - a = Object.prototype.toString.call(a); - b = Object.prototype.toString.call(b); - return a == b; -} - -}); // module: reporters/base.js - -require.register("reporters/doc.js", function(module, exports, require){ + function sameType(a, b) { + a = Object.prototype.toString.call(a); + b = Object.prototype.toString.call(b); + return a == b; + } + }); // module: reporters/base.js -/** + require.register('reporters/doc.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , utils = require('../utils'); + var Base = require('./base'), + utils = require('../utils'); -/** + /** * Expose `Doc`. */ -exports = module.exports = Doc; + exports = module.exports = Doc; -/** + /** * Initialize a new `Doc` reporter. * * @param {Runner} runner * @api public */ -function Doc(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , total = runner.total - , indents = 2; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('suite', function(suite){ - if (suite.root) return; - ++indents; - console.log('%s
', indent()); - ++indents; - console.log('%s

%s

', indent(), utils.escape(suite.title)); - console.log('%s
', indent()); - }); - - runner.on('suite end', function(suite){ - if (suite.root) return; - console.log('%s
', indent()); - --indents; - console.log('%s
', indent()); - --indents; - }); - - runner.on('pass', function(test){ - console.log('%s
%s
', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.fn.toString())); - console.log('%s
%s
', indent(), code); - }); - - runner.on('fail', function(test, err){ - console.log('%s
%s
', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.fn.toString())); - console.log('%s
%s
', indent(), code); - console.log('%s
%s
', indent(), utils.escape(err)); - }); -} - -}); // module: reporters/doc.js - -require.register("reporters/dot.js", function(module, exports, require){ - -/** + function Doc(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + total = runner.total, + indents = 2; + + function indent() { + return Array(indents).join(' '); + } + + runner.on('suite', function(suite) { + if (suite.root) return; + ++indents; + console.log('%s
', indent()); + ++indents; + console.log('%s

%s

', indent(), utils.escape(suite.title)); + console.log('%s
', indent()); + }); + + runner.on('suite end', function(suite) { + if (suite.root) return; + console.log('%s
', indent()); + --indents; + console.log('%s
', indent()); + --indents; + }); + + runner.on('pass', function(test) { + console.log('%s
%s
', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.fn.toString())); + console.log('%s
%s
', indent(), code); + }); + + runner.on('fail', function(test, err) { + console.log('%s
%s
', indent(), utils.escape(test.title)); + var code = utils.escape(utils.clean(test.fn.toString())); + console.log( + '%s
%s
', + indent(), + code + ); + console.log('%s
%s
', indent(), utils.escape(err)); + }); + } + }); // module: reporters/doc.js + + require.register('reporters/dot.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , color = Base.color; + var Base = require('./base'), + color = Base.color; -/** + /** * Expose `Dot`. */ -exports = module.exports = Dot; + exports = module.exports = Dot; -/** + /** * Initialize a new `Dot` matrix test reporter. * * @param {Runner} runner * @api public */ -function Dot(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , width = Base.window.width * .75 | 0 - , n = -1; - - runner.on('start', function(){ - process.stdout.write('\n '); - }); - - runner.on('pending', function(test){ - if (++n % width == 0) process.stdout.write('\n '); - process.stdout.write(color('pending', Base.symbols.dot)); - }); - - runner.on('pass', function(test){ - if (++n % width == 0) process.stdout.write('\n '); - if ('slow' == test.speed) { - process.stdout.write(color('bright yellow', Base.symbols.dot)); - } else { - process.stdout.write(color(test.speed, Base.symbols.dot)); - } - }); - - runner.on('fail', function(test, err){ - if (++n % width == 0) process.stdout.write('\n '); - process.stdout.write(color('fail', Base.symbols.dot)); - }); - - runner.on('end', function(){ - console.log(); - self.epilogue(); - }); -} + function Dot(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + width = (Base.window.width * 0.75) | 0, + n = -1; + + runner.on('start', function() { + process.stdout.write('\n '); + }); + + runner.on('pending', function(test) { + if (++n % width == 0) process.stdout.write('\n '); + process.stdout.write(color('pending', Base.symbols.dot)); + }); + + runner.on('pass', function(test) { + if (++n % width == 0) process.stdout.write('\n '); + if ('slow' == test.speed) { + process.stdout.write(color('bright yellow', Base.symbols.dot)); + } else { + process.stdout.write(color(test.speed, Base.symbols.dot)); + } + }); + + runner.on('fail', function(test, err) { + if (++n % width == 0) process.stdout.write('\n '); + process.stdout.write(color('fail', Base.symbols.dot)); + }); + + runner.on('end', function() { + console.log(); + self.epilogue(); + }); + } -/** + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -Dot.prototype = new F; -Dot.prototype.constructor = Dot; - + function F() {} + F.prototype = Base.prototype; + Dot.prototype = new F(); + Dot.prototype.constructor = Dot; + }); // module: reporters/dot.js -}); // module: reporters/dot.js - -require.register("reporters/html-cov.js", function(module, exports, require){ - -/** + require.register('reporters/html-cov.js', function(module, exports, require) { + /** * Module dependencies. */ -var JSONCov = require('./json-cov') - , fs = require('browser/fs'); + var JSONCov = require('./json-cov'), + fs = require('browser/fs'); -/** + /** * Expose `HTMLCov`. */ -exports = module.exports = HTMLCov; + exports = module.exports = HTMLCov; -/** + /** * Initialize a new `JsCoverage` reporter. * * @param {Runner} runner * @api public */ -function HTMLCov(runner) { - var jade = require('jade') - , file = __dirname + '/templates/coverage.jade' - , str = fs.readFileSync(file, 'utf8') - , fn = jade.compile(str, { filename: file }) - , self = this; + function HTMLCov(runner) { + var jade = require('jade'), + file = __dirname + '/templates/coverage.jade', + str = fs.readFileSync(file, 'utf8'), + fn = jade.compile(str, {filename: file}), + self = this; - JSONCov.call(this, runner, false); + JSONCov.call(this, runner, false); - runner.on('end', function(){ - process.stdout.write(fn({ - cov: self.cov - , coverageClass: coverageClass - })); - }); -} + runner.on('end', function() { + process.stdout.write( + fn({ + cov: self.cov, + coverageClass: coverageClass + }) + ); + }); + } -/** + /** * Return coverage class for `n`. * * @return {String} * @api private */ -function coverageClass(n) { - if (n >= 75) return 'high'; - if (n >= 50) return 'medium'; - if (n >= 25) return 'low'; - return 'terrible'; -} -}); // module: reporters/html-cov.js - -require.register("reporters/html.js", function(module, exports, require){ + function coverageClass(n) { + if (n >= 75) return 'high'; + if (n >= 50) return 'medium'; + if (n >= 25) return 'low'; + return 'terrible'; + } + }); // module: reporters/html-cov.js -/** + require.register('reporters/html.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , utils = require('../utils') - , Progress = require('../browser/progress') - , escape = utils.escape; + var Base = require('./base'), + utils = require('../utils'), + Progress = require('../browser/progress'), + escape = utils.escape; -/** + /** * Save timer references to avoid Sinon interfering (see GH-237). */ -var Date = global.Date - , setTimeout = global.setTimeout - , setInterval = global.setInterval - , clearTimeout = global.clearTimeout - , clearInterval = global.clearInterval; + var Date = global.Date, + setTimeout = global.setTimeout, + setInterval = global.setInterval, + clearTimeout = global.clearTimeout, + clearInterval = global.clearInterval; -/** + /** * Expose `HTML`. */ -exports = module.exports = HTML; + exports = module.exports = HTML; -/** + /** * Stats template. */ -var statsTemplate = ''; + var statsTemplate = + ''; -/** + /** * Initialize a new `HTML` reporter. * * @param {Runner} runner * @api public */ -function HTML(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , total = runner.total - , stat = fragment(statsTemplate) - , items = stat.getElementsByTagName('li') - , passes = items[1].getElementsByTagName('em')[0] - , passesLink = items[1].getElementsByTagName('a')[0] - , failures = items[2].getElementsByTagName('em')[0] - , failuresLink = items[2].getElementsByTagName('a')[0] - , duration = items[3].getElementsByTagName('em')[0] - , canvas = stat.getElementsByTagName('canvas')[0] - , report = fragment('
    ') - , stack = [report] - , progress - , ctx - , root = document.getElementById('mocha'); - - if (canvas.getContext) { - var ratio = window.devicePixelRatio || 1; - canvas.style.width = canvas.width; - canvas.style.height = canvas.height; - canvas.width *= ratio; - canvas.height *= ratio; - ctx = canvas.getContext('2d'); - ctx.scale(ratio, ratio); - progress = new Progress; - } - - if (!root) return error('#mocha div missing, add it to your document'); - - // pass toggle - on(passesLink, 'click', function(){ - unhide(); - var name = /pass/.test(report.className) ? '' : ' pass'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) hideSuitesWithout('test pass'); - }); - - // failure toggle - on(failuresLink, 'click', function(){ - unhide(); - var name = /fail/.test(report.className) ? '' : ' fail'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) hideSuitesWithout('test fail'); - }); - - root.appendChild(stat); - root.appendChild(report); - - if (progress) progress.size(40); - - runner.on('suite', function(suite){ - if (suite.root) return; - - // suite - var url = self.suiteURL(suite); - var el = fragment('
  • %s

  • ', url, escape(suite.title)); - - // container - stack[0].appendChild(el); - stack.unshift(document.createElement('ul')); - el.appendChild(stack[0]); - }); - - runner.on('suite end', function(suite){ - if (suite.root) return; - stack.shift(); - }); - - runner.on('fail', function(test, err){ - if ('hook' == test.type) runner.emit('test end', test); - }); - - runner.on('test end', function(test){ - // TODO: add to stats - var percent = stats.tests / this.total * 100 | 0; - if (progress) progress.update(percent).draw(ctx); - - // update stats - var ms = new Date - stats.start; - text(passes, stats.passes); - text(failures, stats.failures); - text(duration, (ms / 1000).toFixed(2)); - - // test - if ('passed' == test.state) { - var url = self.testURL(test); - var el = fragment('
  • %e%ems

  • ', test.speed, test.title, test.duration, url); - } else if (test.pending) { - var el = fragment('
  • %e

  • ', test.title); - } else { - var el = fragment('
  • %e

  • ', test.title, encodeURIComponent(test.fullTitle())); - var str = test.err.stack || test.err.toString(); - - // FF / Opera do not add the message - if (!~str.indexOf(test.err.message)) { - str = test.err.message + '\n' + str; - } - - // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we - // check for the result of the stringifying. - if ('[object Error]' == str) str = test.err.message; - - // Safari doesn't give you a stack. Let's at least provide a source line. - if (!test.err.stack && test.err.sourceURL && test.err.line !== undefined) { - str += "\n(" + test.err.sourceURL + ":" + test.err.line + ")"; - } - - el.appendChild(fragment('
    %e
    ', str)); - } - - // toggle code - // TODO: defer - if (!test.pending) { - var h2 = el.getElementsByTagName('h2')[0]; - - on(h2, 'click', function(){ - pre.style.display = 'none' == pre.style.display - ? 'block' - : 'none'; - }); - - var pre = fragment('
    %e
    ', utils.clean(test.fn.toString())); - el.appendChild(pre); - pre.style.display = 'none'; - } + function HTML(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + total = runner.total, + stat = fragment(statsTemplate), + items = stat.getElementsByTagName('li'), + passes = items[1].getElementsByTagName('em')[0], + passesLink = items[1].getElementsByTagName('a')[0], + failures = items[2].getElementsByTagName('em')[0], + failuresLink = items[2].getElementsByTagName('a')[0], + duration = items[3].getElementsByTagName('em')[0], + canvas = stat.getElementsByTagName('canvas')[0], + report = fragment('
      '), + stack = [report], + progress, + ctx, + root = document.getElementById('mocha'); + + if (canvas.getContext) { + var ratio = window.devicePixelRatio || 1; + canvas.style.width = canvas.width; + canvas.style.height = canvas.height; + canvas.width *= ratio; + canvas.height *= ratio; + ctx = canvas.getContext('2d'); + ctx.scale(ratio, ratio); + progress = new Progress(); + } - // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. - if (stack[0]) stack[0].appendChild(el); - }); -} + if (!root) return error('#mocha div missing, add it to your document'); + + // pass toggle + on(passesLink, 'click', function() { + unhide(); + var name = /pass/.test(report.className) ? '' : ' pass'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) hideSuitesWithout('test pass'); + }); + + // failure toggle + on(failuresLink, 'click', function() { + unhide(); + var name = /fail/.test(report.className) ? '' : ' fail'; + report.className = report.className.replace(/fail|pass/g, '') + name; + if (report.className.trim()) hideSuitesWithout('test fail'); + }); + + root.appendChild(stat); + root.appendChild(report); + + if (progress) progress.size(40); + + runner.on('suite', function(suite) { + if (suite.root) return; + + // suite + var url = self.suiteURL(suite); + var el = fragment( + '
    • %s

    • ', + url, + escape(suite.title) + ); + + // container + stack[0].appendChild(el); + stack.unshift(document.createElement('ul')); + el.appendChild(stack[0]); + }); + + runner.on('suite end', function(suite) { + if (suite.root) return; + stack.shift(); + }); + + runner.on('fail', function(test, err) { + if ('hook' == test.type) runner.emit('test end', test); + }); + + runner.on('test end', function(test) { + // TODO: add to stats + var percent = (stats.tests / this.total * 100) | 0; + if (progress) progress.update(percent).draw(ctx); + + // update stats + var ms = new Date() - stats.start; + text(passes, stats.passes); + text(failures, stats.failures); + text(duration, (ms / 1000).toFixed(2)); + + // test + if ('passed' == test.state) { + var url = self.testURL(test); + var el = fragment( + '
    • %e%ems

    • ', + test.speed, + test.title, + test.duration, + url + ); + } else if (test.pending) { + var el = fragment('
    • %e

    • ', test.title); + } else { + var el = fragment( + '
    • %e

    • ', + test.title, + encodeURIComponent(test.fullTitle()) + ); + var str = test.err.stack || test.err.toString(); + + // FF / Opera do not add the message + if (!~str.indexOf(test.err.message)) { + str = test.err.message + '\n' + str; + } + + // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we + // check for the result of the stringifying. + if ('[object Error]' == str) str = test.err.message; + + // Safari doesn't give you a stack. Let's at least provide a source line. + if (!test.err.stack && test.err.sourceURL && test.err.line !== undefined) { + str += '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; + } + + el.appendChild(fragment('
      %e
      ', str)); + } + + // toggle code + // TODO: defer + if (!test.pending) { + var h2 = el.getElementsByTagName('h2')[0]; + + on(h2, 'click', function() { + pre.style.display = 'none' == pre.style.display ? 'block' : 'none'; + }); + + var pre = fragment( + '
      %e
      ', + utils.clean(test.fn.toString()) + ); + el.appendChild(pre); + pre.style.display = 'none'; + } + + // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. + if (stack[0]) stack[0].appendChild(el); + }); + } -/** + /** * Provide suite URL * * @param {Object} [suite] */ -HTML.prototype.suiteURL = function(suite){ - return '?grep=' + encodeURIComponent(suite.fullTitle()); -}; + HTML.prototype.suiteURL = function(suite) { + return '?grep=' + encodeURIComponent(suite.fullTitle()); + }; -/** + /** * Provide test URL * * @param {Object} [test] */ -HTML.prototype.testURL = function(test){ - return '?grep=' + encodeURIComponent(test.fullTitle()); -}; + HTML.prototype.testURL = function(test) { + return '?grep=' + encodeURIComponent(test.fullTitle()); + }; -/** + /** * Display error `msg`. */ -function error(msg) { - document.body.appendChild(fragment('
      %s
      ', msg)); -} + function error(msg) { + document.body.appendChild(fragment('
      %s
      ', msg)); + } -/** + /** * Return a DOM fragment from `html`. */ -function fragment(html) { - var args = arguments - , div = document.createElement('div') - , i = 1; + function fragment(html) { + var args = arguments, + div = document.createElement('div'), + i = 1; - div.innerHTML = html.replace(/%([se])/g, function(_, type){ - switch (type) { - case 's': return String(args[i++]); - case 'e': return escape(args[i++]); - } - }); + div.innerHTML = html.replace(/%([se])/g, function(_, type) { + switch (type) { + case 's': + return String(args[i++]); + case 'e': + return escape(args[i++]); + } + }); - return div.firstChild; -} + return div.firstChild; + } -/** + /** * Check for suites that do not have elements * with `classname`, and hide them. */ -function hideSuitesWithout(classname) { - var suites = document.getElementsByClassName('suite'); - for (var i = 0; i < suites.length; i++) { - var els = suites[i].getElementsByClassName(classname); - if (0 == els.length) suites[i].className += ' hidden'; - } -} + function hideSuitesWithout(classname) { + var suites = document.getElementsByClassName('suite'); + for (var i = 0; i < suites.length; i++) { + var els = suites[i].getElementsByClassName(classname); + if (0 == els.length) suites[i].className += ' hidden'; + } + } -/** + /** * Unhide .hidden suites. */ -function unhide() { - var els = document.getElementsByClassName('suite hidden'); - for (var i = 0; i < els.length; ++i) { - els[i].className = els[i].className.replace('suite hidden', 'suite'); - } -} + function unhide() { + var els = document.getElementsByClassName('suite hidden'); + for (var i = 0; i < els.length; ++i) { + els[i].className = els[i].className.replace('suite hidden', 'suite'); + } + } -/** + /** * Set `el` text to `str`. */ -function text(el, str) { - if (el.textContent) { - el.textContent = str; - } else { - el.innerText = str; - } -} + function text(el, str) { + if (el.textContent) { + el.textContent = str; + } else { + el.innerText = str; + } + } -/** + /** * Listen on `event` with callback `fn`. */ -function on(el, event, fn) { - if (el.addEventListener) { - el.addEventListener(event, fn, false); - } else { - el.attachEvent('on' + event, fn); - } -} - -}); // module: reporters/html.js - -require.register("reporters/index.js", function(module, exports, require){ - -exports.Base = require('./base'); -exports.Dot = require('./dot'); -exports.Doc = require('./doc'); -exports.TAP = require('./tap'); -exports.JSON = require('./json'); -exports.HTML = require('./html'); -exports.List = require('./list'); -exports.Min = require('./min'); -exports.Spec = require('./spec'); -exports.Nyan = require('./nyan'); -exports.XUnit = require('./xunit'); -exports.Markdown = require('./markdown'); -exports.Progress = require('./progress'); -exports.Landing = require('./landing'); -exports.JSONCov = require('./json-cov'); -exports.HTMLCov = require('./html-cov'); -exports.JSONStream = require('./json-stream'); - -}); // module: reporters/index.js - -require.register("reporters/json-cov.js", function(module, exports, require){ - -/** + function on(el, event, fn) { + if (el.addEventListener) { + el.addEventListener(event, fn, false); + } else { + el.attachEvent('on' + event, fn); + } + } + }); // module: reporters/html.js + + require.register('reporters/index.js', function(module, exports, require) { + exports.Base = require('./base'); + exports.Dot = require('./dot'); + exports.Doc = require('./doc'); + exports.TAP = require('./tap'); + exports.JSON = require('./json'); + exports.HTML = require('./html'); + exports.List = require('./list'); + exports.Min = require('./min'); + exports.Spec = require('./spec'); + exports.Nyan = require('./nyan'); + exports.XUnit = require('./xunit'); + exports.Markdown = require('./markdown'); + exports.Progress = require('./progress'); + exports.Landing = require('./landing'); + exports.JSONCov = require('./json-cov'); + exports.HTMLCov = require('./html-cov'); + exports.JSONStream = require('./json-stream'); + }); // module: reporters/index.js + + require.register('reporters/json-cov.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base'); + var Base = require('./base'); -/** + /** * Expose `JSONCov`. */ -exports = module.exports = JSONCov; + exports = module.exports = JSONCov; -/** + /** * Initialize a new `JsCoverage` reporter. * * @param {Runner} runner @@ -2921,41 +2978,41 @@ exports = module.exports = JSONCov; * @api public */ -function JSONCov(runner, output) { - var self = this - , output = 1 == arguments.length ? true : output; + function JSONCov(runner, output) { + var self = this, + output = 1 == arguments.length ? true : output; - Base.call(this, runner); + Base.call(this, runner); - var tests = [] - , failures = [] - , passes = []; + var tests = [], + failures = [], + passes = []; - runner.on('test end', function(test){ - tests.push(test); - }); + runner.on('test end', function(test) { + tests.push(test); + }); - runner.on('pass', function(test){ - passes.push(test); - }); + runner.on('pass', function(test) { + passes.push(test); + }); - runner.on('fail', function(test){ - failures.push(test); - }); + runner.on('fail', function(test) { + failures.push(test); + }); - runner.on('end', function(){ - var cov = global._$jscoverage || {}; - var result = self.cov = map(cov); - result.stats = self.stats; - result.tests = tests.map(clean); - result.failures = failures.map(clean); - result.passes = passes.map(clean); - if (!output) return; - process.stdout.write(JSON.stringify(result, null, 2 )); - }); -} + runner.on('end', function() { + var cov = global._$jscoverage || {}; + var result = (self.cov = map(cov)); + result.stats = self.stats; + result.tests = tests.map(clean); + result.failures = failures.map(clean); + result.passes = passes.map(clean); + if (!output) return; + process.stdout.write(JSON.stringify(result, null, 2)); + }); + } -/** + /** * Map jscoverage data to a JSON structure * suitable for reporting. * @@ -2964,36 +3021,36 @@ function JSONCov(runner, output) { * @api private */ -function map(cov) { - var ret = { - instrumentation: 'node-jscoverage' - , sloc: 0 - , hits: 0 - , misses: 0 - , coverage: 0 - , files: [] - }; - - for (var filename in cov) { - var data = coverage(filename, cov[filename]); - ret.files.push(data); - ret.hits += data.hits; - ret.misses += data.misses; - ret.sloc += data.sloc; - } - - ret.files.sort(function(a, b) { - return a.filename.localeCompare(b.filename); - }); - - if (ret.sloc > 0) { - ret.coverage = (ret.hits / ret.sloc) * 100; - } - - return ret; -} - -/** + function map(cov) { + var ret = { + instrumentation: 'node-jscoverage', + sloc: 0, + hits: 0, + misses: 0, + coverage: 0, + files: [] + }; + + for (var filename in cov) { + var data = coverage(filename, cov[filename]); + ret.files.push(data); + ret.hits += data.hits; + ret.misses += data.misses; + ret.sloc += data.sloc; + } + + ret.files.sort(function(a, b) { + return a.filename.localeCompare(b.filename); + }); + + if (ret.sloc > 0) { + ret.coverage = ret.hits / ret.sloc * 100; + } + + return ret; + } + + /** * Map jscoverage data for a single source file * to a JSON structure suitable for reporting. * @@ -3003,41 +3060,39 @@ function map(cov) { * @api private */ -function coverage(filename, data) { - var ret = { - filename: filename, - coverage: 0, - hits: 0, - misses: 0, - sloc: 0, - source: {} - }; - - data.source.forEach(function(line, num){ - num++; - - if (data[num] === 0) { - ret.misses++; - ret.sloc++; - } else if (data[num] !== undefined) { - ret.hits++; - ret.sloc++; - } - - ret.source[num] = { - source: line - , coverage: data[num] === undefined - ? '' - : data[num] - }; - }); - - ret.coverage = ret.hits / ret.sloc * 100; - - return ret; -} + function coverage(filename, data) { + var ret = { + filename: filename, + coverage: 0, + hits: 0, + misses: 0, + sloc: 0, + source: {} + }; + + data.source.forEach(function(line, num) { + num++; + + if (data[num] === 0) { + ret.misses++; + ret.sloc++; + } else if (data[num] !== undefined) { + ret.hits++; + ret.sloc++; + } + + ret.source[num] = { + source: line, + coverage: data[num] === undefined ? '' : data[num] + }; + }); + + ret.coverage = ret.hits / ret.sloc * 100; + + return ret; + } -/** + /** * Return a plain-object representation of `test` * free of cyclic properties etc. * @@ -3046,63 +3101,61 @@ function coverage(filename, data) { * @api private */ -function clean(test) { - return { - title: test.title - , fullTitle: test.fullTitle() - , duration: test.duration - } -} - -}); // module: reporters/json-cov.js - -require.register("reporters/json-stream.js", function(module, exports, require){ + function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration + }; + } + }); // module: reporters/json-cov.js -/** + require.register('reporters/json-stream.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , color = Base.color; + var Base = require('./base'), + color = Base.color; -/** + /** * Expose `List`. */ -exports = module.exports = List; + exports = module.exports = List; -/** + /** * Initialize a new `List` test reporter. * * @param {Runner} runner * @api public */ -function List(runner) { - Base.call(this, runner); + function List(runner) { + Base.call(this, runner); - var self = this - , stats = this.stats - , total = runner.total; + var self = this, + stats = this.stats, + total = runner.total; - runner.on('start', function(){ - console.log(JSON.stringify(['start', { total: total }])); - }); + runner.on('start', function() { + console.log(JSON.stringify(['start', {total: total}])); + }); - runner.on('pass', function(test){ - console.log(JSON.stringify(['pass', clean(test)])); - }); + runner.on('pass', function(test) { + console.log(JSON.stringify(['pass', clean(test)])); + }); - runner.on('fail', function(test, err){ - console.log(JSON.stringify(['fail', clean(test)])); - }); + runner.on('fail', function(test, err) { + console.log(JSON.stringify(['fail', clean(test)])); + }); - runner.on('end', function(){ - process.stdout.write(JSON.stringify(['end', self.stats])); - }); -} + runner.on('end', function() { + process.stdout.write(JSON.stringify(['end', self.stats])); + }); + } -/** + /** * Return a plain-object representation of `test` * free of cyclic properties etc. * @@ -3111,79 +3164,78 @@ function List(runner) { * @api private */ -function clean(test) { - return { - title: test.title - , fullTitle: test.fullTitle() - , duration: test.duration - } -} -}); // module: reporters/json-stream.js - -require.register("reporters/json.js", function(module, exports, require){ + function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration + }; + } + }); // module: reporters/json-stream.js -/** + require.register('reporters/json.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `JSON`. */ -exports = module.exports = JSONReporter; + exports = module.exports = JSONReporter; -/** + /** * Initialize a new `JSON` reporter. * * @param {Runner} runner * @api public */ -function JSONReporter(runner) { - var self = this; - Base.call(this, runner); + function JSONReporter(runner) { + var self = this; + Base.call(this, runner); - var tests = [] - , pending = [] - , failures = [] - , passes = []; + var tests = [], + pending = [], + failures = [], + passes = []; - runner.on('test end', function(test){ - tests.push(test); - }); + runner.on('test end', function(test) { + tests.push(test); + }); - runner.on('pass', function(test){ - passes.push(test); - }); + runner.on('pass', function(test) { + passes.push(test); + }); - runner.on('fail', function(test){ - failures.push(test); - }); + runner.on('fail', function(test) { + failures.push(test); + }); - runner.on('pending', function(test){ - pending.push(test); - }); + runner.on('pending', function(test) { + pending.push(test); + }); - runner.on('end', function(){ - var obj = { - stats: self.stats, - tests: tests.map(clean), - pending: pending.map(clean), - failures: failures.map(clean), - passes: passes.map(clean) - }; + runner.on('end', function() { + var obj = { + stats: self.stats, + tests: tests.map(clean), + pending: pending.map(clean), + failures: failures.map(clean), + passes: passes.map(clean) + }; - runner.testResults = obj; + runner.testResults = obj; - process.stdout.write(JSON.stringify(obj, null, 2)); - }); -} + process.stdout.write(JSON.stringify(obj, null, 2)); + }); + } -/** + /** * Return a plain-object representation of `test` * free of cyclic properties etc. * @@ -3192,582 +3244,573 @@ function JSONReporter(runner) { * @api private */ -function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - err: errorJSON(test.err || {}) - } -} + function clean(test) { + return { + title: test.title, + fullTitle: test.fullTitle(), + duration: test.duration, + err: errorJSON(test.err || {}) + }; + } -/** + /** * Transform `error` into a JSON object. * @param {Error} err * @return {Object} */ -function errorJSON(err) { - var res = {}; - Object.getOwnPropertyNames(err).forEach(function(key) { - res[key] = err[key]; - }, err); - return res; -} - -}); // module: reporters/json.js - -require.register("reporters/landing.js", function(module, exports, require){ + function errorJSON(err) { + var res = {}; + Object.getOwnPropertyNames(err).forEach(function(key) { + res[key] = err[key]; + }, err); + return res; + } + }); // module: reporters/json.js -/** + require.register('reporters/landing.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `Landing`. */ -exports = module.exports = Landing; + exports = module.exports = Landing; -/** + /** * Airplane color. */ -Base.colors.plane = 0; + Base.colors.plane = 0; -/** + /** * Airplane crash color. */ -Base.colors['plane crash'] = 31; + Base.colors['plane crash'] = 31; -/** + /** * Runway color. */ -Base.colors.runway = 90; + Base.colors.runway = 90; -/** + /** * Initialize a new `Landing` reporter. * * @param {Runner} runner * @api public */ -function Landing(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , width = Base.window.width * .75 | 0 - , total = runner.total - , stream = process.stdout - , plane = color('plane', '✈') - , crashed = -1 - , n = 0; - - function runway() { - var buf = Array(width).join('-'); - return ' ' + color('runway', buf); - } - - runner.on('start', function(){ - stream.write('\n '); - cursor.hide(); - }); - - runner.on('test end', function(test){ - // check if the plane crashed - var col = -1 == crashed - ? width * ++n / total | 0 - : crashed; - - // show the crash - if ('failed' == test.state) { - plane = color('plane crash', '✈'); - crashed = col; - } + function Landing(runner) { + Base.call(this, runner); - // render landing strip - stream.write('\u001b[4F\n\n'); - stream.write(runway()); - stream.write('\n '); - stream.write(color('runway', Array(col).join('⋅'))); - stream.write(plane) - stream.write(color('runway', Array(width - col).join('⋅') + '\n')); - stream.write(runway()); - stream.write('\u001b[0m'); - }); - - runner.on('end', function(){ - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ + var self = this, + stats = this.stats, + width = (Base.window.width * 0.75) | 0, + total = runner.total, + stream = process.stdout, + plane = color('plane', '✈'), + crashed = -1, + n = 0; -function F(){}; -F.prototype = Base.prototype; -Landing.prototype = new F; -Landing.prototype.constructor = Landing; + function runway() { + var buf = Array(width).join('-'); + return ' ' + color('runway', buf); + } -}); // module: reporters/landing.js + runner.on('start', function() { + stream.write('\n '); + cursor.hide(); + }); + + runner.on('test end', function(test) { + // check if the plane crashed + var col = -1 == crashed ? (width * ++n / total) | 0 : crashed; + + // show the crash + if ('failed' == test.state) { + plane = color('plane crash', '✈'); + crashed = col; + } + + // render landing strip + stream.write('\u001b[4F\n\n'); + stream.write(runway()); + stream.write('\n '); + stream.write(color('runway', Array(col).join('⋅'))); + stream.write(plane); + stream.write(color('runway', Array(width - col).join('⋅') + '\n')); + stream.write(runway()); + stream.write('\u001b[0m'); + }); + + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); + } + + /** + * Inherit from `Base.prototype`. + */ -require.register("reporters/list.js", function(module, exports, require){ + function F() {} + F.prototype = Base.prototype; + Landing.prototype = new F(); + Landing.prototype.constructor = Landing; + }); // module: reporters/landing.js -/** + require.register('reporters/list.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `List`. */ -exports = module.exports = List; + exports = module.exports = List; -/** + /** * Initialize a new `List` test reporter. * * @param {Runner} runner * @api public */ -function List(runner) { - Base.call(this, runner); + function List(runner) { + Base.call(this, runner); - var self = this - , stats = this.stats - , n = 0; + var self = this, + stats = this.stats, + n = 0; - runner.on('start', function(){ - console.log(); - }); + runner.on('start', function() { + console.log(); + }); - runner.on('test', function(test){ - process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); - }); + runner.on('test', function(test) { + process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); + }); - runner.on('pending', function(test){ - var fmt = color('checkmark', ' -') - + color('pending', ' %s'); - console.log(fmt, test.fullTitle()); - }); + runner.on('pending', function(test) { + var fmt = color('checkmark', ' -') + color('pending', ' %s'); + console.log(fmt, test.fullTitle()); + }); - runner.on('pass', function(test){ - var fmt = color('checkmark', ' '+Base.symbols.dot) - + color('pass', ' %s: ') - + color(test.speed, '%dms'); - cursor.CR(); - console.log(fmt, test.fullTitle(), test.duration); - }); + runner.on('pass', function(test) { + var fmt = + color('checkmark', ' ' + Base.symbols.dot) + + color('pass', ' %s: ') + + color(test.speed, '%dms'); + cursor.CR(); + console.log(fmt, test.fullTitle(), test.duration); + }); - runner.on('fail', function(test, err){ - cursor.CR(); - console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); - }); + runner.on('fail', function(test, err) { + cursor.CR(); + console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); + }); - runner.on('end', self.epilogue.bind(self)); -} + runner.on('end', self.epilogue.bind(self)); + } -/** + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -List.prototype = new F; -List.prototype.constructor = List; - + function F() {} + F.prototype = Base.prototype; + List.prototype = new F(); + List.prototype.constructor = List; + }); // module: reporters/list.js -}); // module: reporters/list.js - -require.register("reporters/markdown.js", function(module, exports, require){ -/** + require.register('reporters/markdown.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , utils = require('../utils'); + var Base = require('./base'), + utils = require('../utils'); -/** + /** * Expose `Markdown`. */ -exports = module.exports = Markdown; + exports = module.exports = Markdown; -/** + /** * Initialize a new `Markdown` reporter. * * @param {Runner} runner * @api public */ -function Markdown(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , level = 0 - , buf = ''; - - function title(str) { - return Array(level).join('#') + ' ' + str; - } - - function indent() { - return Array(level).join(' '); - } - - function mapTOC(suite, obj) { - var ret = obj; - obj = obj[suite.title] = obj[suite.title] || { suite: suite }; - suite.suites.forEach(function(suite){ - mapTOC(suite, obj); - }); - return ret; - } - - function stringifyTOC(obj, level) { - ++level; - var buf = ''; - var link; - for (var key in obj) { - if ('suite' == key) continue; - if (key) link = ' - [' + key + '](#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; - if (key) buf += Array(level).join(' ') + link; - buf += stringifyTOC(obj[key], level); - } - --level; - return buf; - } - - function generateTOC(suite) { - var obj = mapTOC(suite, {}); - return stringifyTOC(obj, 0); - } - - generateTOC(runner.suite); - - runner.on('suite', function(suite){ - ++level; - var slug = utils.slug(suite.fullTitle()); - buf += '' + '\n'; - buf += title(suite.title) + '\n'; - }); - - runner.on('suite end', function(suite){ - --level; - }); - - runner.on('pass', function(test){ - var code = utils.clean(test.fn.toString()); - buf += test.title + '.\n'; - buf += '\n```js\n'; - buf += code + '\n'; - buf += '```\n\n'; - }); - - runner.on('end', function(){ - process.stdout.write('# TOC\n'); - process.stdout.write(generateTOC(runner.suite)); - process.stdout.write(buf); - }); -} -}); // module: reporters/markdown.js - -require.register("reporters/min.js", function(module, exports, require){ - -/** + function Markdown(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + level = 0, + buf = ''; + + function title(str) { + return Array(level).join('#') + ' ' + str; + } + + function indent() { + return Array(level).join(' '); + } + + function mapTOC(suite, obj) { + var ret = obj; + obj = obj[suite.title] = obj[suite.title] || {suite: suite}; + suite.suites.forEach(function(suite) { + mapTOC(suite, obj); + }); + return ret; + } + + function stringifyTOC(obj, level) { + ++level; + var buf = ''; + var link; + for (var key in obj) { + if ('suite' == key) continue; + if (key) + link = + ' - [' + key + '](#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; + if (key) buf += Array(level).join(' ') + link; + buf += stringifyTOC(obj[key], level); + } + --level; + return buf; + } + + function generateTOC(suite) { + var obj = mapTOC(suite, {}); + return stringifyTOC(obj, 0); + } + + generateTOC(runner.suite); + + runner.on('suite', function(suite) { + ++level; + var slug = utils.slug(suite.fullTitle()); + buf += '' + '\n'; + buf += title(suite.title) + '\n'; + }); + + runner.on('suite end', function(suite) { + --level; + }); + + runner.on('pass', function(test) { + var code = utils.clean(test.fn.toString()); + buf += test.title + '.\n'; + buf += '\n```js\n'; + buf += code + '\n'; + buf += '```\n\n'; + }); + + runner.on('end', function() { + process.stdout.write('# TOC\n'); + process.stdout.write(generateTOC(runner.suite)); + process.stdout.write(buf); + }); + } + }); // module: reporters/markdown.js + + require.register('reporters/min.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base'); + var Base = require('./base'); -/** + /** * Expose `Min`. */ -exports = module.exports = Min; + exports = module.exports = Min; -/** + /** * Initialize a new `Min` minimal test reporter (best used with --watch). * * @param {Runner} runner * @api public */ -function Min(runner) { - Base.call(this, runner); + function Min(runner) { + Base.call(this, runner); - runner.on('start', function(){ - // clear screen - process.stdout.write('\u001b[2J'); - // set cursor position - process.stdout.write('\u001b[1;3H'); - }); + runner.on('start', function() { + // clear screen + process.stdout.write('\u001b[2J'); + // set cursor position + process.stdout.write('\u001b[1;3H'); + }); - runner.on('end', this.epilogue.bind(this)); -} + runner.on('end', this.epilogue.bind(this)); + } -/** + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -Min.prototype = new F; -Min.prototype.constructor = Min; + function F() {} + F.prototype = Base.prototype; + Min.prototype = new F(); + Min.prototype.constructor = Min; + }); // module: reporters/min.js - -}); // module: reporters/min.js - -require.register("reporters/nyan.js", function(module, exports, require){ -/** + require.register('reporters/nyan.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , color = Base.color; + var Base = require('./base'), + color = Base.color; -/** + /** * Expose `Dot`. */ -exports = module.exports = NyanCat; + exports = module.exports = NyanCat; -/** + /** * Initialize a new `Dot` matrix test reporter. * * @param {Runner} runner * @api public */ -function NyanCat(runner) { - Base.call(this, runner); - var self = this - , stats = this.stats - , width = Base.window.width * .75 | 0 - , rainbowColors = this.rainbowColors = self.generateColors() - , colorIndex = this.colorIndex = 0 - , numerOfLines = this.numberOfLines = 4 - , trajectories = this.trajectories = [[], [], [], []] - , nyanCatWidth = this.nyanCatWidth = 11 - , trajectoryWidthMax = this.trajectoryWidthMax = (width - nyanCatWidth) - , scoreboardWidth = this.scoreboardWidth = 5 - , tick = this.tick = 0 - , n = 0; - - runner.on('start', function(){ - Base.cursor.hide(); - self.draw(); - }); - - runner.on('pending', function(test){ - self.draw(); - }); - - runner.on('pass', function(test){ - self.draw(); - }); - - runner.on('fail', function(test, err){ - self.draw(); - }); - - runner.on('end', function(){ - Base.cursor.show(); - for (var i = 0; i < self.numberOfLines; i++) write('\n'); - self.epilogue(); - }); -} - -/** + function NyanCat(runner) { + Base.call(this, runner); + var self = this, + stats = this.stats, + width = (Base.window.width * 0.75) | 0, + rainbowColors = (this.rainbowColors = self.generateColors()), + colorIndex = (this.colorIndex = 0), + numerOfLines = (this.numberOfLines = 4), + trajectories = (this.trajectories = [[], [], [], []]), + nyanCatWidth = (this.nyanCatWidth = 11), + trajectoryWidthMax = (this.trajectoryWidthMax = width - nyanCatWidth), + scoreboardWidth = (this.scoreboardWidth = 5), + tick = (this.tick = 0), + n = 0; + + runner.on('start', function() { + Base.cursor.hide(); + self.draw(); + }); + + runner.on('pending', function(test) { + self.draw(); + }); + + runner.on('pass', function(test) { + self.draw(); + }); + + runner.on('fail', function(test, err) { + self.draw(); + }); + + runner.on('end', function() { + Base.cursor.show(); + for (var i = 0; i < self.numberOfLines; i++) write('\n'); + self.epilogue(); + }); + } + + /** * Draw the nyan cat * * @api private */ -NyanCat.prototype.draw = function(){ - this.appendRainbow(); - this.drawScoreboard(); - this.drawRainbow(); - this.drawNyanCat(); - this.tick = !this.tick; -}; + NyanCat.prototype.draw = function() { + this.appendRainbow(); + this.drawScoreboard(); + this.drawRainbow(); + this.drawNyanCat(); + this.tick = !this.tick; + }; -/** + /** * Draw the "scoreboard" showing the number * of passes, failures and pending tests. * * @api private */ -NyanCat.prototype.drawScoreboard = function(){ - var stats = this.stats; - var colors = Base.colors; + NyanCat.prototype.drawScoreboard = function() { + var stats = this.stats; + var colors = Base.colors; - function draw(color, n) { - write(' '); - write('\u001b[' + color + 'm' + n + '\u001b[0m'); - write('\n'); - } + function draw(color, n) { + write(' '); + write('\u001b[' + color + 'm' + n + '\u001b[0m'); + write('\n'); + } - draw(colors.green, stats.passes); - draw(colors.fail, stats.failures); - draw(colors.pending, stats.pending); - write('\n'); + draw(colors.green, stats.passes); + draw(colors.fail, stats.failures); + draw(colors.pending, stats.pending); + write('\n'); - this.cursorUp(this.numberOfLines); -}; + this.cursorUp(this.numberOfLines); + }; -/** + /** * Append the rainbow. * * @api private */ -NyanCat.prototype.appendRainbow = function(){ - var segment = this.tick ? '_' : '-'; - var rainbowified = this.rainbowify(segment); + NyanCat.prototype.appendRainbow = function() { + var segment = this.tick ? '_' : '-'; + var rainbowified = this.rainbowify(segment); - for (var index = 0; index < this.numberOfLines; index++) { - var trajectory = this.trajectories[index]; - if (trajectory.length >= this.trajectoryWidthMax) trajectory.shift(); - trajectory.push(rainbowified); - } -}; + for (var index = 0; index < this.numberOfLines; index++) { + var trajectory = this.trajectories[index]; + if (trajectory.length >= this.trajectoryWidthMax) trajectory.shift(); + trajectory.push(rainbowified); + } + }; -/** + /** * Draw the rainbow. * * @api private */ -NyanCat.prototype.drawRainbow = function(){ - var self = this; + NyanCat.prototype.drawRainbow = function() { + var self = this; - this.trajectories.forEach(function(line, index) { - write('\u001b[' + self.scoreboardWidth + 'C'); - write(line.join('')); - write('\n'); - }); + this.trajectories.forEach(function(line, index) { + write('\u001b[' + self.scoreboardWidth + 'C'); + write(line.join('')); + write('\n'); + }); - this.cursorUp(this.numberOfLines); -}; + this.cursorUp(this.numberOfLines); + }; -/** + /** * Draw the nyan cat * * @api private */ -NyanCat.prototype.drawNyanCat = function() { - var self = this; - var startWidth = this.scoreboardWidth + this.trajectories[0].length; - var color = '\u001b[' + startWidth + 'C'; - var padding = ''; + NyanCat.prototype.drawNyanCat = function() { + var self = this; + var startWidth = this.scoreboardWidth + this.trajectories[0].length; + var color = '\u001b[' + startWidth + 'C'; + var padding = ''; - write(color); - write('_,------,'); - write('\n'); + write(color); + write('_,------,'); + write('\n'); - write(color); - padding = self.tick ? ' ' : ' '; - write('_|' + padding + '/\\_/\\ '); - write('\n'); + write(color); + padding = self.tick ? ' ' : ' '; + write('_|' + padding + '/\\_/\\ '); + write('\n'); - write(color); - padding = self.tick ? '_' : '__'; - var tail = self.tick ? '~' : '^'; - var face; - write(tail + '|' + padding + this.face() + ' '); - write('\n'); + write(color); + padding = self.tick ? '_' : '__'; + var tail = self.tick ? '~' : '^'; + var face; + write(tail + '|' + padding + this.face() + ' '); + write('\n'); - write(color); - padding = self.tick ? ' ' : ' '; - write(padding + '"" "" '); - write('\n'); + write(color); + padding = self.tick ? ' ' : ' '; + write(padding + '"" "" '); + write('\n'); - this.cursorUp(this.numberOfLines); -}; + this.cursorUp(this.numberOfLines); + }; -/** + /** * Draw nyan cat face. * * @return {String} * @api private */ -NyanCat.prototype.face = function() { - var stats = this.stats; - if (stats.failures) { - return '( x .x)'; - } else if (stats.pending) { - return '( o .o)'; - } else if(stats.passes) { - return '( ^ .^)'; - } else { - return '( - .-)'; - } -}; - -/** + NyanCat.prototype.face = function() { + var stats = this.stats; + if (stats.failures) { + return '( x .x)'; + } else if (stats.pending) { + return '( o .o)'; + } else if (stats.passes) { + return '( ^ .^)'; + } else { + return '( - .-)'; + } + }; + + /** * Move cursor up `n`. * * @param {Number} n * @api private */ -NyanCat.prototype.cursorUp = function(n) { - write('\u001b[' + n + 'A'); -}; + NyanCat.prototype.cursorUp = function(n) { + write('\u001b[' + n + 'A'); + }; -/** + /** * Move cursor down `n`. * * @param {Number} n * @api private */ -NyanCat.prototype.cursorDown = function(n) { - write('\u001b[' + n + 'B'); -}; + NyanCat.prototype.cursorDown = function(n) { + write('\u001b[' + n + 'B'); + }; -/** + /** * Generate rainbow colors. * * @return {Array} * @api private */ -NyanCat.prototype.generateColors = function(){ - var colors = []; + NyanCat.prototype.generateColors = function() { + var colors = []; - for (var i = 0; i < (6 * 7); i++) { - var pi3 = Math.floor(Math.PI / 3); - var n = (i * (1.0 / 6)); - var r = Math.floor(3 * Math.sin(n) + 3); - var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); - var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); - colors.push(36 * r + 6 * g + b + 16); - } + for (var i = 0; i < 6 * 7; i++) { + var pi3 = Math.floor(Math.PI / 3); + var n = i * (1.0 / 6); + var r = Math.floor(3 * Math.sin(n) + 3); + var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); + var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); + colors.push(36 * r + 6 * g + b + 16); + } - return colors; -}; + return colors; + }; -/** + /** * Apply rainbow to the given `str`. * * @param {String} str @@ -3775,54 +3818,52 @@ NyanCat.prototype.generateColors = function(){ * @api private */ -NyanCat.prototype.rainbowify = function(str){ - var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; - this.colorIndex += 1; - return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; -}; + NyanCat.prototype.rainbowify = function(str) { + var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; + this.colorIndex += 1; + return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; + }; -/** + /** * Stdout helper. */ -function write(string) { - process.stdout.write(string); -} + function write(string) { + process.stdout.write(string); + } -/** + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -NyanCat.prototype = new F; -NyanCat.prototype.constructor = NyanCat; - + function F() {} + F.prototype = Base.prototype; + NyanCat.prototype = new F(); + NyanCat.prototype.constructor = NyanCat; + }); // module: reporters/nyan.js -}); // module: reporters/nyan.js - -require.register("reporters/progress.js", function(module, exports, require){ -/** + require.register('reporters/progress.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `Progress`. */ -exports = module.exports = Progress; + exports = module.exports = Progress; -/** + /** * General progress bar color. */ -Base.colors.progress = 90; + Base.colors.progress = 90; -/** + /** * Initialize a new `Progress` bar test reporter. * * @param {Runner} runner @@ -3830,232 +3871,228 @@ Base.colors.progress = 90; * @api public */ -function Progress(runner, options) { - Base.call(this, runner); - - var self = this - , options = options || {} - , stats = this.stats - , width = Base.window.width * .50 | 0 - , total = runner.total - , complete = 0 - , max = Math.max - , lastN = -1; - - // default chars - options.open = options.open || '['; - options.complete = options.complete || '▬'; - options.incomplete = options.incomplete || Base.symbols.dot; - options.close = options.close || ']'; - options.verbose = false; - - // tests started - runner.on('start', function(){ - console.log(); - cursor.hide(); - }); - - // tests complete - runner.on('test end', function(){ - complete++; - var incomplete = total - complete - , percent = complete / total - , n = width * percent | 0 - , i = width - n; - - if (lastN === n && !options.verbose) { - // Don't re-render the line if it hasn't changed - return; - } - lastN = n; - - cursor.CR(); - process.stdout.write('\u001b[J'); - process.stdout.write(color('progress', ' ' + options.open)); - process.stdout.write(Array(n).join(options.complete)); - process.stdout.write(Array(i).join(options.incomplete)); - process.stdout.write(color('progress', options.close)); - if (options.verbose) { - process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); - } - }); - - // tests are complete, output some stats - // and the failures if any - runner.on('end', function(){ - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** + function Progress(runner, options) { + Base.call(this, runner); + + var self = this, + options = options || {}, + stats = this.stats, + width = (Base.window.width * 0.5) | 0, + total = runner.total, + complete = 0, + max = Math.max, + lastN = -1; + + // default chars + options.open = options.open || '['; + options.complete = options.complete || '▬'; + options.incomplete = options.incomplete || Base.symbols.dot; + options.close = options.close || ']'; + options.verbose = false; + + // tests started + runner.on('start', function() { + console.log(); + cursor.hide(); + }); + + // tests complete + runner.on('test end', function() { + complete++; + var incomplete = total - complete, + percent = complete / total, + n = (width * percent) | 0, + i = width - n; + + if (lastN === n && !options.verbose) { + // Don't re-render the line if it hasn't changed + return; + } + lastN = n; + + cursor.CR(); + process.stdout.write('\u001b[J'); + process.stdout.write(color('progress', ' ' + options.open)); + process.stdout.write(Array(n).join(options.complete)); + process.stdout.write(Array(i).join(options.incomplete)); + process.stdout.write(color('progress', options.close)); + if (options.verbose) { + process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); + } + }); + + // tests are complete, output some stats + // and the failures if any + runner.on('end', function() { + cursor.show(); + console.log(); + self.epilogue(); + }); + } + + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -Progress.prototype = new F; -Progress.prototype.constructor = Progress; - - -}); // module: reporters/progress.js - -require.register("reporters/spec.js", function(module, exports, require){ + function F() {} + F.prototype = Base.prototype; + Progress.prototype = new F(); + Progress.prototype.constructor = Progress; + }); // module: reporters/progress.js -/** + require.register('reporters/spec.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `Spec`. */ -exports = module.exports = Spec; + exports = module.exports = Spec; -/** + /** * Initialize a new `Spec` test reporter. * * @param {Runner} runner * @api public */ -function Spec(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , indents = 0 - , n = 0; - - function indent() { - return Array(indents).join(' ') - } - - runner.on('start', function(){ - console.log(); - }); - - runner.on('suite', function(suite){ - ++indents; - console.log(color('suite', '%s%s'), indent(), suite.title); - }); - - runner.on('suite end', function(suite){ - --indents; - if (1 == indents) console.log(); - }); - - runner.on('pending', function(test){ - var fmt = indent() + color('pending', ' - %s'); - console.log(fmt, test.title); - }); - - runner.on('pass', function(test){ - if ('fast' == test.speed) { - var fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s '); - cursor.CR(); - console.log(fmt, test.title); - } else { - var fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s ') - + color(test.speed, '(%dms)'); - cursor.CR(); - console.log(fmt, test.title, test.duration); - } - }); + function Spec(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + indents = 0, + n = 0; - runner.on('fail', function(test, err){ - cursor.CR(); - console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); - }); + function indent() { + return Array(indents).join(' '); + } - runner.on('end', self.epilogue.bind(self)); -} + runner.on('start', function() { + console.log(); + }); + + runner.on('suite', function(suite) { + ++indents; + console.log(color('suite', '%s%s'), indent(), suite.title); + }); + + runner.on('suite end', function(suite) { + --indents; + if (1 == indents) console.log(); + }); + + runner.on('pending', function(test) { + var fmt = indent() + color('pending', ' - %s'); + console.log(fmt, test.title); + }); + + runner.on('pass', function(test) { + if ('fast' == test.speed) { + var fmt = + indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s '); + cursor.CR(); + console.log(fmt, test.title); + } else { + var fmt = + indent() + + color('checkmark', ' ' + Base.symbols.ok) + + color('pass', ' %s ') + + color(test.speed, '(%dms)'); + cursor.CR(); + console.log(fmt, test.title, test.duration); + } + }); + + runner.on('fail', function(test, err) { + cursor.CR(); + console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); + }); + + runner.on('end', self.epilogue.bind(self)); + } -/** + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -Spec.prototype = new F; -Spec.prototype.constructor = Spec; - - -}); // module: reporters/spec.js - -require.register("reporters/tap.js", function(module, exports, require){ + function F() {} + F.prototype = Base.prototype; + Spec.prototype = new F(); + Spec.prototype.constructor = Spec; + }); // module: reporters/spec.js -/** + require.register('reporters/tap.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , cursor = Base.cursor - , color = Base.color; + var Base = require('./base'), + cursor = Base.cursor, + color = Base.color; -/** + /** * Expose `TAP`. */ -exports = module.exports = TAP; + exports = module.exports = TAP; -/** + /** * Initialize a new `TAP` reporter. * * @param {Runner} runner * @api public */ -function TAP(runner) { - Base.call(this, runner); - - var self = this - , stats = this.stats - , n = 1 - , passes = 0 - , failures = 0; - - runner.on('start', function(){ - var total = runner.grepTotal(runner.suite); - console.log('%d..%d', 1, total); - }); - - runner.on('test end', function(){ - ++n; - }); - - runner.on('pending', function(test){ - console.log('ok %d %s # SKIP -', n, title(test)); - }); - - runner.on('pass', function(test){ - passes++; - console.log('ok %d %s', n, title(test)); - }); - - runner.on('fail', function(test, err){ - failures++; - console.log('not ok %d %s', n, title(test)); - if (err.stack) console.log(err.stack.replace(/^/gm, ' ')); - }); - - runner.on('end', function(){ - console.log('# tests ' + (passes + failures)); - console.log('# pass ' + passes); - console.log('# fail ' + failures); - }); -} + function TAP(runner) { + Base.call(this, runner); + + var self = this, + stats = this.stats, + n = 1, + passes = 0, + failures = 0; + + runner.on('start', function() { + var total = runner.grepTotal(runner.suite); + console.log('%d..%d', 1, total); + }); + + runner.on('test end', function() { + ++n; + }); + + runner.on('pending', function(test) { + console.log('ok %d %s # SKIP -', n, title(test)); + }); + + runner.on('pass', function(test) { + passes++; + console.log('ok %d %s', n, title(test)); + }); + + runner.on('fail', function(test, err) { + failures++; + console.log('not ok %d %s', n, title(test)); + if (err.stack) console.log(err.stack.replace(/^/gm, ' ')); + }); + + runner.on('end', function() { + console.log('# tests ' + (passes + failures)); + console.log('# pass ' + passes); + console.log('# fail ' + failures); + }); + } -/** + /** * Return a TAP-safe title of `test` * * @param {Object} test @@ -4063,171 +4100,179 @@ function TAP(runner) { * @api private */ -function title(test) { - return test.fullTitle().replace(/#/g, ''); -} - -}); // module: reporters/tap.js - -require.register("reporters/xunit.js", function(module, exports, require){ + function title(test) { + return test.fullTitle().replace(/#/g, ''); + } + }); // module: reporters/tap.js -/** + require.register('reporters/xunit.js', function(module, exports, require) { + /** * Module dependencies. */ -var Base = require('./base') - , utils = require('../utils') - , escape = utils.escape; + var Base = require('./base'), + utils = require('../utils'), + escape = utils.escape; -/** + /** * Save timer references to avoid Sinon interfering (see GH-237). */ -var Date = global.Date - , setTimeout = global.setTimeout - , setInterval = global.setInterval - , clearTimeout = global.clearTimeout - , clearInterval = global.clearInterval; + var Date = global.Date, + setTimeout = global.setTimeout, + setInterval = global.setInterval, + clearTimeout = global.clearTimeout, + clearInterval = global.clearInterval; -/** + /** * Expose `XUnit`. */ -exports = module.exports = XUnit; + exports = module.exports = XUnit; -/** + /** * Initialize a new `XUnit` reporter. * * @param {Runner} runner * @api public */ -function XUnit(runner) { - Base.call(this, runner); - var stats = this.stats - , tests = [] - , self = this; - - runner.on('pending', function(test){ - tests.push(test); - }); - - runner.on('pass', function(test){ - tests.push(test); - }); - - runner.on('fail', function(test){ - tests.push(test); - }); - - runner.on('end', function(){ - console.log(tag('testsuite', { - name: 'Mocha Tests' - , tests: stats.tests - , failures: stats.failures - , errors: stats.failures - , skipped: stats.tests - stats.failures - stats.passes - , timestamp: (new Date).toUTCString() - , time: (stats.duration / 1000) || 0 - }, false)); - - tests.forEach(test); - console.log(''); - }); -} - -/** + function XUnit(runner) { + Base.call(this, runner); + var stats = this.stats, + tests = [], + self = this; + + runner.on('pending', function(test) { + tests.push(test); + }); + + runner.on('pass', function(test) { + tests.push(test); + }); + + runner.on('fail', function(test) { + tests.push(test); + }); + + runner.on('end', function() { + console.log( + tag( + 'testsuite', + { + name: 'Mocha Tests', + tests: stats.tests, + failures: stats.failures, + errors: stats.failures, + skipped: stats.tests - stats.failures - stats.passes, + timestamp: new Date().toUTCString(), + time: stats.duration / 1000 || 0 + }, + false + ) + ); + + tests.forEach(test); + console.log(''); + }); + } + + /** * Inherit from `Base.prototype`. */ -function F(){}; -F.prototype = Base.prototype; -XUnit.prototype = new F; -XUnit.prototype.constructor = XUnit; - + function F() {} + F.prototype = Base.prototype; + XUnit.prototype = new F(); + XUnit.prototype.constructor = XUnit; -/** + /** * Output tag for the given `test.` */ -function test(test) { - var attrs = { - classname: test.parent.fullTitle() - , name: test.title - , time: (test.duration / 1000) || 0 - }; - - if ('failed' == test.state) { - var err = test.err; - console.log(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + "\n" + err.stack)))); - } else if (test.pending) { - console.log(tag('testcase', attrs, false, tag('skipped', {}, true))); - } else { - console.log(tag('testcase', attrs, true) ); - } -} - -/** + function test(test) { + var attrs = { + classname: test.parent.fullTitle(), + name: test.title, + time: test.duration / 1000 || 0 + }; + + if ('failed' == test.state) { + var err = test.err; + console.log( + tag( + 'testcase', + attrs, + false, + tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)) + ) + ); + } else if (test.pending) { + console.log(tag('testcase', attrs, false, tag('skipped', {}, true))); + } else { + console.log(tag('testcase', attrs, true)); + } + } + + /** * HTML tag helper. */ -function tag(name, attrs, close, content) { - var end = close ? '/>' : '>' - , pairs = [] - , tag; + function tag(name, attrs, close, content) { + var end = close ? '/>' : '>', + pairs = [], + tag; - for (var key in attrs) { - pairs.push(key + '="' + escape(attrs[key]) + '"'); - } + for (var key in attrs) { + pairs.push(key + '="' + escape(attrs[key]) + '"'); + } - tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; - if (content) tag += content + ''; -} - -}); // module: reporters/xunit.js - -require.register("runnable.js", function(module, exports, require){ + function cdata(str) { + return ''; + } + }); // module: reporters/xunit.js -/** + require.register('runnable.js', function(module, exports, require) { + /** * Module dependencies. */ -var EventEmitter = require('browser/events').EventEmitter - , debug = require('browser/debug')('mocha:runnable') - , milliseconds = require('./ms'); + var EventEmitter = require('browser/events').EventEmitter, + debug = require('browser/debug')('mocha:runnable'), + milliseconds = require('./ms'); -/** + /** * Save timer references to avoid Sinon interfering (see GH-237). */ -var Date = global.Date - , setTimeout = global.setTimeout - , setInterval = global.setInterval - , clearTimeout = global.clearTimeout - , clearInterval = global.clearInterval; + var Date = global.Date, + setTimeout = global.setTimeout, + setInterval = global.setInterval, + clearTimeout = global.clearTimeout, + clearInterval = global.clearInterval; -/** + /** * Object#toString(). */ -var toString = Object.prototype.toString; + var toString = Object.prototype.toString; -/** + /** * Expose `Runnable`. */ -module.exports = Runnable; + module.exports = Runnable; -/** + /** * Initialize a new `Runnable` with the given `title` and callback `fn`. * * @param {String} title @@ -4235,28 +4280,27 @@ module.exports = Runnable; * @api private */ -function Runnable(title, fn) { - this.title = title; - this.fn = fn; - this.async = fn && fn.length; - this.sync = ! this.async; - this._timeout = 2000; - this._slow = 75; - this._enableTimeouts = true; - this.timedOut = false; -} + function Runnable(title, fn) { + this.title = title; + this.fn = fn; + this.async = fn && fn.length; + this.sync = !this.async; + this._timeout = 2000; + this._slow = 75; + this._enableTimeouts = true; + this.timedOut = false; + } -/** + /** * Inherit from `EventEmitter.prototype`. */ -function F(){}; -F.prototype = EventEmitter.prototype; -Runnable.prototype = new F; -Runnable.prototype.constructor = Runnable; + function F() {} + F.prototype = EventEmitter.prototype; + Runnable.prototype = new F(); + Runnable.prototype.constructor = Runnable; - -/** + /** * Set & get timeout `ms`. * * @param {Number|String} ms @@ -4264,17 +4308,17 @@ Runnable.prototype.constructor = Runnable; * @api private */ -Runnable.prototype.timeout = function(ms){ - if (0 == arguments.length) return this._timeout; - if (ms === 0) this._enableTimeouts = false; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._timeout = ms; - if (this.timer) this.resetTimeout(); - return this; -}; + Runnable.prototype.timeout = function(ms) { + if (0 == arguments.length) return this._timeout; + if (ms === 0) this._enableTimeouts = false; + if ('string' == typeof ms) ms = milliseconds(ms); + debug('timeout %d', ms); + this._timeout = ms; + if (this.timer) this.resetTimeout(); + return this; + }; -/** + /** * Set & get slow `ms`. * * @param {Number|String} ms @@ -4282,15 +4326,15 @@ Runnable.prototype.timeout = function(ms){ * @api private */ -Runnable.prototype.slow = function(ms){ - if (0 === arguments.length) return this._slow; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._slow = ms; - return this; -}; + Runnable.prototype.slow = function(ms) { + if (0 === arguments.length) return this._slow; + if ('string' == typeof ms) ms = milliseconds(ms); + debug('timeout %d', ms); + this._slow = ms; + return this; + }; -/** + /** * Set and & get timeout `enabled`. * * @param {Boolean} enabled @@ -4298,14 +4342,14 @@ Runnable.prototype.slow = function(ms){ * @api private */ -Runnable.prototype.enableTimeouts = function(enabled){ - if (arguments.length === 0) return this._enableTimeouts; - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; + Runnable.prototype.enableTimeouts = function(enabled) { + if (arguments.length === 0) return this._enableTimeouts; + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; + }; -/** + /** * Return the full title generated by recursively * concatenating the parent's full title. * @@ -4313,192 +4357,202 @@ Runnable.prototype.enableTimeouts = function(enabled){ * @api public */ -Runnable.prototype.fullTitle = function(){ - return this.parent.fullTitle() + ' ' + this.title; -}; + Runnable.prototype.fullTitle = function() { + return this.parent.fullTitle() + ' ' + this.title; + }; -/** + /** * Clear the timeout. * * @api private */ -Runnable.prototype.clearTimeout = function(){ - clearTimeout(this.timer); -}; + Runnable.prototype.clearTimeout = function() { + clearTimeout(this.timer); + }; -/** + /** * Inspect the runnable void of private properties. * * @return {String} * @api private */ -Runnable.prototype.inspect = function(){ - return JSON.stringify(this, function(key, val){ - if ('_' == key[0]) return; - if ('parent' == key) return '#'; - if ('ctx' == key) return '#'; - return val; - }, 2); -}; - -/** + Runnable.prototype.inspect = function() { + return JSON.stringify( + this, + function(key, val) { + if ('_' == key[0]) return; + if ('parent' == key) return '#'; + if ('ctx' == key) return '#'; + return val; + }, + 2 + ); + }; + + /** * Reset the timeout. * * @api private */ -Runnable.prototype.resetTimeout = function(){ - var self = this; - var ms = this.timeout() || 1e9; + Runnable.prototype.resetTimeout = function() { + var self = this; + var ms = this.timeout() || 1e9; - if (!this._enableTimeouts) return; - this.clearTimeout(); - this.timer = setTimeout(function(){ - if (!self._enableTimeouts) return; - self.callback(new Error('timeout of ' + ms + 'ms exceeded')); - self.timedOut = true; - }, ms); -}; + if (!this._enableTimeouts) return; + this.clearTimeout(); + this.timer = setTimeout(function() { + if (!self._enableTimeouts) return; + self.callback(new Error('timeout of ' + ms + 'ms exceeded')); + self.timedOut = true; + }, ms); + }; -/** + /** * Whitelist these globals for this test run * * @api private */ -Runnable.prototype.globals = function(arr){ - var self = this; - this._allowedGlobals = arr; -}; + Runnable.prototype.globals = function(arr) { + var self = this; + this._allowedGlobals = arr; + }; -/** + /** * Run the test and invoke `fn(err)`. * * @param {Function} fn * @api private */ -Runnable.prototype.run = function(fn){ - var self = this - , start = new Date - , ctx = this.ctx - , finished - , emitted; - - // Some times the ctx exists but it is not runnable - if (ctx && ctx.runnable) ctx.runnable(this); - - // called multiple times - function multiple(err) { - if (emitted) return; - emitted = true; - self.emit('error', err || new Error('done() called multiple times')); - } - - // finished - function done(err) { - var ms = self.timeout(); - if (self.timedOut) return; - if (finished) return multiple(err); - self.clearTimeout(); - self.duration = new Date - start; - finished = true; - if (!err && self.duration > ms && self._enableTimeouts) err = new Error('timeout of ' + ms + 'ms exceeded'); - fn(err); - } - - // for .resetTimeout() - this.callback = done; - - // explicit async with `done` argument - if (this.async) { - this.resetTimeout(); - - try { - this.fn.call(ctx, function(err){ - if (err instanceof Error || toString.call(err) === "[object Error]") return done(err); - if (null != err) { - if (Object.prototype.toString.call(err) === '[object Object]') { - return done(new Error('done() invoked with non-Error: ' + JSON.stringify(err))); - } else { - return done(new Error('done() invoked with non-Error: ' + err)); - } - } - done(); - }); - } catch (err) { - done(err); - } - return; - } - - if (this.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()`')); - } - - // sync or promise-returning - try { - if (this.pending) { - done(); - } else { - callFn(this.fn); - } - } catch (err) { - done(err); - } - - function callFn(fn) { - var result = fn.call(ctx); - if (result && typeof result.then === 'function') { - self.resetTimeout(); - result - .then(function() { - done() - }, - function(reason) { - done(reason || new Error('Promise rejected with no or falsy reason')) - }); - } else { - done(); - } - } -}; + Runnable.prototype.run = function(fn) { + var self = this, + start = new Date(), + ctx = this.ctx, + finished, + emitted; + + // Some times the ctx exists but it is not runnable + if (ctx && ctx.runnable) ctx.runnable(this); + + // called multiple times + function multiple(err) { + if (emitted) return; + emitted = true; + self.emit('error', err || new Error('done() called multiple times')); + } + + // finished + function done(err) { + var ms = self.timeout(); + if (self.timedOut) return; + if (finished) return multiple(err); + self.clearTimeout(); + self.duration = new Date() - start; + finished = true; + if (!err && self.duration > ms && self._enableTimeouts) + err = new Error('timeout of ' + ms + 'ms exceeded'); + fn(err); + } + + // for .resetTimeout() + this.callback = done; + + // explicit async with `done` argument + if (this.async) { + this.resetTimeout(); + + try { + this.fn.call(ctx, function(err) { + if (err instanceof Error || toString.call(err) === '[object Error]') + return done(err); + if (null != err) { + if (Object.prototype.toString.call(err) === '[object Object]') { + return done( + new Error( + 'done() invoked with non-Error: ' + JSON.stringify(err) + ) + ); + } else { + return done(new Error('done() invoked with non-Error: ' + err)); + } + } + done(); + }); + } catch (err) { + done(err); + } + return; + } + + if (this.asyncOnly) { + return done(new Error('--async-only option in use without declaring `done()`')); + } + + // sync or promise-returning + try { + if (this.pending) { + done(); + } else { + callFn(this.fn); + } + } catch (err) { + done(err); + } -}); // module: runnable.js + function callFn(fn) { + var result = fn.call(ctx); + if (result && typeof result.then === 'function') { + self.resetTimeout(); + result.then( + function() { + done(); + }, + function(reason) { + done(reason || new Error('Promise rejected with no or falsy reason')); + } + ); + } else { + done(); + } + } + }; + }); // module: runnable.js -require.register("runner.js", function(module, exports, require){ -/** + require.register('runner.js', function(module, exports, require) { + /** * Module dependencies. */ -var EventEmitter = require('browser/events').EventEmitter - , debug = require('browser/debug')('mocha:runner') - , Test = require('./test') - , utils = require('./utils') - , filter = utils.filter - , keys = utils.keys; + var EventEmitter = require('browser/events').EventEmitter, + debug = require('browser/debug')('mocha:runner'), + Test = require('./test'), + utils = require('./utils'), + filter = utils.filter, + keys = utils.keys; -/** + /** * Non-enumerable globals. */ -var globals = [ - 'setTimeout', - 'clearTimeout', - 'setInterval', - 'clearInterval', - 'XMLHttpRequest', - 'Date' -]; + var globals = [ + 'setTimeout', + 'clearTimeout', + 'setInterval', + 'clearInterval', + 'XMLHttpRequest', + 'Date' + ]; -/** + /** * Expose `Runner`. */ -module.exports = Runner; + module.exports = Runner; -/** + /** * Initialize a `Runner` for the given `suite`. * * Events: @@ -4518,39 +4572,42 @@ module.exports = Runner; * @api public */ -function Runner(suite) { - var self = this; - this._globals = []; - this._abort = false; - this.suite = suite; - this.total = suite.total(); - this.failures = 0; - this.on('test end', function(test){ self.checkGlobals(test); }); - this.on('hook end', function(hook){ self.checkGlobals(hook); }); - this.grep(/.*/); - this.globals(this.globalProps().concat(extraGlobals())); -} - -/** + function Runner(suite) { + var self = this; + this._globals = []; + this._abort = false; + this.suite = suite; + this.total = suite.total(); + this.failures = 0; + this.on('test end', function(test) { + self.checkGlobals(test); + }); + this.on('hook end', function(hook) { + self.checkGlobals(hook); + }); + this.grep(/.*/); + this.globals(this.globalProps().concat(extraGlobals())); + } + + /** * Wrapper for setImmediate, process.nextTick, or browser polyfill. * * @param {Function} fn * @api private */ -Runner.immediately = global.setImmediate || process.nextTick; + Runner.immediately = global.setImmediate || process.nextTick; -/** + /** * Inherit from `EventEmitter.prototype`. */ -function F(){}; -F.prototype = EventEmitter.prototype; -Runner.prototype = new F; -Runner.prototype.constructor = Runner; + function F() {} + F.prototype = EventEmitter.prototype; + Runner.prototype = new F(); + Runner.prototype.constructor = Runner; - -/** + /** * Run tests with full titles matching `re`. Updates runner.total * with number of tests matched. * @@ -4560,15 +4617,15 @@ Runner.prototype.constructor = Runner; * @api public */ -Runner.prototype.grep = function(re, invert){ - debug('grep %s', re); - this._grep = re; - this._invert = invert; - this.total = this.grepTotal(this.suite); - return this; -}; + Runner.prototype.grep = function(re, invert) { + debug('grep %s', re); + this._grep = re; + this._invert = invert; + this.total = this.grepTotal(this.suite); + return this; + }; -/** + /** * Returns the number of tests matching the grep search for the * given suite. * @@ -4577,39 +4634,39 @@ Runner.prototype.grep = function(re, invert){ * @api public */ -Runner.prototype.grepTotal = function(suite) { - var self = this; - var total = 0; + Runner.prototype.grepTotal = function(suite) { + var self = this; + var total = 0; - suite.eachTest(function(test){ - var match = self._grep.test(test.fullTitle()); - if (self._invert) match = !match; - if (match) total++; - }); + suite.eachTest(function(test) { + var match = self._grep.test(test.fullTitle()); + if (self._invert) match = !match; + if (match) total++; + }); - return total; -}; + return total; + }; -/** + /** * Return a list of global properties. * * @return {Array} * @api private */ -Runner.prototype.globalProps = function() { - var props = utils.keys(global); + Runner.prototype.globalProps = function() { + var props = utils.keys(global); - // non-enumerables - for (var i = 0; i < globals.length; ++i) { - if (~utils.indexOf(props, globals[i])) continue; - props.push(globals[i]); - } + // non-enumerables + for (var i = 0; i < globals.length; ++i) { + if (~utils.indexOf(props, globals[i])) continue; + props.push(globals[i]); + } - return props; -}; + return props; + }; -/** + /** * Allow the given `arr` of globals. * * @param {Array} arr @@ -4617,44 +4674,44 @@ Runner.prototype.globalProps = function() { * @api public */ -Runner.prototype.globals = function(arr){ - if (0 == arguments.length) return this._globals; - debug('globals %j', arr); - this._globals = this._globals.concat(arr); - return this; -}; + Runner.prototype.globals = function(arr) { + if (0 == arguments.length) return this._globals; + debug('globals %j', arr); + this._globals = this._globals.concat(arr); + return this; + }; -/** + /** * Check for global variable leaks. * * @api private */ -Runner.prototype.checkGlobals = function(test){ - if (this.ignoreLeaks) return; - var ok = this._globals; + Runner.prototype.checkGlobals = function(test) { + if (this.ignoreLeaks) return; + var ok = this._globals; - var globals = this.globalProps(); - var leaks; + var globals = this.globalProps(); + var leaks; - if (test) { - ok = ok.concat(test._allowedGlobals || []); - } + if (test) { + ok = ok.concat(test._allowedGlobals || []); + } - if(this.prevGlobalsLength == globals.length) return; - this.prevGlobalsLength = globals.length; + if (this.prevGlobalsLength == globals.length) return; + this.prevGlobalsLength = globals.length; - leaks = filterLeaks(ok, globals); - this._globals = this._globals.concat(leaks); + leaks = filterLeaks(ok, globals); + this._globals = this._globals.concat(leaks); - if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); - } else if (leaks.length) { - this.fail(test, new Error('global leak detected: ' + leaks[0])); - } -}; + if (leaks.length > 1) { + this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); + } else if (leaks.length) { + this.fail(test, new Error('global leak detected: ' + leaks[0])); + } + }; -/** + /** * Fail the given `test`. * * @param {Test} test @@ -4662,18 +4719,18 @@ Runner.prototype.checkGlobals = function(test){ * @api private */ -Runner.prototype.fail = function(test, err){ - ++this.failures; - test.state = 'failed'; + Runner.prototype.fail = function(test, err) { + ++this.failures; + test.state = 'failed'; - if ('string' == typeof err) { - err = new Error('the string "' + err + '" was thrown, throw an Error :)'); - } + if ('string' == typeof err) { + err = new Error('the string "' + err + '" was thrown, throw an Error :)'); + } - this.emit('fail', test, err); -}; + this.emit('fail', test, err); + }; -/** + /** * Fail the given `hook` with `err`. * * Hook failures work in the following pattern: @@ -4694,14 +4751,14 @@ Runner.prototype.fail = function(test, err){ * @api private */ -Runner.prototype.failHook = function(hook, err){ - this.fail(hook, err); - if (this.suite.bail()) { - this.emit('end'); - } -}; + Runner.prototype.failHook = function(hook, err) { + this.fail(hook, err); + if (this.suite.bail()) { + this.emit('end'); + } + }; -/** + /** * Run hook `name` callbacks and then invoke `fn()`. * * @param {String} name @@ -4709,48 +4766,48 @@ Runner.prototype.failHook = function(hook, err){ * @api private */ -Runner.prototype.hook = function(name, fn){ - var suite = this.suite - , hooks = suite['_' + name] - , self = this - , timer; - - function next(i) { - var hook = hooks[i]; - if (!hook) return fn(); - if (self.failures && suite.bail()) return fn(); - self.currentRunnable = hook; - - hook.ctx.currentTest = self.test; - - self.emit('hook', hook); - - hook.on('error', function(err){ - self.failHook(hook, err); - }); - - hook.run(function(err){ - hook.removeAllListeners('error'); - var testError = hook.error(); - if (testError) self.fail(self.test, testError); - if (err) { - self.failHook(hook, err); - - // stop executing hooks, notify callee of hook err - return fn(err); - } - self.emit('hook end', hook); - delete hook.ctx.currentTest; - next(++i); - }); - } - - Runner.immediately(function(){ - next(0); - }); -}; - -/** + Runner.prototype.hook = function(name, fn) { + var suite = this.suite, + hooks = suite['_' + name], + self = this, + timer; + + function next(i) { + var hook = hooks[i]; + if (!hook) return fn(); + if (self.failures && suite.bail()) return fn(); + self.currentRunnable = hook; + + hook.ctx.currentTest = self.test; + + self.emit('hook', hook); + + hook.on('error', function(err) { + self.failHook(hook, err); + }); + + hook.run(function(err) { + hook.removeAllListeners('error'); + var testError = hook.error(); + if (testError) self.fail(self.test, testError); + if (err) { + self.failHook(hook, err); + + // stop executing hooks, notify callee of hook err + return fn(err); + } + self.emit('hook end', hook); + delete hook.ctx.currentTest; + next(++i); + }); + } + + Runner.immediately(function() { + next(0); + }); + }; + + /** * Run hook `name` for the given array of `suites` * in order, and callback `fn(err, errSuite)`. * @@ -4760,33 +4817,33 @@ Runner.prototype.hook = function(name, fn){ * @api private */ -Runner.prototype.hooks = function(name, suites, fn){ - var self = this - , orig = this.suite; + Runner.prototype.hooks = function(name, suites, fn) { + var self = this, + orig = this.suite; - function next(suite) { - self.suite = suite; + function next(suite) { + self.suite = suite; - if (!suite) { - self.suite = orig; - return fn(); - } + if (!suite) { + self.suite = orig; + return fn(); + } - self.hook(name, function(err){ - if (err) { - var errSuite = self.suite; - self.suite = orig; - return fn(err, errSuite); - } + self.hook(name, function(err) { + if (err) { + var errSuite = self.suite; + self.suite = orig; + return fn(err, errSuite); + } - next(suites.pop()); - }); - } + next(suites.pop()); + }); + } - next(suites.pop()); -}; + next(suites.pop()); + }; -/** + /** * Run hooks from the top level down. * * @param {String} name @@ -4794,12 +4851,12 @@ Runner.prototype.hooks = function(name, suites, fn){ * @api private */ -Runner.prototype.hookUp = function(name, fn){ - var suites = [this.suite].concat(this.parents()).reverse(); - this.hooks(name, suites, fn); -}; + Runner.prototype.hookUp = function(name, fn) { + var suites = [this.suite].concat(this.parents()).reverse(); + this.hooks(name, suites, fn); + }; -/** + /** * Run hooks from the bottom up. * * @param {String} name @@ -4807,12 +4864,12 @@ Runner.prototype.hookUp = function(name, fn){ * @api private */ -Runner.prototype.hookDown = function(name, fn){ - var suites = [this.suite].concat(this.parents()); - this.hooks(name, suites, fn); -}; + Runner.prototype.hookDown = function(name, fn) { + var suites = [this.suite].concat(this.parents()); + this.hooks(name, suites, fn); + }; -/** + /** * Return an array of parent Suites from * closest to furthest. * @@ -4820,37 +4877,37 @@ Runner.prototype.hookDown = function(name, fn){ * @api private */ -Runner.prototype.parents = function(){ - var suite = this.suite - , suites = []; - while (suite = suite.parent) suites.push(suite); - return suites; -}; + Runner.prototype.parents = function() { + var suite = this.suite, + suites = []; + while ((suite = suite.parent)) suites.push(suite); + return suites; + }; -/** + /** * Run the current test and callback `fn(err)`. * * @param {Function} fn * @api private */ -Runner.prototype.runTest = function(fn){ - var test = this.test - , self = this; + Runner.prototype.runTest = function(fn) { + var test = this.test, + self = this; - if (this.asyncOnly) test.asyncOnly = true; + if (this.asyncOnly) test.asyncOnly = true; - try { - test.on('error', function(err){ - self.fail(test, err); - }); - test.run(fn); - } catch (err) { - fn(err); - } -}; + try { + test.on('error', function(err) { + self.fail(test, err); + }); + test.run(fn); + } catch (err) { + fn(err); + } + }; -/** + /** * Run tests in the given `suite` and invoke * the callback `fn()` when complete. * @@ -4859,91 +4916,89 @@ Runner.prototype.runTest = function(fn){ * @api private */ -Runner.prototype.runTests = function(suite, fn){ - var self = this - , tests = suite.tests.slice() - , test; - - - function hookErr(err, errSuite, after) { - // before/after Each hook for errSuite failed: - var orig = self.suite; - - // for failed 'after each' hook start from errSuite parent, - // otherwise start from errSuite itself - self.suite = after ? errSuite.parent : errSuite; - - if (self.suite) { - // call hookUp afterEach - self.hookUp('afterEach', function(err2, errSuite2) { - self.suite = orig; - // some hooks may fail even now - if (err2) return hookErr(err2, errSuite2, true); - // report error suite - fn(errSuite); - }); - } else { - // there is no need calling other 'after each' hooks - self.suite = orig; - fn(errSuite); - } - } - - function next(err, errSuite) { - // if we bail after first err - if (self.failures && suite._bail) return fn(); - - if (self._abort) return fn(); - - if (err) return hookErr(err, errSuite, true); - - // next test - test = tests.shift(); - - // all done - if (!test) return fn(); - - // grep - var match = self._grep.test(test.fullTitle()); - if (self._invert) match = !match; - if (!match) return next(); - - // pending - if (test.pending) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - - // execute test and hook(s) - self.emit('test', self.test = test); - self.hookDown('beforeEach', function(err, errSuite){ - - if (err) return hookErr(err, errSuite, false); - - self.currentRunnable = self.test; - self.runTest(function(err){ - test = self.test; - - if (err) { - self.fail(test, err); - self.emit('test end', test); - return self.hookUp('afterEach', next); - } + Runner.prototype.runTests = function(suite, fn) { + var self = this, + tests = suite.tests.slice(), + test; + + function hookErr(err, errSuite, after) { + // before/after Each hook for errSuite failed: + var orig = self.suite; + + // for failed 'after each' hook start from errSuite parent, + // otherwise start from errSuite itself + self.suite = after ? errSuite.parent : errSuite; + + if (self.suite) { + // call hookUp afterEach + self.hookUp('afterEach', function(err2, errSuite2) { + self.suite = orig; + // some hooks may fail even now + if (err2) return hookErr(err2, errSuite2, true); + // report error suite + fn(errSuite); + }); + } else { + // there is no need calling other 'after each' hooks + self.suite = orig; + fn(errSuite); + } + } - test.state = 'passed'; - self.emit('pass', test); - self.emit('test end', test); - self.hookUp('afterEach', next); - }); - }); - } + function next(err, errSuite) { + // if we bail after first err + if (self.failures && suite._bail) return fn(); + + if (self._abort) return fn(); + + if (err) return hookErr(err, errSuite, true); + + // next test + test = tests.shift(); + + // all done + if (!test) return fn(); + + // grep + var match = self._grep.test(test.fullTitle()); + if (self._invert) match = !match; + if (!match) return next(); + + // pending + if (test.pending) { + self.emit('pending', test); + self.emit('test end', test); + return next(); + } + + // execute test and hook(s) + self.emit('test', (self.test = test)); + self.hookDown('beforeEach', function(err, errSuite) { + if (err) return hookErr(err, errSuite, false); + + self.currentRunnable = self.test; + self.runTest(function(err) { + test = self.test; + + if (err) { + self.fail(test, err); + self.emit('test end', test); + return self.hookUp('afterEach', next); + } + + test.state = 'passed'; + self.emit('pass', test); + self.emit('test end', test); + self.hookUp('afterEach', next); + }); + }); + } - this.next = next; - next(); -}; + this.next = next; + next(); + }; -/** + /** * Run the given `suite` and invoke the * callback `fn()` when complete. * @@ -4952,92 +5007,98 @@ Runner.prototype.runTests = function(suite, fn){ * @api private */ -Runner.prototype.runSuite = function(suite, fn){ - var total = this.grepTotal(suite) - , self = this - , i = 0; + Runner.prototype.runSuite = function(suite, fn) { + var total = this.grepTotal(suite), + self = this, + i = 0; - debug('run suite %s', suite.fullTitle()); + debug('run suite %s', suite.fullTitle()); - if (!total) return fn(); + if (!total) return fn(); - this.emit('suite', this.suite = suite); + this.emit('suite', (this.suite = suite)); - function next(errSuite) { - if (errSuite) { - // current suite failed on a hook from errSuite - if (errSuite == suite) { - // if errSuite is current suite - // continue to the next sibling suite - return done(); - } else { - // errSuite is among the parents of current suite - // stop execution of errSuite and all sub-suites - return done(errSuite); - } - } + function next(errSuite) { + if (errSuite) { + // current suite failed on a hook from errSuite + if (errSuite == suite) { + // if errSuite is current suite + // continue to the next sibling suite + return done(); + } else { + // errSuite is among the parents of current suite + // stop execution of errSuite and all sub-suites + return done(errSuite); + } + } - if (self._abort) return done(); + if (self._abort) return done(); - var curr = suite.suites[i++]; - if (!curr) return done(); - self.runSuite(curr, next); - } + var curr = suite.suites[i++]; + if (!curr) return done(); + self.runSuite(curr, next); + } - function done(errSuite) { - self.suite = suite; - self.hook('afterAll', function(){ - self.emit('suite end', suite); - fn(errSuite); - }); - } + function done(errSuite) { + self.suite = suite; + self.hook('afterAll', function() { + self.emit('suite end', suite); + fn(errSuite); + }); + } - this.hook('beforeAll', function(err){ - if (err) return done(); - self.runTests(suite, next); - }); -}; + this.hook('beforeAll', function(err) { + if (err) return done(); + self.runTests(suite, next); + }); + }; -/** + /** * Handle uncaught exceptions. * * @param {Error} err * @api private */ -Runner.prototype.uncaught = function(err){ - if (err) { - debug('uncaught exception %s', err !== function () { - return this; - }.call(err) ? err : ( err.message || err )); - } else { - debug('uncaught undefined exception'); - err = new Error('Caught undefined error, did you throw without specifying what?'); - } - err.uncaught = true; + Runner.prototype.uncaught = function(err) { + if (err) { + debug( + 'uncaught exception %s', + err !== + function() { + return this; + }.call(err) + ? err + : err.message || err + ); + } else { + debug('uncaught undefined exception'); + err = new Error('Caught undefined error, did you throw without specifying what?'); + } + err.uncaught = true; - var runnable = this.currentRunnable; - if (!runnable) return; + var runnable = this.currentRunnable; + if (!runnable) return; - var wasAlreadyDone = runnable.state; - this.fail(runnable, err); + var wasAlreadyDone = runnable.state; + this.fail(runnable, err); - runnable.clearTimeout(); + runnable.clearTimeout(); - if (wasAlreadyDone) return; + if (wasAlreadyDone) return; - // recover from test - if ('test' == runnable.type) { - this.emit('test end', runnable); - this.hookUp('afterEach', this.next); - return; - } + // recover from test + if ('test' == runnable.type) { + this.emit('test end', runnable); + this.hookUp('afterEach', this.next); + return; + } - // bail on hooks - this.emit('end'); -}; + // bail on hooks + this.emit('end'); + }; -/** + /** * Run the root suite and invoke `fn(failures)` * on completion. * @@ -5046,48 +5107,48 @@ Runner.prototype.uncaught = function(err){ * @api public */ -Runner.prototype.run = function(fn){ - var self = this - , fn = fn || function(){}; + Runner.prototype.run = function(fn) { + var self = this, + fn = fn || function() {}; - function uncaught(err){ - self.uncaught(err); - } + function uncaught(err) { + self.uncaught(err); + } - debug('start'); + debug('start'); - // callback - this.on('end', function(){ - debug('end'); - process.removeListener('uncaughtException', uncaught); - fn(self.failures); - }); + // callback + this.on('end', function() { + debug('end'); + process.removeListener('uncaughtException', uncaught); + fn(self.failures); + }); - // run suites - this.emit('start'); - this.runSuite(this.suite, function(){ - debug('finished running'); - self.emit('end'); - }); + // run suites + this.emit('start'); + this.runSuite(this.suite, function() { + debug('finished running'); + self.emit('end'); + }); - // uncaught exception - process.on('uncaughtException', uncaught); + // uncaught exception + process.on('uncaughtException', uncaught); - return this; -}; + return this; + }; -/** + /** * Cleanly abort execution * * @return {Runner} for chaining * @api public */ -Runner.prototype.abort = function(){ - debug('aborting'); - this._abort = true; -}; + Runner.prototype.abort = function() { + debug('aborting'); + this._abort = true; + }; -/** + /** * Filter leaks with the given globals flagged as `ok`. * * @param {Array} ok @@ -5096,77 +5157,73 @@ Runner.prototype.abort = function(){ * @api private */ -function filterLeaks(ok, globals) { - return filter(globals, function(key){ - // Firefox and Chrome exposes iframes as index inside the window object - if (/^d+/.test(key)) return false; + function filterLeaks(ok, globals) { + return filter(globals, function(key) { + // Firefox and Chrome exposes iframes as index inside the window object + if (/^d+/.test(key)) return false; - // in firefox - // if runner runs in an iframe, this iframe's window.getInterface method not init at first - // it is assigned in some seconds - if (global.navigator && /^getInterface/.test(key)) return false; + // in firefox + // if runner runs in an iframe, this iframe's window.getInterface method not init at first + // it is assigned in some seconds + if (global.navigator && /^getInterface/.test(key)) return false; - // an iframe could be approached by window[iframeIndex] - // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && /^\d+/.test(key)) return false; + // an iframe could be approached by window[iframeIndex] + // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak + if (global.navigator && /^\d+/.test(key)) return false; - // Opera and IE expose global variables for HTML element IDs (issue #243) - if (/^mocha-/.test(key)) return false; + // Opera and IE expose global variables for HTML element IDs (issue #243) + if (/^mocha-/.test(key)) return false; - var matched = filter(ok, function(ok){ - if (~ok.indexOf('*')) return 0 == key.indexOf(ok.split('*')[0]); - return key == ok; - }); - return matched.length == 0 && (!global.navigator || 'onerror' !== key); - }); -} + var matched = filter(ok, function(ok) { + if (~ok.indexOf('*')) return 0 == key.indexOf(ok.split('*')[0]); + return key == ok; + }); + return matched.length == 0 && (!global.navigator || 'onerror' !== key); + }); + } -/** + /** * Array of globals dependent on the environment. * * @return {Array} * @api private */ - function extraGlobals() { - if (typeof(process) === 'object' && - typeof(process.version) === 'string') { + function extraGlobals() { + if (typeof process === 'object' && typeof process.version === 'string') { + var nodeVersion = process.version.split('.').reduce(function(a, v) { + return (a << 8) | v; + }); - var nodeVersion = process.version.split('.').reduce(function(a, v) { - return a << 8 | v; - }); + // 'errno' was renamed to process._errno in v0.9.11. - // 'errno' was renamed to process._errno in v0.9.11. - - if (nodeVersion < 0x00090B) { - return ['errno']; - } - } - - return []; - } - -}); // module: runner.js + if (nodeVersion < 0x00090b) { + return ['errno']; + } + } -require.register("suite.js", function(module, exports, require){ + return []; + } + }); // module: runner.js -/** + require.register('suite.js', function(module, exports, require) { + /** * Module dependencies. */ -var EventEmitter = require('browser/events').EventEmitter - , debug = require('browser/debug')('mocha:suite') - , milliseconds = require('./ms') - , utils = require('./utils') - , Hook = require('./hook'); + var EventEmitter = require('browser/events').EventEmitter, + debug = require('browser/debug')('mocha:suite'), + milliseconds = require('./ms'), + utils = require('./utils'), + Hook = require('./hook'); -/** + /** * Expose `Suite`. */ -exports = module.exports = Suite; + exports = module.exports = Suite; -/** + /** * Create a new `Suite` with the given `title` * and parent `Suite`. When a suite with the * same title is already present, that suite @@ -5179,16 +5236,16 @@ exports = module.exports = Suite; * @api public */ -exports.create = function(parent, title){ - var suite = new Suite(title, parent.ctx); - suite.parent = parent; - if (parent.pending) suite.pending = true; - title = suite.fullTitle(); - parent.addSuite(suite); - return suite; -}; + exports.create = function(parent, title) { + var suite = new Suite(title, parent.ctx); + suite.parent = parent; + if (parent.pending) suite.pending = true; + title = suite.fullTitle(); + parent.addSuite(suite); + return suite; + }; -/** + /** * Initialize a new `Suite` with the given * `title` and `ctx`. * @@ -5197,54 +5254,53 @@ exports.create = function(parent, title){ * @api private */ -function Suite(title, parentContext) { - this.title = title; - var context = function() {}; - context.prototype = parentContext; - this.ctx = new context(); - this.suites = []; - this.tests = []; - this.pending = false; - this._beforeEach = []; - this._beforeAll = []; - this._afterEach = []; - this._afterAll = []; - this.root = !title; - this._timeout = 2000; - this._enableTimeouts = true; - this._slow = 75; - this._bail = false; -} - -/** + function Suite(title, parentContext) { + this.title = title; + var context = function() {}; + context.prototype = parentContext; + this.ctx = new context(); + this.suites = []; + this.tests = []; + this.pending = false; + this._beforeEach = []; + this._beforeAll = []; + this._afterEach = []; + this._afterAll = []; + this.root = !title; + this._timeout = 2000; + this._enableTimeouts = true; + this._slow = 75; + this._bail = false; + } + + /** * Inherit from `EventEmitter.prototype`. */ -function F(){}; -F.prototype = EventEmitter.prototype; -Suite.prototype = new F; -Suite.prototype.constructor = Suite; - + function F() {} + F.prototype = EventEmitter.prototype; + Suite.prototype = new F(); + Suite.prototype.constructor = Suite; -/** + /** * Return a clone of this `Suite`. * * @return {Suite} * @api private */ -Suite.prototype.clone = function(){ - var suite = new Suite(this.title); - debug('clone'); - suite.ctx = this.ctx; - suite.timeout(this.timeout()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - return suite; -}; + Suite.prototype.clone = function() { + var suite = new Suite(this.title); + debug('clone'); + suite.ctx = this.ctx; + suite.timeout(this.timeout()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + return suite; + }; -/** + /** * Set timeout `ms` or short-hand such as "2s". * * @param {Number|String} ms @@ -5252,16 +5308,16 @@ Suite.prototype.clone = function(){ * @api private */ -Suite.prototype.timeout = function(ms){ - if (0 == arguments.length) return this._timeout; - if (ms === 0) this._enableTimeouts = false; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._timeout = parseInt(ms, 10); - return this; -}; + Suite.prototype.timeout = function(ms) { + if (0 == arguments.length) return this._timeout; + if (ms === 0) this._enableTimeouts = false; + if ('string' == typeof ms) ms = milliseconds(ms); + debug('timeout %d', ms); + this._timeout = parseInt(ms, 10); + return this; + }; -/** + /** * Set timeout `enabled`. * * @param {Boolean} enabled @@ -5269,14 +5325,14 @@ Suite.prototype.timeout = function(ms){ * @api private */ -Suite.prototype.enableTimeouts = function(enabled){ - if (arguments.length === 0) return this._enableTimeouts; - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; + Suite.prototype.enableTimeouts = function(enabled) { + if (arguments.length === 0) return this._enableTimeouts; + debug('enableTimeouts %s', enabled); + this._enableTimeouts = enabled; + return this; + }; -/** + /** * Set slow `ms` or short-hand such as "2s". * * @param {Number|String} ms @@ -5284,15 +5340,15 @@ Suite.prototype.enableTimeouts = function(enabled){ * @api private */ -Suite.prototype.slow = function(ms){ - if (0 === arguments.length) return this._slow; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('slow %d', ms); - this._slow = ms; - return this; -}; + Suite.prototype.slow = function(ms) { + if (0 === arguments.length) return this._slow; + if ('string' == typeof ms) ms = milliseconds(ms); + debug('slow %d', ms); + this._slow = ms; + return this; + }; -/** + /** * Sets whether to bail after first error. * * @parma {Boolean} bail @@ -5300,14 +5356,14 @@ Suite.prototype.slow = function(ms){ * @api private */ -Suite.prototype.bail = function(bail){ - if (0 == arguments.length) return this._bail; - debug('bail %s', bail); - this._bail = bail; - return this; -}; + Suite.prototype.bail = function(bail) { + if (0 == arguments.length) return this._bail; + debug('bail %s', bail); + this._bail = bail; + return this; + }; -/** + /** * Run `fn(test[, done])` before running tests. * * @param {Function} fn @@ -5315,26 +5371,26 @@ Suite.prototype.bail = function(bail){ * @api private */ -Suite.prototype.beforeAll = function(title, fn){ - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"before all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeAll.push(hook); - this.emit('beforeAll', hook); - return this; -}; - -/** + Suite.prototype.beforeAll = function(title, fn) { + if (this.pending) return this; + if ('function' === typeof title) { + fn = title; + title = fn.name; + } + title = '"before all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeAll.push(hook); + this.emit('beforeAll', hook); + return this; + }; + + /** * Run `fn(test[, done])` after running tests. * * @param {Function} fn @@ -5342,26 +5398,26 @@ Suite.prototype.beforeAll = function(title, fn){ * @api private */ -Suite.prototype.afterAll = function(title, fn){ - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"after all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterAll.push(hook); - this.emit('afterAll', hook); - return this; -}; - -/** + Suite.prototype.afterAll = function(title, fn) { + if (this.pending) return this; + if ('function' === typeof title) { + fn = title; + title = fn.name; + } + title = '"after all" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterAll.push(hook); + this.emit('afterAll', hook); + return this; + }; + + /** * Run `fn(test[, done])` before each test case. * * @param {Function} fn @@ -5369,26 +5425,26 @@ Suite.prototype.afterAll = function(title, fn){ * @api private */ -Suite.prototype.beforeEach = function(title, fn){ - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"before each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeEach.push(hook); - this.emit('beforeEach', hook); - return this; -}; - -/** + Suite.prototype.beforeEach = function(title, fn) { + if (this.pending) return this; + if ('function' === typeof title) { + fn = title; + title = fn.name; + } + title = '"before each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._beforeEach.push(hook); + this.emit('beforeEach', hook); + return this; + }; + + /** * Run `fn(test[, done])` after each test case. * * @param {Function} fn @@ -5396,26 +5452,26 @@ Suite.prototype.beforeEach = function(title, fn){ * @api private */ -Suite.prototype.afterEach = function(title, fn){ - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"after each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterEach.push(hook); - this.emit('afterEach', hook); - return this; -}; - -/** + Suite.prototype.afterEach = function(title, fn) { + if (this.pending) return this; + if ('function' === typeof title) { + fn = title; + title = fn.name; + } + title = '"after each" hook' + (title ? ': ' + title : ''); + + var hook = new Hook(title, fn); + hook.parent = this; + hook.timeout(this.timeout()); + hook.enableTimeouts(this.enableTimeouts()); + hook.slow(this.slow()); + hook.ctx = this.ctx; + this._afterEach.push(hook); + this.emit('afterEach', hook); + return this; + }; + + /** * Add a test `suite`. * * @param {Suite} suite @@ -5423,18 +5479,18 @@ Suite.prototype.afterEach = function(title, fn){ * @api private */ -Suite.prototype.addSuite = function(suite){ - suite.parent = this; - suite.timeout(this.timeout()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - this.suites.push(suite); - this.emit('suite', suite); - return this; -}; + Suite.prototype.addSuite = function(suite) { + suite.parent = this; + suite.timeout(this.timeout()); + suite.enableTimeouts(this.enableTimeouts()); + suite.slow(this.slow()); + suite.bail(this.bail()); + this.suites.push(suite); + this.emit('suite', suite); + return this; + }; -/** + /** * Add a `test` to this suite. * * @param {Test} test @@ -5442,18 +5498,18 @@ Suite.prototype.addSuite = function(suite){ * @api private */ -Suite.prototype.addTest = function(test){ - test.parent = this; - test.timeout(this.timeout()); - test.enableTimeouts(this.enableTimeouts()); - test.slow(this.slow()); - test.ctx = this.ctx; - this.tests.push(test); - this.emit('test', test); - return this; -}; + Suite.prototype.addTest = function(test) { + test.parent = this; + test.timeout(this.timeout()); + test.enableTimeouts(this.enableTimeouts()); + test.slow(this.slow()); + test.ctx = this.ctx; + this.tests.push(test); + this.emit('test', test); + return this; + }; -/** + /** * Return the full title generated by recursively * concatenating the parent's full title. * @@ -5461,28 +5517,34 @@ Suite.prototype.addTest = function(test){ * @api public */ -Suite.prototype.fullTitle = function(){ - if (this.parent) { - var full = this.parent.fullTitle(); - if (full) return full + ' ' + this.title; - } - return this.title; -}; + Suite.prototype.fullTitle = function() { + if (this.parent) { + var full = this.parent.fullTitle(); + if (full) return full + ' ' + this.title; + } + return this.title; + }; -/** + /** * Return the total number of tests. * * @return {Number} * @api public */ -Suite.prototype.total = function(){ - return utils.reduce(this.suites, function(sum, suite){ - return sum + suite.total(); - }, 0) + this.tests.length; -}; + Suite.prototype.total = function() { + return ( + utils.reduce( + this.suites, + function(sum, suite) { + return sum + suite.total(); + }, + 0 + ) + this.tests.length + ); + }; -/** + /** * Iterates through each suite recursively to find * all tests. Applies a function in the format * `fn(test)`. @@ -5492,31 +5554,29 @@ Suite.prototype.total = function(){ * @api private */ -Suite.prototype.eachTest = function(fn){ - utils.forEach(this.tests, fn); - utils.forEach(this.suites, function(suite){ - suite.eachTest(fn); - }); - return this; -}; - -}); // module: suite.js + Suite.prototype.eachTest = function(fn) { + utils.forEach(this.tests, fn); + utils.forEach(this.suites, function(suite) { + suite.eachTest(fn); + }); + return this; + }; + }); // module: suite.js -require.register("test.js", function(module, exports, require){ - -/** + require.register('test.js', function(module, exports, require) { + /** * Module dependencies. */ -var Runnable = require('./runnable'); + var Runnable = require('./runnable'); -/** + /** * Expose `Test`. */ -module.exports = Test; + module.exports = Test; -/** + /** * Initialize a new `Test` with the given `title` and callback `fn`. * * @param {String} title @@ -5524,44 +5584,42 @@ module.exports = Test; * @api private */ -function Test(title, fn) { - Runnable.call(this, title, fn); - this.pending = !fn; - this.type = 'test'; -} + function Test(title, fn) { + Runnable.call(this, title, fn); + this.pending = !fn; + this.type = 'test'; + } -/** + /** * Inherit from `Runnable.prototype`. */ -function F(){}; -F.prototype = Runnable.prototype; -Test.prototype = new F; -Test.prototype.constructor = Test; + function F() {} + F.prototype = Runnable.prototype; + Test.prototype = new F(); + Test.prototype.constructor = Test; + }); // module: test.js - -}); // module: test.js - -require.register("utils.js", function(module, exports, require){ -/** + require.register('utils.js', function(module, exports, require) { + /** * Module dependencies. */ -var fs = require('browser/fs') - , path = require('browser/path') - , basename = path.basename - , exists = fs.existsSync || path.existsSync - , glob = require('browser/glob') - , join = path.join - , debug = require('browser/debug')('mocha:watch'); + var fs = require('browser/fs'), + path = require('browser/path'), + basename = path.basename, + exists = fs.existsSync || path.existsSync, + glob = require('browser/glob'), + join = path.join, + debug = require('browser/debug')('mocha:watch'); -/** + /** * Ignored directories. */ -var ignore = ['node_modules', '.git']; + var ignore = ['node_modules', '.git']; -/** + /** * Escape special characters in the given string of html. * * @param {String} html @@ -5569,15 +5627,15 @@ var ignore = ['node_modules', '.git']; * @api private */ -exports.escape = function(html){ - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -}; + exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); + }; -/** + /** * Array#forEach (<=IE8) * * @param {Array} array @@ -5586,12 +5644,11 @@ exports.escape = function(html){ * @api private */ -exports.forEach = function(arr, fn, scope){ - for (var i = 0, l = arr.length; i < l; i++) - fn.call(scope, arr[i], i); -}; + exports.forEach = function(arr, fn, scope) { + for (var i = 0, l = arr.length; i < l; i++) fn.call(scope, arr[i], i); + }; -/** + /** * Array#map (<=IE8) * * @param {Array} array @@ -5600,14 +5657,13 @@ exports.forEach = function(arr, fn, scope){ * @api private */ -exports.map = function(arr, fn, scope){ - var result = []; - for (var i = 0, l = arr.length; i < l; i++) - result.push(fn.call(scope, arr[i], i)); - return result; -}; + exports.map = function(arr, fn, scope) { + var result = []; + for (var i = 0, l = arr.length; i < l; i++) result.push(fn.call(scope, arr[i], i)); + return result; + }; -/** + /** * Array#indexOf (<=IE8) * * @parma {Array} arr @@ -5616,15 +5672,14 @@ exports.map = function(arr, fn, scope){ * @api private */ -exports.indexOf = function(arr, obj, start){ - for (var i = start || 0, l = arr.length; i < l; i++) { - if (arr[i] === obj) - return i; - } - return -1; -}; + exports.indexOf = function(arr, obj, start) { + for (var i = start || 0, l = arr.length; i < l; i++) { + if (arr[i] === obj) return i; + } + return -1; + }; -/** + /** * Array#reduce (<=IE8) * * @param {Array} array @@ -5633,17 +5688,17 @@ exports.indexOf = function(arr, obj, start){ * @api private */ -exports.reduce = function(arr, fn, val){ - var rval = val; + exports.reduce = function(arr, fn, val) { + var rval = val; - for (var i = 0, l = arr.length; i < l; i++) { - rval = fn(rval, arr[i], i, arr); - } + for (var i = 0, l = arr.length; i < l; i++) { + rval = fn(rval, arr[i], i, arr); + } - return rval; -}; + return rval; + }; -/** + /** * Array#filter (<=IE8) * * @param {Array} array @@ -5651,18 +5706,18 @@ exports.reduce = function(arr, fn, val){ * @api private */ -exports.filter = function(arr, fn){ - var ret = []; + exports.filter = function(arr, fn) { + var ret = []; - for (var i = 0, l = arr.length; i < l; i++) { - var val = arr[i]; - if (fn(val, i, arr)) ret.push(val); - } + for (var i = 0, l = arr.length; i < l; i++) { + var val = arr[i]; + if (fn(val, i, arr)) ret.push(val); + } - return ret; -}; + return ret; + }; -/** + /** * Object.keys (<=IE8) * * @param {Object} obj @@ -5670,20 +5725,22 @@ exports.filter = function(arr, fn){ * @api private */ -exports.keys = Object.keys || function(obj) { - var keys = [] - , has = Object.prototype.hasOwnProperty // for `window` on <=IE8 + exports.keys = + Object.keys || + function(obj) { + var keys = [], + has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 - for (var key in obj) { - if (has.call(obj, key)) { - keys.push(key); - } - } + for (var key in obj) { + if (has.call(obj, key)) { + keys.push(key); + } + } - return keys; -}; + return keys; + }; -/** + /** * Watch the given `files` for changes * and invoke `fn(file)` on modification. * @@ -5692,52 +5749,50 @@ exports.keys = Object.keys || function(obj) { * @api private */ -exports.watch = function(files, fn){ - var options = { interval: 100 }; - files.forEach(function(file){ - debug('file %s', file); - fs.watchFile(file, options, function(curr, prev){ - if (prev.mtime < curr.mtime) fn(file); - }); - }); -}; + exports.watch = function(files, fn) { + var options = {interval: 100}; + files.forEach(function(file) { + debug('file %s', file); + fs.watchFile(file, options, function(curr, prev) { + if (prev.mtime < curr.mtime) fn(file); + }); + }); + }; -/** + /** * Ignored files. */ -function ignored(path){ - return !~ignore.indexOf(path); -} + function ignored(path) { + return !~ignore.indexOf(path); + } -/** + /** * Lookup files in the given `dir`. * * @return {Array} * @api private */ -exports.files = function(dir, ext, ret){ - ret = ret || []; - ext = ext || ['js']; + exports.files = function(dir, ext, ret) { + ret = ret || []; + ext = ext || ['js']; - var re = new RegExp('\\.(' + ext.join('|') + ')$'); + var re = new RegExp('\\.(' + ext.join('|') + ')$'); - fs.readdirSync(dir) - .filter(ignored) - .forEach(function(path){ - path = join(dir, path); - if (fs.statSync(path).isDirectory()) { - exports.files(path, ext, ret); - } else if (path.match(re)) { - ret.push(path); - } - }); + fs.readdirSync(dir).filter(ignored).forEach(function(path) { + path = join(dir, path); + if (fs.statSync(path).isDirectory()) { + exports.files(path, ext, ret); + } else if (path.match(re)) { + ret.push(path); + } + }); - return ret; -}; + return ret; + }; -/** + /** * Compute a slug from the given `str`. * * @param {String} str @@ -5745,34 +5800,35 @@ exports.files = function(dir, ext, ret){ * @api private */ -exports.slug = function(str){ - return str - .toLowerCase() - .replace(/ +/g, '-') - .replace(/[^-\w]/g, ''); -}; + exports.slug = function(str) { + return str.toLowerCase().replace(/ +/g, '-').replace(/[^-\w]/g, ''); + }; -/** + /** * Strip the function definition from `str`, * and re-indent for pre whitespace. */ -exports.clean = function(str) { - str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/^\uFEFF/, '') - .replace(/^function *\(.*\) *{|\(.*\) *=> *{?/, '') - .replace(/\s+\}$/, ''); + exports.clean = function(str) { + str = str + .replace(/\r\n?|[\n\u2028\u2029]/g, '\n') + .replace(/^\uFEFF/, '') + .replace(/^function *\(.*\) *{|\(.*\) *=> *{?/, '') + .replace(/\s+\}$/, ''); - var spaces = str.match(/^\n?( *)/)[1].length - , tabs = str.match(/^\n?(\t*)/)[1].length - , re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); + var spaces = str.match(/^\n?( *)/)[1].length, + tabs = str.match(/^\n?(\t*)/)[1].length, + re = new RegExp( + '^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', + 'gm' + ); - str = str.replace(re, ''); + str = str.replace(re, ''); - return exports.trim(str); -}; + return exports.trim(str); + }; -/** + /** * Trim the given `str`. * * @param {String} str @@ -5780,11 +5836,11 @@ exports.clean = function(str) { * @api private */ -exports.trim = function(str){ - return str.replace(/^\s+|\s+$/g, ''); -}; + exports.trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); + }; -/** + /** * Parse the given `qs`. * * @param {String} qs @@ -5792,18 +5848,22 @@ exports.trim = function(str){ * @api private */ -exports.parseQuery = function(qs){ - return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair){ - var i = pair.indexOf('=') - , key = pair.slice(0, i) - , val = pair.slice(++i); + exports.parseQuery = function(qs) { + return exports.reduce( + qs.replace('?', '').split('&'), + function(obj, pair) { + var i = pair.indexOf('='), + key = pair.slice(0, i), + val = pair.slice(++i); - obj[key] = decodeURIComponent(val); - return obj; - }, {}); -}; + obj[key] = decodeURIComponent(val); + return obj; + }, + {} + ); + }; -/** + /** * Highlight the given string of `js`. * * @param {String} js @@ -5811,34 +5871,39 @@ exports.parseQuery = function(qs){ * @api private */ -function highlight(js) { - return js - .replace(//g, '>') - .replace(/\/\/(.*)/gm, '//$1') - .replace(/('.*?')/gm, '$1') - .replace(/(\d+\.\d+)/gm, '$1') - .replace(/(\d+)/gm, '$1') - .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') - .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1') -} + function highlight(js) { + return js + .replace(//g, '>') + .replace(/\/\/(.*)/gm, '//$1') + .replace(/('.*?')/gm, '$1') + .replace(/(\d+\.\d+)/gm, '$1') + .replace(/(\d+)/gm, '$1') + .replace( + /\bnew[ \t]+(\w+)/gm, + 'new $1' + ) + .replace( + /\b(function|new|throw|return|var|if|else)\b/gm, + '$1' + ); + } -/** + /** * Highlight the contents of tag `name`. * * @param {String} name * @api private */ -exports.highlightTags = function(name) { - var code = document.getElementById('mocha').getElementsByTagName(name); - for (var i = 0, len = code.length; i < len; ++i) { - code[i].innerHTML = highlight(code[i].innerHTML); - } -}; - + exports.highlightTags = function(name) { + var code = document.getElementById('mocha').getElementsByTagName(name); + for (var i = 0, len = code.length; i < len; ++i) { + code[i].innerHTML = highlight(code[i].innerHTML); + } + }; -/** + /** * Stringify `obj`. * * @param {Object} obj @@ -5846,12 +5911,12 @@ exports.highlightTags = function(name) { * @api private */ -exports.stringify = function(obj) { - if (obj instanceof RegExp) return obj.toString(); - return JSON.stringify(exports.canonicalize(obj), null, 2).replace(/,(\n|$)/g, '$1'); -}; + exports.stringify = function(obj) { + if (obj instanceof RegExp) return obj.toString(); + return JSON.stringify(exports.canonicalize(obj), null, 2).replace(/,(\n|$)/g, '$1'); + }; -/** + /** * Return a new object that has the keys in sorted order. * @param {Object} obj * @param {Array} [stack] @@ -5859,94 +5924,94 @@ exports.stringify = function(obj) { * @api private */ -exports.canonicalize = function(obj, stack) { - stack = stack || []; + exports.canonicalize = function(obj, stack) { + stack = stack || []; - if (exports.indexOf(stack, obj) !== -1) return '[Circular]'; + if (exports.indexOf(stack, obj) !== -1) return '[Circular]'; - var canonicalizedObj; + var canonicalizedObj; - if ({}.toString.call(obj) === '[object Array]') { - stack.push(obj); - canonicalizedObj = exports.map(obj, function (item) { - return exports.canonicalize(item, stack); - }); - stack.pop(); - } else if (typeof obj === 'object' && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - exports.forEach(exports.keys(obj).sort(), function (key) { - canonicalizedObj[key] = exports.canonicalize(obj[key], stack); - }); - stack.pop(); - } else { - canonicalizedObj = obj; - } + if ({}.toString.call(obj) === '[object Array]') { + stack.push(obj); + canonicalizedObj = exports.map(obj, function(item) { + return exports.canonicalize(item, stack); + }); + stack.pop(); + } else if (typeof obj === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + exports.forEach(exports.keys(obj).sort(), function(key) { + canonicalizedObj[key] = exports.canonicalize(obj[key], stack); + }); + stack.pop(); + } else { + canonicalizedObj = obj; + } - return canonicalizedObj; - }; + return canonicalizedObj; + }; -/** + /** * Lookup file names at the given `path`. */ -exports.lookupFiles = function lookupFiles(path, extensions, recursive) { - var files = []; - var re = new RegExp('\\.(' + extensions.join('|') + ')$'); - - if (!exists(path)) { - if (exists(path + '.js')) { - path += '.js'; - } else { - files = glob.sync(path); - if (!files.length) throw new Error("cannot resolve path (or pattern) '" + path + "'"); - return files; - } - } - - try { - var stat = fs.statSync(path); - if (stat.isFile()) return path; - } - catch (ignored) { - return; - } - - fs.readdirSync(path).forEach(function(file){ - file = join(path, file); - try { - var stat = fs.statSync(file); - if (stat.isDirectory()) { - if (recursive) { - files = files.concat(lookupFiles(file, extensions, recursive)); - } - return; - } - } - catch (ignored) { - return; - } - if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') return; - files.push(file); - }); + exports.lookupFiles = function lookupFiles(path, extensions, recursive) { + var files = []; + var re = new RegExp('\\.(' + extensions.join('|') + ')$'); + + if (!exists(path)) { + if (exists(path + '.js')) { + path += '.js'; + } else { + files = glob.sync(path); + if (!files.length) + throw new Error("cannot resolve path (or pattern) '" + path + "'"); + return files; + } + } - return files; -}; + try { + var stat = fs.statSync(path); + if (stat.isFile()) return path; + } catch (ignored) { + return; + } -}); // module: utils.js -// The global object is "self" in Web Workers. -var global = (function() { return this; })(); + fs.readdirSync(path).forEach(function(file) { + file = join(path, file); + try { + var stat = fs.statSync(file); + if (stat.isDirectory()) { + if (recursive) { + files = files.concat(lookupFiles(file, extensions, recursive)); + } + return; + } + } catch (ignored) { + return; + } + if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') return; + files.push(file); + }); + + return files; + }; + }); // module: utils.js + // The global object is "self" in Web Workers. + var global = (function() { + return this; + })(); -/** + /** * Save timer references to avoid Sinon interfering (see GH-237). */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; + var Date = global.Date; + var setTimeout = global.setTimeout; + var setInterval = global.setInterval; + var clearTimeout = global.clearTimeout; + var clearInterval = global.clearInterval; -/** + /** * Node shims. * * These are meant only to allow @@ -5955,141 +6020,143 @@ var clearInterval = global.clearInterval; * the browser. */ -var process = {}; -process.exit = function(status){}; -process.stdout = {}; + var process = {}; + process.exit = function(status) {}; + process.stdout = {}; -var uncaughtExceptionHandlers = []; + var uncaughtExceptionHandlers = []; -var originalOnerrorHandler = global.onerror; + var originalOnerrorHandler = global.onerror; -/** + /** * Remove uncaughtException listener. * Revert to original onerror handler if previously defined. */ -process.removeListener = function(e, fn){ - if ('uncaughtException' == e) { - if (originalOnerrorHandler) { - global.onerror = originalOnerrorHandler; - } else { - global.onerror = function() {}; - } - var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); - if (i != -1) { uncaughtExceptionHandlers.splice(i, 1); } - } -}; + process.removeListener = function(e, fn) { + if ('uncaughtException' == e) { + if (originalOnerrorHandler) { + global.onerror = originalOnerrorHandler; + } else { + global.onerror = function() {}; + } + var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); + if (i != -1) { + uncaughtExceptionHandlers.splice(i, 1); + } + } + }; -/** + /** * Implements uncaughtException listener. */ -process.on = function(e, fn){ - if ('uncaughtException' == e) { - global.onerror = function(err, url, line){ - fn(new Error(err + ' (' + url + ':' + line + ')')); - return true; + process.on = function(e, fn) { + if ('uncaughtException' == e) { + global.onerror = function(err, url, line) { + fn(new Error(err + ' (' + url + ':' + line + ')')); + return true; + }; + uncaughtExceptionHandlers.push(fn); + } }; - uncaughtExceptionHandlers.push(fn); - } -}; -/** + /** * Expose mocha. */ -var Mocha = global.Mocha = require('mocha'), - mocha = global.mocha = new Mocha({ reporter: 'html' }); + var Mocha = (global.Mocha = require('mocha')), + mocha = (global.mocha = new Mocha({reporter: 'html'})); -// The BDD UI is registered by default, but no UI will be functional in the -// browser without an explicit call to the overridden `mocha.ui` (see below). -// Ensure that this default UI does not expose its methods to the global scope. -mocha.suite.removeAllListeners('pre-require'); + // The BDD UI is registered by default, but no UI will be functional in the + // browser without an explicit call to the overridden `mocha.ui` (see below). + // Ensure that this default UI does not expose its methods to the global scope. + mocha.suite.removeAllListeners('pre-require'); -var immediateQueue = [] - , immediateTimeout; + var immediateQueue = [], + immediateTimeout; -function timeslice() { - var immediateStart = new Date().getTime(); - while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) { - immediateQueue.shift()(); - } - if (immediateQueue.length) { - immediateTimeout = setTimeout(timeslice, 0); - } else { - immediateTimeout = null; - } -} + function timeslice() { + var immediateStart = new Date().getTime(); + while (immediateQueue.length && new Date().getTime() - immediateStart < 100) { + immediateQueue.shift()(); + } + if (immediateQueue.length) { + immediateTimeout = setTimeout(timeslice, 0); + } else { + immediateTimeout = null; + } + } -/** + /** * High-performance override of Runner.immediately. */ -Mocha.Runner.immediately = function(callback) { - immediateQueue.push(callback); - if (!immediateTimeout) { - immediateTimeout = setTimeout(timeslice, 0); - } -}; + Mocha.Runner.immediately = function(callback) { + immediateQueue.push(callback); + if (!immediateTimeout) { + immediateTimeout = setTimeout(timeslice, 0); + } + }; -/** + /** * Function to allow assertion libraries to throw errors directly into mocha. * This is useful when running tests in a browser because window.onerror will * only receive the 'message' attribute of the Error. */ -mocha.throwError = function(err) { - Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) { - fn(err); - }); - throw err; -}; + mocha.throwError = function(err) { + Mocha.utils.forEach(uncaughtExceptionHandlers, function(fn) { + fn(err); + }); + throw err; + }; -/** + /** * Override ui to ensure that the ui functions are initialized. * Normally this would happen in Mocha.prototype.loadFiles. */ -mocha.ui = function(ui){ - Mocha.prototype.ui.call(this, ui); - this.suite.emit('pre-require', global, null, this); - return this; -}; + mocha.ui = function(ui) { + Mocha.prototype.ui.call(this, ui); + this.suite.emit('pre-require', global, null, this); + return this; + }; -/** + /** * Setup mocha with the given setting options. */ -mocha.setup = function(opts){ - if ('string' == typeof opts) opts = { ui: opts }; - for (var opt in opts) this[opt](opts[opt]); - return this; -}; + mocha.setup = function(opts) { + if ('string' == typeof opts) opts = {ui: opts}; + for (var opt in opts) this[opt](opts[opt]); + return this; + }; -/** + /** * Run mocha, returning the Runner. */ -mocha.run = function(fn){ - var options = mocha.options; - mocha.globals('location'); + mocha.run = function(fn) { + var options = mocha.options; + mocha.globals('location'); - var query = Mocha.utils.parseQuery(global.location.search || ''); - if (query.grep) mocha.grep(query.grep); - if (query.invert) mocha.invert(); + var query = Mocha.utils.parseQuery(global.location.search || ''); + if (query.grep) mocha.grep(query.grep); + if (query.invert) mocha.invert(); - return Mocha.prototype.run.call(mocha, function(err){ - // The DOM Document is not available in Web Workers. - var document = global.document; - if (document && document.getElementById('mocha') && options.noHighlighting !== true) { - Mocha.utils.highlightTags('code'); - } - if (fn) fn(err); - }); -}; + return Mocha.prototype.run.call(mocha, function(err) { + // The DOM Document is not available in Web Workers. + var document = global.document; + if (document && document.getElementById('mocha') && options.noHighlighting !== true) { + Mocha.utils.highlightTags('code'); + } + if (fn) fn(err); + }); + }; -/** + /** * Expose the process shim. */ -Mocha.process = process; + Mocha.process = process; })(); diff --git a/tests/mocha/selenium.js b/tests/mocha/selenium.js index 79e152f68..bf73e6007 100644 --- a/tests/mocha/selenium.js +++ b/tests/mocha/selenium.js @@ -1,73 +1,99 @@ var wd = require('wd'); -var http = require("http"); -var https = require("https"); -var url = require("url"); -var path = require("path"); +var http = require('http'); +var https = require('https'); +var url = require('url'); +var path = require('path'); var Promise = require('bluebird'); var _ = require('lodash'); -var humanizeDuration = require("humanize-duration"); +var humanizeDuration = require('humanize-duration'); var utils = require('../utils'); var colors = utils.colors; var port = 8080; function runTestWithRetries(browser, test, retries) { retries = retries || 0; - return runTest(browser, test) - .timeout(30000) - .catch(Promise.TimeoutError, function() { - if (retries < 3) { - console.log(colors.violet, "Retry", (retries + 1), test); - return runTestWithRetries(browser, test, retries + 1); - } else { - throw new Error("Couldn't run test after 3 retries"); - } - }); + return runTest(browser, test).timeout(30000).catch(Promise.TimeoutError, function() { + if (retries < 3) { + console.log(colors.violet, 'Retry', retries + 1, test); + return runTestWithRetries(browser, test, retries + 1); + } else { + throw new Error("Couldn't run test after 3 retries"); + } + }); } function getResults(browser) { return function() { return Promise.props({ - dataUrl: browser.waitForElementByCss("body[data-complete='true']", 90000).then(function() { - return browser.elementsByCssSelector('.test.fail'); - }).then(function(nodes) { - return Array.isArray(nodes) ? Promise.map(nodes, function(node) { - return browser.text(node).then(function(error) { - return Promise.reject(error); - }); - }) : Promise.resolve([]); - }) + dataUrl: browser + .waitForElementByCss("body[data-complete='true']", 90000) + .then(function() { + return browser.elementsByCssSelector('.test.fail'); + }) + .then(function(nodes) { + return Array.isArray(nodes) + ? Promise.map(nodes, function(node) { + return browser.text(node).then(function(error) { + return Promise.reject(error); + }); + }) + : Promise.resolve([]); + }) }); }; } function runTest(browser, test) { - return Promise.resolve(browser - .then(utils.loadTestPage(browser, test, port)) - .then(getResults(browser)) + return Promise.resolve( + browser.then(utils.loadTestPage(browser, test, port)).then(getResults(browser)) ).cancellable(); } exports.tests = function(browsers, singleTest) { - var path = "tests/mocha"; - return (singleTest ? Promise.resolve([singleTest]) : utils.getTests(path)).then(function(tests) { - return Promise.map(browsers, function(settings) { - var name = [settings.browserName, settings.version, settings.platform].join("-"); - var count = 0; - var browser = utils.initBrowser(settings); - return Promise.using(browser, function() { - return Promise.map(tests, function(test, index, total) { - console.log(colors.green, "STARTING", "(" + (++count) + "/" + total + ")", name, test, colors.clear); - var start = Date.now(); - return runTestWithRetries(browser, test).then(function() { - console.log(colors.green, "COMPLETE", humanizeDuration(Date.now() - start), "(" + count + "/" + total + ")", name, colors.clear); - }); - }, {concurrency: 1}) - .settle() - .catch(function(error) { - console.error(colors.red, "ERROR", name, error); - throw error; - }); - }); - }, {concurrency: 3}); + var path = 'tests/mocha'; + return (singleTest ? Promise.resolve([singleTest]) : utils.getTests(path)).then(function( + tests + ) { + return Promise.map( + browsers, + function(settings) { + var name = [settings.browserName, settings.version, settings.platform].join('-'); + var count = 0; + var browser = utils.initBrowser(settings); + return Promise.using(browser, function() { + return Promise.map( + tests, + function(test, index, total) { + console.log( + colors.green, + 'STARTING', + '(' + ++count + '/' + total + ')', + name, + test, + colors.clear + ); + var start = Date.now(); + return runTestWithRetries(browser, test).then(function() { + console.log( + colors.green, + 'COMPLETE', + humanizeDuration(Date.now() - start), + '(' + count + '/' + total + ')', + name, + colors.clear + ); + }); + }, + {concurrency: 1} + ) + .settle() + .catch(function(error) { + console.error(colors.red, 'ERROR', name, error); + throw error; + }); + }); + }, + {concurrency: 3} + ); }); }; diff --git a/tests/node/color.js b/tests/node/color.js index 25e1bac92..609b55c22 100644 --- a/tests/node/color.js +++ b/tests/node/color.js @@ -1,110 +1,110 @@ var Color = require('../../src/color'); var assert = require('assert'); -describe("Colors", function() { - describe("named colors", function() { - it("bisque", function () { - var c = new Color("bisque"); +describe('Colors', function() { + describe('named colors', function() { + it('bisque', function() { + var c = new Color('bisque'); assertColor(c, 255, 228, 196, null); assert.equal(c.isTransparent(), false); }); - it("BLUE", function () { - var c = new Color("BLUE"); + it('BLUE', function() { + var c = new Color('BLUE'); assertColor(c, 0, 0, 255, null); assert.equal(c.isTransparent(), false); }); }); - describe("rgb()", function() { - it("rgb(1,3,5)", function () { - var c = new Color("rgb(1,3,5)"); + describe('rgb()', function() { + it('rgb(1,3,5)', function() { + var c = new Color('rgb(1,3,5)'); assertColor(c, 1, 3, 5, null); assert.equal(c.isTransparent(), false); }); - it("rgb(222, 111, 50)", function () { - var c = new Color("rgb(222, 111, 50)"); + it('rgb(222, 111, 50)', function() { + var c = new Color('rgb(222, 111, 50)'); assertColor(c, 222, 111, 50, null); assert.equal(c.isTransparent(), false); }); - it("rgb( 222, 111 , 50)", function () { - var c = new Color("rgb(222 , 111 , 50)"); + it('rgb( 222, 111 , 50)', function() { + var c = new Color('rgb(222 , 111 , 50)'); assertColor(c, 222, 111, 50, null); assert.equal(c.isTransparent(), false); }); }); - describe("rgba()", function() { - it("rgba(200,3,5,1)", function () { - var c = new Color("rgba(200,3,5,1)"); + describe('rgba()', function() { + it('rgba(200,3,5,1)', function() { + var c = new Color('rgba(200,3,5,1)'); assertColor(c, 200, 3, 5, 1); assert.equal(c.isTransparent(), false); }); - it("rgba(222, 111, 50, 0.22)", function () { - var c = new Color("rgba(222, 111, 50, 0.22)"); + it('rgba(222, 111, 50, 0.22)', function() { + var c = new Color('rgba(222, 111, 50, 0.22)'); assertColor(c, 222, 111, 50, 0.22); assert.equal(c.isTransparent(), false); }); - it("rgba( 222, 111 , 50, 0.123 )", function () { - var c = new Color("rgba(222 , 111 , 50, 0.123)"); + it('rgba( 222, 111 , 50, 0.123 )', function() { + var c = new Color('rgba(222 , 111 , 50, 0.123)'); assertColor(c, 222, 111, 50, 0.123); assert.equal(c.isTransparent(), false); }); }); - describe("hex", function() { - it("#7FFFD4", function () { - var c = new Color("#7FFFD4"); + describe('hex', function() { + it('#7FFFD4', function() { + var c = new Color('#7FFFD4'); assertColor(c, 127, 255, 212, null); assert.equal(c.isTransparent(), false); }); - it("#f0ffff", function () { - var c = new Color("#f0ffff"); + it('#f0ffff', function() { + var c = new Color('#f0ffff'); assertColor(c, 240, 255, 255, null); assert.equal(c.isTransparent(), false); }); - it("#fff", function () { - var c = new Color("#fff"); + it('#fff', function() { + var c = new Color('#fff'); assertColor(c, 255, 255, 255, null); assert.equal(c.isTransparent(), false); }); }); - describe("from array", function() { - it("[1,2,3]", function () { - var c = new Color([1,2,3]); + describe('from array', function() { + it('[1,2,3]', function() { + var c = new Color([1, 2, 3]); assertColor(c, 1, 2, 3, null); assert.equal(c.isTransparent(), false); }); - it("[5,6,7,1]", function () { - var c = new Color([5,6,7, 1]); + it('[5,6,7,1]', function() { + var c = new Color([5, 6, 7, 1]); assertColor(c, 5, 6, 7, 1); assert.equal(c.isTransparent(), false); }); - it("[5,6,7,0]", function () { - var c = new Color([5,6,7, 0]); + it('[5,6,7,0]', function() { + var c = new Color([5, 6, 7, 0]); assertColor(c, 5, 6, 7, 0); assert.equal(c.isTransparent(), true); }); }); - describe("transparency", function() { - it("transparent", function () { - var c = new Color("transparent"); + describe('transparency', function() { + it('transparent', function() { + var c = new Color('transparent'); assertColor(c, 0, 0, 0, 0); assert.equal(c.isTransparent(), true); }); - it("rgba(255,255,255,0)", function () { - var c = new Color("rgba(255,255,255,0)"); + it('rgba(255,255,255,0)', function() { + var c = new Color('rgba(255,255,255,0)'); assertColor(c, 255, 255, 255, 0); assert.equal(c.isTransparent(), true); }); diff --git a/tests/node/package.js b/tests/node/package.js index 3e714425d..e0e7b4e3c 100644 --- a/tests/node/package.js +++ b/tests/node/package.js @@ -2,22 +2,22 @@ var assert = require('assert'); var path = require('path'); var html2canvas = require('../../'); -describe("Package", function() { - it("should have html2canvas defined", function() { - assert.equal(typeof(html2canvas), "function"); +describe('Package', function() { + it('should have html2canvas defined', function() { + assert.equal(typeof html2canvas, 'function'); }); }); -describe.only("requirejs", function() { +describe.only('requirejs', function() { var requirejs = require('requirejs'); requirejs.config({ baseUrl: path.resolve(__dirname, '../../dist') }); - it("should have html2canvas defined", function(done) { + it('should have html2canvas defined', function(done) { requirejs(['html2canvas'], function(h2c) { - assert.equal(typeof(h2c), "function"); + assert.equal(typeof h2c, 'function'); done(); }); }); diff --git a/tests/cases/acid2.html b/tests/reftests/acid2.html similarity index 100% rename from tests/cases/acid2.html rename to tests/reftests/acid2.html diff --git a/tests/reftests/acid2.txt b/tests/reftests/acid2.txt new file mode 100644 index 000000000..6eea93bf0 --- /dev/null +++ b/tests/reftests/acid2.txt @@ -0,0 +1,145 @@ +Window: [800, 1496] +Rectangle: [0, 0, 800, 1496] rgb(255,255,255) +Opacity: 1 +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142)) + Fill: rgb(255,0,0) + Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElF") [108, 130] Size (1, 1) Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142)) + Shape: rgb(0,0,0) Path (Vector(x: 96, y: 130) > Vector(x: 216, y: 130) > Vector(x: 204, y: 130) > Vector(x: 108, y: 130)) + Shape: rgb(0,0,0) Path (Vector(x: 216, y: 130) > Vector(x: 216, y: 142) > Vector(x: 204, y: 142) > Vector(x: 204, y: 130)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 96, y: 238) > Vector(x: 216, y: 238) > Vector(x: 216, y: 250) > Vector(x: 96, y: 250)) + Fill: rgb(255,255,0) + Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9") [108, 238] Size (64, 64) Path (Vector(x: 108, y: 238) > Vector(x: 172, y: 238) > Vector(x: 172, y: 302) > Vector(x: 108, y: 302)) + Shape: rgb(0,0,0) Path (Vector(x: 96, y: 238) > Vector(x: 216, y: 238) > Vector(x: 204, y: 238) > Vector(x: 108, y: 238)) + Shape: rgb(0,0,0) Path (Vector(x: 216, y: 238) > Vector(x: 216, y: 250) > Vector(x: 204, y: 250) > Vector(x: 204, y: 238)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 108, y: 250) > Vector(x: 204, y: 250) > Vector(x: 204, y: 262) > Vector(x: 108, y: 262)) + Fill: rgb(255,255,0) + Shape: rgb(0,0,0) Path (Vector(x: 108, y: 250) > Vector(x: 204, y: 250) > Vector(x: 180, y: 250) > Vector(x: 132, y: 250)) + Shape: rgb(0,0,0) Path (Vector(x: 204, y: 250) > Vector(x: 204, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 250)) + Shape: rgb(0,0,0) Path (Vector(x: 204, y: 262) > Vector(x: 108, y: 262) > Vector(x: 132, y: 262) > Vector(x: 180, y: 262)) + Shape: rgb(0,0,0) Path (Vector(x: 108, y: 262) > Vector(x: 108, y: 250) > Vector(x: 132, y: 250) > Vector(x: 132, y: 262)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 132, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 274) > Vector(x: 132, y: 274)) + Fill: rgb(255,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 132, y: 262) > Vector(x: 144, y: 262) > Vector(x: 144, y: 274) > Vector(x: 132, y: 274)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 144, y: 262) > Vector(x: 156, y: 262) > Vector(x: 156, y: 274) > Vector(x: 144, y: 274)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 156, y: 262) > Vector(x: 168, y: 262) > Vector(x: 168, y: 274) > Vector(x: 156, y: 274)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 168, y: 262) > Vector(x: 180, y: 262) > Vector(x: 180, y: 274) > Vector(x: 168, y: 274)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Shape: rgb(0,0,0) Path (Vector(x: 72, y: 166) > Vector(x: 240, y: 166) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166)) + Shape: rgb(0,0,0) Path (Vector(x: 240, y: 166) > Vector(x: 240, y: 214) > Vector(x: 228, y: 202) > Vector(x: 228, y: 166)) + Shape: rgb(0,0,0) Path (Vector(x: 240, y: 214) > Vector(x: 72, y: 214) > Vector(x: 84, y: 202) > Vector(x: 228, y: 202)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 84, y: 166) > Vector(x: 228, y: 166) > Vector(x: 228, y: 214) > Vector(x: 84, y: 214)) + Fill: rgb(255,255,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 144, y: 178) > Vector(x: 168, y: 178) > Vector(x: 168, y: 202) > Vector(x: 144, y: 202)) + Fill: rgb(255,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Shape: rgb(255,255,0) Path (Vector(x: 144, y: 178) > Vector(x: 168, y: 178) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178)) + Shape: rgb(0,0,0) Path (Vector(x: 168, y: 178) > Vector(x: 168, y: 190) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178)) + Shape: rgb(255,255,0) Path (Vector(x: 168, y: 190) > Vector(x: 144, y: 190) > Vector(x: 156, y: 178) > Vector(x: 156, y: 178)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Shape: rgb(0,0,0) Path (Vector(x: 144, y: 190) > Vector(x: 168, y: 190) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202)) + Shape: rgb(255,255,0) Path (Vector(x: 168, y: 190) > Vector(x: 168, y: 202) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202)) + Shape: rgb(255,255,0) Path (Vector(x: 168, y: 202) > Vector(x: 144, y: 202) > Vector(x: 156, y: 202) > Vector(x: 156, y: 202)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) | Path (Vector(x: 48, y: 274) > Vector(x: 788, y: 274) > Vector(x: 788, y: 284) > Vector(x: 48, y: 284)) + Clip: Path (Vector(x: 48, y: 429) > Vector(x: 112, y: 429) > Vector(x: 112, y: 493) > Vector(x: 48, y: 493)) + Draw image: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9") (source: [0, 0, 64, 64]) (destination: [0, 0, 64, 64]) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 132, y: 108) > Vector(x: 180, y: 108) > Vector(x: 180, y: 126) > Vector(x: 132, y: 126)) + Fill: rgb(0,0,0) + Shape: rgb(255,255,0) Path (Vector(x: 132, y: 108) > Vector(x: 180, y: 108) > Vector(x: 180, y: 108) > Vector(x: 132, y: 108)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 132, y: 144) > Vector(x: 180, y: 144) > Vector(x: 180, y: 157) > Vector(x: 132, y: 157)) + Fill: rgb(0,0,0) + Shape: rgb(255,0,0) Path (Vector(x: 132, y: 144) > Vector(x: 180, y: 144) > Vector(x: 180, y: 144) > Vector(x: 132, y: 144)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Shape: rgb(0,0,0) Path (Vector(x: 108, y: 118) > Vector(x: 204, y: 118) > Vector(x: 180, y: 118) > Vector(x: 132, y: 118)) + Shape: rgb(0,0,0) Path (Vector(x: 204, y: 118) > Vector(x: 204, y: 130) > Vector(x: 180, y: 130) > Vector(x: 180, y: 118)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 132, y: 118) > Vector(x: 180, y: 118) > Vector(x: 180, y: 130) > Vector(x: 132, y: 130)) + Fill: rgb(255,255,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166)) + Fill: rgb(255,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166)) + Fill: rgb(255,0,0) + Shape: rgb(255,255,0) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 142) > Vector(x: 108, y: 142)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166)) + Repeat: Image ("/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2F") [96, 142] Size (2, 2) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 84, y: 166)) + Shape: rgb(255,0,0) Path (Vector(x: 84, y: 142) > Vector(x: 228, y: 142) > Vector(x: 216, y: 142) > Vector(x: 96, y: 142)) + Shape: rgb(0,0,0) Path (Vector(x: 228, y: 142) > Vector(x: 228, y: 166) > Vector(x: 216, y: 166) > Vector(x: 216, y: 142)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 84, y: 214) > Vector(x: 228, y: 214) > Vector(x: 228, y: 238) > Vector(x: 84, y: 238)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 96, y: 214) > Vector(x: 216, y: 214) > Vector(x: 216, y: 238) > Vector(x: 96, y: 238)) + Fill: rgb(0,0,0) + Shape: rgb(255,255,0) Path (Vector(x: 96, y: 214) > Vector(x: 216, y: 214) > Vector(x: 204, y: 226) > Vector(x: 108, y: 226)) + Shape: rgb(255,255,0) Path (Vector(x: 216, y: 214) > Vector(x: 216, y: 238) > Vector(x: 204, y: 226) > Vector(x: 204, y: 226)) + Shape: rgb(255,255,0) Path (Vector(x: 216, y: 238) > Vector(x: 96, y: 238) > Vector(x: 108, y: 226) > Vector(x: 204, y: 226)) + Shape: rgb(255,255,0) Path (Vector(x: 96, y: 238) > Vector(x: 96, y: 214) > Vector(x: 108, y: 226) > Vector(x: 108, y: 226)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Clip: Path (Vector(x: 108, y: 214) > Vector(x: 204, y: 214) > Vector(x: 204, y: 226) > Vector(x: 108, y: 226)) + Fill: rgb(0,0,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) + Shape: rgb(255,255,0) Path (Vector(x: 120, y: 214) > Vector(x: 192, y: 214) > Vector(x: 192, y: 226) > Vector(x: 120, y: 226)) + Shape: rgb(0,0,0) Path (Vector(x: 192, y: 214) > Vector(x: 192, y: 238) > Vector(x: 192, y: 226) > Vector(x: 192, y: 226)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 1496) > Vector(x: 0, y: 1496)) \ No newline at end of file diff --git a/tests/cases/background/clip.html b/tests/reftests/background/clip.html similarity index 100% rename from tests/cases/background/clip.html rename to tests/reftests/background/clip.html diff --git a/tests/reftests/background/clip.txt b/tests/reftests/background/clip.txt new file mode 100644 index 000000000..140c84f90 --- /dev/null +++ b/tests/reftests/background/clip.txt @@ -0,0 +1,29 @@ +Window: [800, 1568] +Rectangle: [0, 0, 800, 1568] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 1048) > Vector(x: 8, y: 1048)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 278, y: 18) > Vector(x: 278, y: 258) > Vector(x: 18, y: 258)) + Repeat: Image ("/tests/assets/image.jpg") [58, 28] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 278, y: 18) > Vector(x: 278, y: 258) > Vector(x: 18, y: 258)) +Clip: Path (Vector(x: 338, y: 28) > Vector(x: 538, y: 28) > Vector(x: 538, y: 228) > Vector(x: 338, y: 228)) + Repeat: Image ("/tests/assets/image.jpg") [338, 28] Size (75, 75) Path (Vector(x: 298, y: 18) > Vector(x: 558, y: 18) > Vector(x: 558, y: 258) > Vector(x: 298, y: 258)) +Clip: Path (Vector(x: 58, y: 288) > Vector(x: 258, y: 288) > Vector(x: 258, y: 488) > Vector(x: 58, y: 488)) + Repeat: Image ("/tests/assets/image.jpg") [58, 288] Size (75, 75) Path (Vector(x: 18, y: 278) > Vector(x: 278, y: 278) > Vector(x: 278, y: 518) > Vector(x: 18, y: 518)) +Clip: Path (Vector(x: 298, y: 278) > Vector(x: 558, y: 278) > Vector(x: 558, y: 518) > Vector(x: 298, y: 518)) + Repeat: Image ("/tests/assets/image.jpg") [338, 288] Size (75, 75) Path (Vector(x: 298, y: 278) > Vector(x: 558, y: 278) > Vector(x: 558, y: 518) > Vector(x: 298, y: 518)) +Clip: Path (Vector(x: 18, y: 538) > Vector(x: 278, y: 538) > Vector(x: 278, y: 778) > Vector(x: 18, y: 778)) + Repeat: Image ("/tests/assets/image.jpg") [58, 548] Size (75, 75) Path (Vector(x: 58, y: 548) > Vector(x: 133, y: 548) > Vector(x: 133, y: 623) > Vector(x: 58, y: 623)) +Clip: Path (Vector(x: 338, y: 548) > Vector(x: 538, y: 548) > Vector(x: 538, y: 748) > Vector(x: 338, y: 748)) + Repeat: Image ("/tests/assets/image.jpg") [338, 548] Size (75, 75) Path (Vector(x: 338, y: 538) > Vector(x: 413, y: 538) > Vector(x: 413, y: 778) > Vector(x: 338, y: 778)) +Clip: Path (Vector(x: 58, y: 808) > Vector(x: 258, y: 808) > Vector(x: 258, y: 1008) > Vector(x: 58, y: 1008)) + Repeat: Image ("/tests/assets/image.jpg") [58, 808] Size (75, 75) Path (Vector(x: 18, y: 808) > Vector(x: 278, y: 808) > Vector(x: 278, y: 883) > Vector(x: 18, y: 883)) +Clip: Path (Vector(x: 298, y: 798) > Vector(x: 558, y: 798) > Vector(x: 558, y: 1038) > Vector(x: 298, y: 1038)) + Repeat: Image ("/tests/assets/image.jpg") [338, 808] Size (75, 75) Path (Vector(x: 338, y: 808) > Vector(x: 413, y: 808) > Vector(x: 413, y: 883) > Vector(x: 338, y: 883)) +Clip: Path (Vector(x: 18, y: 1058) > Vector(x: 278, y: 1058) > Vector(x: 278, y: 1298) > Vector(x: 18, y: 1298)) + Fill: rgb(0,128,0) +Clip: Path (Vector(x: 338, y: 1068) > Vector(x: 538, y: 1068) > Vector(x: 538, y: 1268) > Vector(x: 338, y: 1268)) + Fill: rgb(0,128,0) +Clip: Path (Vector(x: 58, y: 1328) > Vector(x: 258, y: 1328) > Vector(x: 258, y: 1528) > Vector(x: 58, y: 1528)) + Fill: rgb(0,128,0) +Clip: Path (Vector(x: 298, y: 1318) > Vector(x: 558, y: 1318) > Vector(x: 558, y: 1558) > Vector(x: 298, y: 1558)) + Fill: rgb(0,128,0) \ No newline at end of file diff --git a/tests/cases/background/encoded.html b/tests/reftests/background/encoded.html similarity index 100% rename from tests/cases/background/encoded.html rename to tests/reftests/background/encoded.html diff --git a/tests/reftests/background/encoded.txt b/tests/reftests/background/encoded.txt new file mode 100644 index 000000000..800ca4915 --- /dev/null +++ b/tests/reftests/background/encoded.txt @@ -0,0 +1,11 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) + Repeat: Image ("/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4") [19, 19] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) \ No newline at end of file diff --git a/tests/cases/background/linear-gradient.html b/tests/reftests/background/linear-gradient.html similarity index 100% rename from tests/cases/background/linear-gradient.html rename to tests/reftests/background/linear-gradient.html diff --git a/tests/reftests/background/linear-gradient.txt b/tests/reftests/background/linear-gradient.txt new file mode 100644 index 000000000..846ccf7ab --- /dev/null +++ b/tests/reftests/background/linear-gradient.txt @@ -0,0 +1,132 @@ +Window: [820, 1828] +Rectangle: [0, 0, 820, 1828] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 18, y: 220)) + Gradient: [18, 18, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(255,0,0) 0, rgb(0,0,255) 0.33, rgb(186,218,85) 0.67, rgba(0,0,255,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 229, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 229, y: 219) > Vector(x: 229, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 229, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) +Clip: Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 250, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 461, y: 19) > Vector(x: 251, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 461, y: 219) > Vector(x: 461, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 250, y: 220) > Vector(x: 251, y: 219) > Vector(x: 461, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 220) > Vector(x: 250, y: 18) > Vector(x: 251, y: 19) > Vector(x: 251, y: 219)) +Clip: Path (Vector(x: 482, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 220) > Vector(x: 482, y: 220)) + Gradient: [482, 18, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(255,0,0) 0, rgb(255,255,0) 0.5, rgb(0,255,0) 1) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 18) > Vector(x: 694, y: 18) > Vector(x: 693, y: 19) > Vector(x: 483, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 220) > Vector(x: 693, y: 219) > Vector(x: 693, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 220) > Vector(x: 482, y: 220) > Vector(x: 483, y: 219) > Vector(x: 693, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 220) > Vector(x: 482, y: 18) > Vector(x: 483, y: 19) > Vector(x: 483, y: 219)) +Clip: Path (Vector(x: 18, y: 240) > Vector(x: 230, y: 240) > Vector(x: 230, y: 442) > Vector(x: 18, y: 442)) + Gradient: [18, 240, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(206,219,233) 0, rgb(170,197,222) 0.17, rgb(97,153,199) 0.5, rgb(58,132,195) 0.51, rgb(65,154,214) 0.59, rgb(75,184,240) 0.71, rgb(58,139,194) 0.84, rgb(38,85,139) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 230, y: 240) > Vector(x: 229, y: 241) > Vector(x: 19, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 240) > Vector(x: 230, y: 442) > Vector(x: 229, y: 441) > Vector(x: 229, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 229, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441)) +Clip: Path (Vector(x: 250, y: 240) > Vector(x: 462, y: 240) > Vector(x: 462, y: 442) > Vector(x: 250, y: 442)) + Gradient: [250, 240, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(240,183,161) 0, rgb(140,51,16) 0.5, rgb(117,34,1) 0.51, rgb(191,110,78) 1) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 240) > Vector(x: 462, y: 240) > Vector(x: 461, y: 241) > Vector(x: 251, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 240) > Vector(x: 462, y: 442) > Vector(x: 461, y: 441) > Vector(x: 461, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 442) > Vector(x: 250, y: 442) > Vector(x: 251, y: 441) > Vector(x: 461, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 442) > Vector(x: 250, y: 240) > Vector(x: 251, y: 241) > Vector(x: 251, y: 441)) +Clip: Path (Vector(x: 482, y: 240) > Vector(x: 694, y: 240) > Vector(x: 694, y: 442) > Vector(x: 482, y: 442)) + Gradient: [482, 240, 212, 202] linear-gradient(x0: 212, x1: 0, y0: 101, y1: 101 rgb(206,219,233) 0, rgb(170,197,222) 0.17, rgb(97,153,199) 0.5, rgb(58,132,195) 0.51, rgb(65,154,214) 0.76, rgb(38,85,139) 1) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 240) > Vector(x: 694, y: 240) > Vector(x: 693, y: 241) > Vector(x: 483, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 240) > Vector(x: 694, y: 442) > Vector(x: 693, y: 441) > Vector(x: 693, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 442) > Vector(x: 482, y: 442) > Vector(x: 483, y: 441) > Vector(x: 693, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 442) > Vector(x: 482, y: 240) > Vector(x: 483, y: 241) > Vector(x: 483, y: 441)) +Clip: Path (Vector(x: 18, y: 462) > Vector(x: 230, y: 462) > Vector(x: 230, y: 664) > Vector(x: 18, y: 664)) + Gradient: [18, 462, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(204,229,244) 0, rgb(0,38,60) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 230, y: 462) > Vector(x: 229, y: 463) > Vector(x: 19, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 462) > Vector(x: 230, y: 664) > Vector(x: 229, y: 663) > Vector(x: 229, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 664) > Vector(x: 18, y: 664) > Vector(x: 19, y: 663) > Vector(x: 229, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 664) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 663)) +Clip: Path (Vector(x: 250, y: 462) > Vector(x: 462, y: 462) > Vector(x: 462, y: 664) > Vector(x: 250, y: 664)) + Gradient: [250, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(255,255,255) 0, rgb(0,38,60) 1) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 462) > Vector(x: 462, y: 462) > Vector(x: 461, y: 463) > Vector(x: 251, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 462) > Vector(x: 462, y: 664) > Vector(x: 461, y: 663) > Vector(x: 461, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 664) > Vector(x: 250, y: 664) > Vector(x: 251, y: 663) > Vector(x: 461, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 664) > Vector(x: 250, y: 462) > Vector(x: 251, y: 463) > Vector(x: 251, y: 663)) +Clip: Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 482, y: 664)) + Gradient: [482, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 693, y: 463) > Vector(x: 483, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 693, y: 663) > Vector(x: 693, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 664) > Vector(x: 482, y: 664) > Vector(x: 483, y: 663) > Vector(x: 693, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 664) > Vector(x: 482, y: 462) > Vector(x: 483, y: 463) > Vector(x: 483, y: 663)) +Clip: Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 18, y: 886)) + Gradient: [18, 684, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 229, y: 685) > Vector(x: 19, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 229, y: 885) > Vector(x: 229, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 886) > Vector(x: 18, y: 886) > Vector(x: 19, y: 885) > Vector(x: 229, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 886) > Vector(x: 18, y: 684) > Vector(x: 19, y: 685) > Vector(x: 19, y: 885)) +Clip: Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 250, y: 886)) + Gradient: [250, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 461, y: 685) > Vector(x: 251, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 461, y: 885) > Vector(x: 461, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 886) > Vector(x: 250, y: 886) > Vector(x: 251, y: 885) > Vector(x: 461, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 886) > Vector(x: 250, y: 684) > Vector(x: 251, y: 685) > Vector(x: 251, y: 885)) +Clip: Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 482, y: 886)) + Gradient: [482, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 693, y: 685) > Vector(x: 483, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 693, y: 885) > Vector(x: 693, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 886) > Vector(x: 482, y: 886) > Vector(x: 483, y: 885) > Vector(x: 693, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 886) > Vector(x: 482, y: 684) > Vector(x: 483, y: 685) > Vector(x: 483, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 906) > Vector(x: 782, y: 906) > Vector(x: 781, y: 907) > Vector(x: 19, y: 907)) +Shape: rgb(0,0,0) Path (Vector(x: 782, y: 906) > Vector(x: 782, y: 1152) > Vector(x: 781, y: 1151) > Vector(x: 781, y: 907)) +Shape: rgb(0,0,0) Path (Vector(x: 782, y: 1152) > Vector(x: 18, y: 1152) > Vector(x: 19, y: 1151) > Vector(x: 781, y: 1151)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1152) > Vector(x: 18, y: 906) > Vector(x: 19, y: 907) > Vector(x: 19, y: 1151)) +Clip: Path (Vector(x: 29, y: 917) > Vector(x: 231, y: 917) > Vector(x: 231, y: 1019) > Vector(x: 29, y: 1019)) + Gradient: [29, 917, 202, 102] linear-gradient(x0: 60, x1: 142, y0: 132, y1: -30 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 29, y: 917) > Vector(x: 231, y: 917) > Vector(x: 230, y: 918) > Vector(x: 30, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 231, y: 917) > Vector(x: 231, y: 1019) > Vector(x: 230, y: 1018) > Vector(x: 230, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1019) > Vector(x: 29, y: 1019) > Vector(x: 30, y: 1018) > Vector(x: 230, y: 1018)) +Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1019) > Vector(x: 29, y: 917) > Vector(x: 30, y: 918) > Vector(x: 30, y: 1018)) +Clip: Path (Vector(x: 251, y: 917) > Vector(x: 453, y: 917) > Vector(x: 453, y: 1019) > Vector(x: 251, y: 1019)) + Gradient: [251, 917, 202, 102] linear-gradient(x0: 60, x1: 142, y0: -30, y1: 132 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 251, y: 917) > Vector(x: 453, y: 917) > Vector(x: 452, y: 918) > Vector(x: 252, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 453, y: 917) > Vector(x: 453, y: 1019) > Vector(x: 452, y: 1018) > Vector(x: 452, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 453, y: 1019) > Vector(x: 251, y: 1019) > Vector(x: 252, y: 1018) > Vector(x: 452, y: 1018)) +Shape: rgb(0,0,0) Path (Vector(x: 251, y: 1019) > Vector(x: 251, y: 917) > Vector(x: 252, y: 918) > Vector(x: 252, y: 1018)) +Clip: Path (Vector(x: 473, y: 917) > Vector(x: 675, y: 917) > Vector(x: 675, y: 1019) > Vector(x: 473, y: 1019)) + Gradient: [473, 917, 202, 102] linear-gradient(x0: 142, x1: 60, y0: 132, y1: -30 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 473, y: 917) > Vector(x: 675, y: 917) > Vector(x: 674, y: 918) > Vector(x: 474, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 675, y: 917) > Vector(x: 675, y: 1019) > Vector(x: 674, y: 1018) > Vector(x: 674, y: 918)) +Shape: rgb(0,0,0) Path (Vector(x: 675, y: 1019) > Vector(x: 473, y: 1019) > Vector(x: 474, y: 1018) > Vector(x: 674, y: 1018)) +Shape: rgb(0,0,0) Path (Vector(x: 473, y: 1019) > Vector(x: 473, y: 917) > Vector(x: 474, y: 918) > Vector(x: 474, y: 1018)) +Clip: Path (Vector(x: 29, y: 1039) > Vector(x: 231, y: 1039) > Vector(x: 231, y: 1141) > Vector(x: 29, y: 1141)) + Gradient: [29, 1039, 202, 102] linear-gradient(x0: 142, x1: 60, y0: -30, y1: 132 rgb(0,0,255) 0, rgb(255,0,0) 0.25, rgb(0,128,0) 0.98, rgba(0,0,0,0.5) 1) +Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1039) > Vector(x: 231, y: 1039) > Vector(x: 230, y: 1040) > Vector(x: 30, y: 1040)) +Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1039) > Vector(x: 231, y: 1141) > Vector(x: 230, y: 1140) > Vector(x: 230, y: 1040)) +Shape: rgb(0,0,0) Path (Vector(x: 231, y: 1141) > Vector(x: 29, y: 1141) > Vector(x: 30, y: 1140) > Vector(x: 230, y: 1140)) +Shape: rgb(0,0,0) Path (Vector(x: 29, y: 1141) > Vector(x: 29, y: 1039) > Vector(x: 30, y: 1040) > Vector(x: 30, y: 1140)) +Clip: Path (Vector(x: 18, y: 1172) > Vector(x: 230, y: 1172) > Vector(x: 230, y: 1374) > Vector(x: 18, y: 1374)) + Gradient: [18, 1172, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(255,255,255) 0, rgb(0,0,0) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1172) > Vector(x: 230, y: 1172) > Vector(x: 229, y: 1173) > Vector(x: 19, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1172) > Vector(x: 230, y: 1374) > Vector(x: 229, y: 1373) > Vector(x: 229, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1374) > Vector(x: 18, y: 1374) > Vector(x: 19, y: 1373) > Vector(x: 229, y: 1373)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1374) > Vector(x: 18, y: 1172) > Vector(x: 19, y: 1173) > Vector(x: 19, y: 1373)) +Clip: Path (Vector(x: 250, y: 1172) > Vector(x: 462, y: 1172) > Vector(x: 462, y: 1374) > Vector(x: 250, y: 1374)) + Gradient: [250, 1172, 212, 202] linear-gradient(x0: 156, x1: 56, y0: -23, y1: 225 rgb(255,255,0) 0, rgb(0,0,255) 0.3, rgb(255,0,0) 0.6, rgb(0,0,255) 1) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 1172) > Vector(x: 462, y: 1172) > Vector(x: 461, y: 1173) > Vector(x: 251, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 1172) > Vector(x: 462, y: 1374) > Vector(x: 461, y: 1373) > Vector(x: 461, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 1374) > Vector(x: 250, y: 1374) > Vector(x: 251, y: 1373) > Vector(x: 461, y: 1373)) +Shape: rgb(0,0,0) Path (Vector(x: 250, y: 1374) > Vector(x: 250, y: 1172) > Vector(x: 251, y: 1173) > Vector(x: 251, y: 1373)) +Clip: Path (Vector(x: 482, y: 1172) > Vector(x: 694, y: 1172) > Vector(x: 694, y: 1374) > Vector(x: 482, y: 1374)) + Gradient: [482, 1172, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(255,255,0) 0, rgb(255,0,0) 0.6, rgb(0,0,255) 1) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 1172) > Vector(x: 694, y: 1172) > Vector(x: 693, y: 1173) > Vector(x: 483, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 1172) > Vector(x: 694, y: 1374) > Vector(x: 693, y: 1373) > Vector(x: 693, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 1374) > Vector(x: 482, y: 1374) > Vector(x: 483, y: 1373) > Vector(x: 693, y: 1373)) +Shape: rgb(0,0,0) Path (Vector(x: 482, y: 1374) > Vector(x: 482, y: 1172) > Vector(x: 483, y: 1173) > Vector(x: 483, y: 1373)) +Clip: Path (Vector(x: 18, y: 1394) > Vector(x: 230, y: 1394) > Vector(x: 230, y: 1596) > Vector(x: 18, y: 1596)) + Gradient: [18, 1394, 212, 202] linear-gradient(x0: 219, x1: -7, y0: 92, y1: 110 rgb(255,255,0) 0, rgb(255,165,0) 0.3, rgb(255,0,0) 0.6, rgb(0,0,255) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1394) > Vector(x: 230, y: 1394) > Vector(x: 229, y: 1395) > Vector(x: 19, y: 1395)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1394) > Vector(x: 230, y: 1596) > Vector(x: 229, y: 1595) > Vector(x: 229, y: 1395)) +Shape: rgb(0,0,0) Path (Vector(x: 230, y: 1596) > Vector(x: 18, y: 1596) > Vector(x: 19, y: 1595) > Vector(x: 229, y: 1595)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1596) > Vector(x: 18, y: 1394) > Vector(x: 19, y: 1395) > Vector(x: 19, y: 1595)) +Clip: Path (Vector(x: 18, y: 1616) > Vector(x: 820, y: 1616) > Vector(x: 820, y: 1818) > Vector(x: 18, y: 1818)) + Gradient: [18, 1616, 802, 202] linear-gradient(x0: 346, x1: 456, y0: -96, y1: 298 rgb(255,255,0) 0, rgb(255,0,0) 0.6, rgb(0,0,255) 1) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1616) > Vector(x: 820, y: 1616) > Vector(x: 819, y: 1617) > Vector(x: 19, y: 1617)) +Shape: rgb(0,0,0) Path (Vector(x: 820, y: 1616) > Vector(x: 820, y: 1818) > Vector(x: 819, y: 1817) > Vector(x: 819, y: 1617)) +Shape: rgb(0,0,0) Path (Vector(x: 820, y: 1818) > Vector(x: 18, y: 1818) > Vector(x: 19, y: 1817) > Vector(x: 819, y: 1817)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1818) > Vector(x: 18, y: 1616) > Vector(x: 19, y: 1617) > Vector(x: 19, y: 1817)) \ No newline at end of file diff --git a/tests/cases/background/multi.html b/tests/reftests/background/multi.html similarity index 100% rename from tests/cases/background/multi.html rename to tests/reftests/background/multi.html diff --git a/tests/reftests/background/multi.txt b/tests/reftests/background/multi.txt new file mode 100644 index 000000000..4a3314590 --- /dev/null +++ b/tests/reftests/background/multi.txt @@ -0,0 +1,26 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) + Repeat: Image ("/tests/assets/image2.jpg") [119, 149] Size (75, 75) Path (Vector(x: 18, y: 148) > Vector(x: 220, y: 148) > Vector(x: 220, y: 223) > Vector(x: 18, y: 223)) + Repeat: Image ("/tests/assets/image.jpg") [69, 69] Size (75, 75) Path (Vector(x: 18, y: 68) > Vector(x: 220, y: 68) > Vector(x: 220, y: 143) > Vector(x: 18, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) +Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220)) + Repeat: Image ("/tests/assets/image2.jpg") [261, -1] Size (75, 75) Path (Vector(x: 240, y: -2) > Vector(x: 442, y: -2) > Vector(x: 442, y: 73) > Vector(x: 240, y: 73)) + Repeat: Image ("/tests/assets/image.jpg") [291, 69] Size (75, 75) Path (Vector(x: 240, y: 68) > Vector(x: 442, y: 68) > Vector(x: 442, y: 143) > Vector(x: 240, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219)) +Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220)) + Repeat: Image ("/tests/assets/image2.jpg") [913, 119] Size (75, 75) Path (Vector(x: 462, y: 118) > Vector(x: 664, y: 118) > Vector(x: 664, y: 193) > Vector(x: 462, y: 193)) + Repeat: Image ("/tests/assets/image.jpg") [513, 69] Size (75, 75) Path (Vector(x: 462, y: 68) > Vector(x: 664, y: 68) > Vector(x: 664, y: 143) > Vector(x: 462, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219)) \ No newline at end of file diff --git a/tests/cases/background/position.html b/tests/reftests/background/position.html similarity index 100% rename from tests/cases/background/position.html rename to tests/reftests/background/position.html diff --git a/tests/reftests/background/position.txt b/tests/reftests/background/position.txt new file mode 100644 index 000000000..2e9a66463 --- /dev/null +++ b/tests/reftests/background/position.txt @@ -0,0 +1,77 @@ +Window: [800, 1018] +Rectangle: [0, 0, 800, 1018] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 574) > Vector(x: 8, y: 574)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [82, 82] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) +Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [304, 82] Size (75, 75) Path (Vector(x: 240, y: 82) > Vector(x: 442, y: 82) > Vector(x: 442, y: 157) > Vector(x: 240, y: 157)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219)) +Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [526, 82] Size (75, 75) Path (Vector(x: 526, y: 18) > Vector(x: 601, y: 18) > Vector(x: 601, y: 220) > Vector(x: 526, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219)) +Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442)) + Repeat: Image ("/tests/assets/image.jpg") [82, 304] Size (75, 75) Path (Vector(x: 82, y: 304) > Vector(x: 157, y: 304) > Vector(x: 157, y: 379) > Vector(x: 82, y: 379)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441)) +Clip: Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [32, 476] Size (75, 75) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 119, y: 463) > Vector(x: 19, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 119, y: 563) > Vector(x: 119, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 120, y: 564) > Vector(x: 18, y: 564) > Vector(x: 19, y: 563) > Vector(x: 119, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 564) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 563)) +Clip: Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 140, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [154, 476] Size (75, 75) Path (Vector(x: 140, y: 476) > Vector(x: 242, y: 476) > Vector(x: 242, y: 551) > Vector(x: 140, y: 551)) +Shape: rgb(0,0,0) Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 241, y: 463) > Vector(x: 141, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 241, y: 563) > Vector(x: 241, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 242, y: 564) > Vector(x: 140, y: 564) > Vector(x: 141, y: 563) > Vector(x: 241, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 140, y: 564) > Vector(x: 140, y: 462) > Vector(x: 141, y: 463) > Vector(x: 141, y: 563)) +Clip: Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 262, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [276, 476] Size (75, 75) Path (Vector(x: 276, y: 462) > Vector(x: 351, y: 462) > Vector(x: 351, y: 564) > Vector(x: 276, y: 564)) +Shape: rgb(0,0,0) Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 363, y: 463) > Vector(x: 263, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 363, y: 563) > Vector(x: 363, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 364, y: 564) > Vector(x: 262, y: 564) > Vector(x: 263, y: 563) > Vector(x: 363, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 262, y: 564) > Vector(x: 262, y: 462) > Vector(x: 263, y: 463) > Vector(x: 263, y: 563)) +Clip: Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 384, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [398, 476] Size (75, 75) Path (Vector(x: 398, y: 476) > Vector(x: 473, y: 476) > Vector(x: 473, y: 551) > Vector(x: 398, y: 551)) +Shape: rgb(0,0,0) Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 485, y: 463) > Vector(x: 385, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 485, y: 563) > Vector(x: 485, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 486, y: 564) > Vector(x: 384, y: 564) > Vector(x: 385, y: 563) > Vector(x: 485, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 384, y: 564) > Vector(x: 384, y: 462) > Vector(x: 385, y: 463) > Vector(x: 385, y: 563)) +Clip: Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 18, y: 786)) + Repeat: Image ("/tests/assets/image.jpg") [0, 610] Size (75, 75) Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 18, y: 786)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 584) > Vector(x: 220, y: 584) > Vector(x: 219, y: 585) > Vector(x: 19, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 584) > Vector(x: 220, y: 786) > Vector(x: 219, y: 785) > Vector(x: 219, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 786) > Vector(x: 18, y: 786) > Vector(x: 19, y: 785) > Vector(x: 219, y: 785)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 786) > Vector(x: 18, y: 584) > Vector(x: 19, y: 585) > Vector(x: 19, y: 785)) +Clip: Path (Vector(x: 240, y: 584) > Vector(x: 442, y: 584) > Vector(x: 442, y: 786) > Vector(x: 240, y: 786)) + Repeat: Image ("/tests/assets/image.jpg") [291, 635] Size (75, 75) Path (Vector(x: 240, y: 635) > Vector(x: 442, y: 635) > Vector(x: 442, y: 710) > Vector(x: 240, y: 710)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 584) > Vector(x: 442, y: 584) > Vector(x: 441, y: 585) > Vector(x: 241, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 584) > Vector(x: 442, y: 786) > Vector(x: 441, y: 785) > Vector(x: 441, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 786) > Vector(x: 240, y: 786) > Vector(x: 241, y: 785) > Vector(x: 441, y: 785)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 786) > Vector(x: 240, y: 584) > Vector(x: 241, y: 585) > Vector(x: 241, y: 785)) +Clip: Path (Vector(x: 462, y: 584) > Vector(x: 664, y: 584) > Vector(x: 664, y: 786) > Vector(x: 462, y: 786)) + Repeat: Image ("/tests/assets/image.jpg") [513, 635] Size (75, 75) Path (Vector(x: 513, y: 584) > Vector(x: 588, y: 584) > Vector(x: 588, y: 786) > Vector(x: 513, y: 786)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 584) > Vector(x: 664, y: 584) > Vector(x: 663, y: 585) > Vector(x: 463, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 584) > Vector(x: 664, y: 786) > Vector(x: 663, y: 785) > Vector(x: 663, y: 585)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 786) > Vector(x: 462, y: 786) > Vector(x: 463, y: 785) > Vector(x: 663, y: 785)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 786) > Vector(x: 462, y: 584) > Vector(x: 463, y: 585) > Vector(x: 463, y: 785)) +Clip: Path (Vector(x: 18, y: 806) > Vector(x: 220, y: 806) > Vector(x: 220, y: 1008) > Vector(x: 18, y: 1008)) + Repeat: Image ("/tests/assets/image.jpg") [69, 857] Size (75, 75) Path (Vector(x: 69, y: 857) > Vector(x: 144, y: 857) > Vector(x: 144, y: 932) > Vector(x: 69, y: 932)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 806) > Vector(x: 220, y: 806) > Vector(x: 219, y: 807) > Vector(x: 19, y: 807)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 806) > Vector(x: 220, y: 1008) > Vector(x: 219, y: 1007) > Vector(x: 219, y: 807)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 1008) > Vector(x: 18, y: 1008) > Vector(x: 19, y: 1007) > Vector(x: 219, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 1008) > Vector(x: 18, y: 806) > Vector(x: 19, y: 807) > Vector(x: 19, y: 1007)) \ No newline at end of file diff --git a/tests/cases/background/radial-gradient.html b/tests/reftests/background/radial-gradient.html similarity index 100% rename from tests/cases/background/radial-gradient.html rename to tests/reftests/background/radial-gradient.html diff --git a/tests/reftests/background/radial-gradient.txt b/tests/reftests/background/radial-gradient.txt new file mode 100644 index 000000000..3fb211ffe --- /dev/null +++ b/tests/reftests/background/radial-gradient.txt @@ -0,0 +1,61 @@ +Window: [800, 896] +Rectangle: [0, 0, 800, 896] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) +Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219)) +Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219)) +Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441)) +Clip: Path (Vector(x: 240, y: 240) > Vector(x: 442, y: 240) > Vector(x: 442, y: 442) > Vector(x: 240, y: 442)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 240) > Vector(x: 442, y: 240) > Vector(x: 441, y: 241) > Vector(x: 241, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 240) > Vector(x: 442, y: 442) > Vector(x: 441, y: 441) > Vector(x: 441, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 442) > Vector(x: 240, y: 442) > Vector(x: 241, y: 441) > Vector(x: 441, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 442) > Vector(x: 240, y: 240) > Vector(x: 241, y: 241) > Vector(x: 241, y: 441)) +Clip: Path (Vector(x: 462, y: 240) > Vector(x: 664, y: 240) > Vector(x: 664, y: 442) > Vector(x: 462, y: 442)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 240) > Vector(x: 664, y: 240) > Vector(x: 663, y: 241) > Vector(x: 463, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 240) > Vector(x: 664, y: 442) > Vector(x: 663, y: 441) > Vector(x: 663, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 442) > Vector(x: 462, y: 442) > Vector(x: 463, y: 441) > Vector(x: 663, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 442) > Vector(x: 462, y: 240) > Vector(x: 463, y: 241) > Vector(x: 463, y: 441)) +Clip: Path (Vector(x: 18, y: 462) > Vector(x: 220, y: 462) > Vector(x: 220, y: 664) > Vector(x: 18, y: 664)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 220, y: 462) > Vector(x: 219, y: 463) > Vector(x: 19, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 462) > Vector(x: 220, y: 664) > Vector(x: 219, y: 663) > Vector(x: 219, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 664) > Vector(x: 18, y: 664) > Vector(x: 19, y: 663) > Vector(x: 219, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 664) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 663)) +Clip: Path (Vector(x: 240, y: 462) > Vector(x: 442, y: 462) > Vector(x: 442, y: 664) > Vector(x: 240, y: 664)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 462) > Vector(x: 442, y: 462) > Vector(x: 441, y: 463) > Vector(x: 241, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 462) > Vector(x: 442, y: 664) > Vector(x: 441, y: 663) > Vector(x: 441, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 664) > Vector(x: 240, y: 664) > Vector(x: 241, y: 663) > Vector(x: 441, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 664) > Vector(x: 240, y: 462) > Vector(x: 241, y: 463) > Vector(x: 241, y: 663)) +Clip: Path (Vector(x: 462, y: 462) > Vector(x: 664, y: 462) > Vector(x: 664, y: 664) > Vector(x: 462, y: 664)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 462) > Vector(x: 664, y: 462) > Vector(x: 663, y: 463) > Vector(x: 463, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 462) > Vector(x: 664, y: 664) > Vector(x: 663, y: 663) > Vector(x: 663, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 664) > Vector(x: 462, y: 664) > Vector(x: 463, y: 663) > Vector(x: 663, y: 663)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 664) > Vector(x: 462, y: 462) > Vector(x: 463, y: 463) > Vector(x: 463, y: 663)) +Clip: Path (Vector(x: 18, y: 684) > Vector(x: 220, y: 684) > Vector(x: 220, y: 886) > Vector(x: 18, y: 886)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 684) > Vector(x: 220, y: 684) > Vector(x: 219, y: 685) > Vector(x: 19, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 684) > Vector(x: 220, y: 886) > Vector(x: 219, y: 885) > Vector(x: 219, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 886) > Vector(x: 18, y: 886) > Vector(x: 19, y: 885) > Vector(x: 219, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 886) > Vector(x: 18, y: 684) > Vector(x: 19, y: 685) > Vector(x: 19, y: 885)) +Clip: Path (Vector(x: 240, y: 684) > Vector(x: 442, y: 684) > Vector(x: 442, y: 886) > Vector(x: 240, y: 886)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 684) > Vector(x: 442, y: 684) > Vector(x: 441, y: 685) > Vector(x: 241, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 684) > Vector(x: 442, y: 886) > Vector(x: 441, y: 885) > Vector(x: 441, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 886) > Vector(x: 240, y: 886) > Vector(x: 241, y: 885) > Vector(x: 441, y: 885)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 886) > Vector(x: 240, y: 684) > Vector(x: 241, y: 685) > Vector(x: 241, y: 885)) \ No newline at end of file diff --git a/tests/cases/background/repeat.html b/tests/reftests/background/repeat.html similarity index 100% rename from tests/cases/background/repeat.html rename to tests/reftests/background/repeat.html diff --git a/tests/reftests/background/repeat.txt b/tests/reftests/background/repeat.txt new file mode 100644 index 000000000..830d390b2 --- /dev/null +++ b/tests/reftests/background/repeat.txt @@ -0,0 +1,53 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(255,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 452) > Vector(x: 8, y: 452)) + Fill: rgb(0,255,0) +Clip: Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [19, 19] Size (75, 75) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 18, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 220, y: 18) > Vector(x: 219, y: 19) > Vector(x: 19, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 18) > Vector(x: 220, y: 220) > Vector(x: 219, y: 219) > Vector(x: 219, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 219, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) +Clip: Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 240, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [241, 19] Size (75, 75) Path (Vector(x: 240, y: 19) > Vector(x: 442, y: 19) > Vector(x: 442, y: 94) > Vector(x: 240, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 18) > Vector(x: 442, y: 18) > Vector(x: 441, y: 19) > Vector(x: 241, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 18) > Vector(x: 442, y: 220) > Vector(x: 441, y: 219) > Vector(x: 441, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 442, y: 220) > Vector(x: 240, y: 220) > Vector(x: 241, y: 219) > Vector(x: 441, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 240, y: 220) > Vector(x: 240, y: 18) > Vector(x: 241, y: 19) > Vector(x: 241, y: 219)) +Clip: Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 462, y: 220)) + Repeat: Image ("/tests/assets/image.jpg") [463, 19] Size (75, 75) Path (Vector(x: 463, y: 18) > Vector(x: 538, y: 18) > Vector(x: 538, y: 220) > Vector(x: 463, y: 220)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 664, y: 18) > Vector(x: 663, y: 19) > Vector(x: 463, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 18) > Vector(x: 664, y: 220) > Vector(x: 663, y: 219) > Vector(x: 663, y: 19)) +Shape: rgb(0,0,0) Path (Vector(x: 664, y: 220) > Vector(x: 462, y: 220) > Vector(x: 463, y: 219) > Vector(x: 663, y: 219)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 462, y: 18) > Vector(x: 463, y: 19) > Vector(x: 463, y: 219)) +Clip: Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 18, y: 442)) + Repeat: Image ("/tests/assets/image.jpg") [19, 241] Size (75, 75) Path (Vector(x: 19, y: 241) > Vector(x: 94, y: 241) > Vector(x: 94, y: 316) > Vector(x: 19, y: 316)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 240) > Vector(x: 220, y: 240) > Vector(x: 219, y: 241) > Vector(x: 19, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 240) > Vector(x: 220, y: 442) > Vector(x: 219, y: 441) > Vector(x: 219, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 220, y: 442) > Vector(x: 18, y: 442) > Vector(x: 19, y: 441) > Vector(x: 219, y: 441)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 442) > Vector(x: 18, y: 240) > Vector(x: 19, y: 241) > Vector(x: 19, y: 441)) +Clip: Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [19, 463] Size (75, 75) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 18, y: 564)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 462) > Vector(x: 120, y: 462) > Vector(x: 119, y: 463) > Vector(x: 19, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 120, y: 462) > Vector(x: 120, y: 564) > Vector(x: 119, y: 563) > Vector(x: 119, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 120, y: 564) > Vector(x: 18, y: 564) > Vector(x: 19, y: 563) > Vector(x: 119, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 18, y: 564) > Vector(x: 18, y: 462) > Vector(x: 19, y: 463) > Vector(x: 19, y: 563)) +Clip: Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 140, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [141, 463] Size (75, 75) Path (Vector(x: 140, y: 463) > Vector(x: 242, y: 463) > Vector(x: 242, y: 538) > Vector(x: 140, y: 538)) +Shape: rgb(0,0,0) Path (Vector(x: 140, y: 462) > Vector(x: 242, y: 462) > Vector(x: 241, y: 463) > Vector(x: 141, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 242, y: 462) > Vector(x: 242, y: 564) > Vector(x: 241, y: 563) > Vector(x: 241, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 242, y: 564) > Vector(x: 140, y: 564) > Vector(x: 141, y: 563) > Vector(x: 241, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 140, y: 564) > Vector(x: 140, y: 462) > Vector(x: 141, y: 463) > Vector(x: 141, y: 563)) +Clip: Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 262, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [263, 463] Size (75, 75) Path (Vector(x: 263, y: 462) > Vector(x: 338, y: 462) > Vector(x: 338, y: 564) > Vector(x: 263, y: 564)) +Shape: rgb(0,0,0) Path (Vector(x: 262, y: 462) > Vector(x: 364, y: 462) > Vector(x: 363, y: 463) > Vector(x: 263, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 364, y: 462) > Vector(x: 364, y: 564) > Vector(x: 363, y: 563) > Vector(x: 363, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 364, y: 564) > Vector(x: 262, y: 564) > Vector(x: 263, y: 563) > Vector(x: 363, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 262, y: 564) > Vector(x: 262, y: 462) > Vector(x: 263, y: 463) > Vector(x: 263, y: 563)) +Clip: Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 384, y: 564)) + Repeat: Image ("/tests/assets/image.jpg") [385, 463] Size (75, 75) Path (Vector(x: 385, y: 463) > Vector(x: 460, y: 463) > Vector(x: 460, y: 538) > Vector(x: 385, y: 538)) +Shape: rgb(0,0,0) Path (Vector(x: 384, y: 462) > Vector(x: 486, y: 462) > Vector(x: 485, y: 463) > Vector(x: 385, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 486, y: 462) > Vector(x: 486, y: 564) > Vector(x: 485, y: 563) > Vector(x: 485, y: 463)) +Shape: rgb(0,0,0) Path (Vector(x: 486, y: 564) > Vector(x: 384, y: 564) > Vector(x: 385, y: 563) > Vector(x: 485, y: 563)) +Shape: rgb(0,0,0) Path (Vector(x: 384, y: 564) > Vector(x: 384, y: 462) > Vector(x: 385, y: 463) > Vector(x: 385, y: 563)) \ No newline at end of file diff --git a/tests/cases/background/size.html b/tests/reftests/background/size.html similarity index 100% rename from tests/cases/background/size.html rename to tests/reftests/background/size.html diff --git a/tests/reftests/background/size.txt b/tests/reftests/background/size.txt new file mode 100644 index 000000000..dbde3234e --- /dev/null +++ b/tests/reftests/background/size.txt @@ -0,0 +1,43 @@ +Window: [800, 1010] +Rectangle: [0, 0, 800, 1010] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 160, y: 8) > Vector(x: 160, y: 210) > Vector(x: 8, y: 210)) + Repeat: Image ("/tests/assets/image.jpg") [67, 92] Size (34, 34) Path (Vector(x: 67, y: 92) > Vector(x: 101, y: 92) > Vector(x: 101, y: 126) > Vector(x: 67, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 160, y: 8) > Vector(x: 159, y: 9) > Vector(x: 9, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 160, y: 8) > Vector(x: 160, y: 210) > Vector(x: 159, y: 209) > Vector(x: 159, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 160, y: 210) > Vector(x: 8, y: 210) > Vector(x: 9, y: 209) > Vector(x: 159, y: 209)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 210) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 209)) +Clip: Path (Vector(x: 160, y: 8) > Vector(x: 312, y: 8) > Vector(x: 312, y: 210) > Vector(x: 160, y: 210)) + Repeat: Image ("/tests/assets/image.jpg") [219, 92] Size (34, 34) Path (Vector(x: 219, y: 8) > Vector(x: 253, y: 8) > Vector(x: 253, y: 210) > Vector(x: 219, y: 210)) +Shape: rgb(0,0,0) Path (Vector(x: 160, y: 8) > Vector(x: 312, y: 8) > Vector(x: 311, y: 9) > Vector(x: 161, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 210) > Vector(x: 311, y: 209) > Vector(x: 311, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 210) > Vector(x: 160, y: 210) > Vector(x: 161, y: 209) > Vector(x: 311, y: 209)) +Shape: rgb(0,0,0) Path (Vector(x: 160, y: 210) > Vector(x: 160, y: 8) > Vector(x: 161, y: 9) > Vector(x: 161, y: 209)) +Clip: Path (Vector(x: 312, y: 8) > Vector(x: 464, y: 8) > Vector(x: 464, y: 210) > Vector(x: 312, y: 210)) + Repeat: Image ("/tests/assets/image.jpg") [371, 92] Size (34, 34) Path (Vector(x: 312, y: 92) > Vector(x: 464, y: 92) > Vector(x: 464, y: 126) > Vector(x: 312, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 464, y: 8) > Vector(x: 463, y: 9) > Vector(x: 313, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 464, y: 8) > Vector(x: 464, y: 210) > Vector(x: 463, y: 209) > Vector(x: 463, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 464, y: 210) > Vector(x: 312, y: 210) > Vector(x: 313, y: 209) > Vector(x: 463, y: 209)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 210) > Vector(x: 312, y: 8) > Vector(x: 313, y: 9) > Vector(x: 313, y: 209)) +Clip: Path (Vector(x: 464, y: 8) > Vector(x: 616, y: 8) > Vector(x: 616, y: 210) > Vector(x: 464, y: 210)) + Repeat: Image ("/tests/assets/image.jpg") [426, -5] Size (228, 228) Path (Vector(x: 426, y: -5) > Vector(x: 654, y: -5) > Vector(x: 654, y: 223) > Vector(x: 426, y: 223)) +Shape: rgb(0,0,0) Path (Vector(x: 464, y: 8) > Vector(x: 616, y: 8) > Vector(x: 615, y: 9) > Vector(x: 465, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 616, y: 8) > Vector(x: 616, y: 210) > Vector(x: 615, y: 209) > Vector(x: 615, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 616, y: 210) > Vector(x: 464, y: 210) > Vector(x: 465, y: 209) > Vector(x: 615, y: 209)) +Shape: rgb(0,0,0) Path (Vector(x: 464, y: 210) > Vector(x: 464, y: 8) > Vector(x: 465, y: 9) > Vector(x: 465, y: 209)) +Clip: Path (Vector(x: 8, y: 210) > Vector(x: 408, y: 210) > Vector(x: 408, y: 310) > Vector(x: 8, y: 310)) + Repeat: Image ("/tests/assets/image.jpg") [8, 60] Size (400, 400) Path (Vector(x: 8, y: 210) > Vector(x: 408, y: 210) > Vector(x: 408, y: 310) > Vector(x: 8, y: 310)) +Clip: Path (Vector(x: 8, y: 310) > Vector(x: 408, y: 310) > Vector(x: 408, y: 410) > Vector(x: 8, y: 410)) + Repeat: Image ("/tests/assets/image.jpg") [158, 310] Size (100, 100) Path (Vector(x: 8, y: 310) > Vector(x: 408, y: 310) > Vector(x: 408, y: 410) > Vector(x: 8, y: 410)) +Clip: Path (Vector(x: 8, y: 410) > Vector(x: 408, y: 410) > Vector(x: 408, y: 510) > Vector(x: 8, y: 510)) + Repeat: Image ("/tests/assets/image.jpg") [158, 410] Size (100, 100) Path (Vector(x: 8, y: 410) > Vector(x: 408, y: 410) > Vector(x: 408, y: 510) > Vector(x: 8, y: 510)) +Clip: Path (Vector(x: 8, y: 510) > Vector(x: 408, y: 510) > Vector(x: 408, y: 610) > Vector(x: 8, y: 610)) + Repeat: Image ("/tests/assets/image.jpg") [171, 523] Size (75, 75) Path (Vector(x: 8, y: 510) > Vector(x: 408, y: 510) > Vector(x: 408, y: 610) > Vector(x: 8, y: 610)) +Clip: Path (Vector(x: 592, y: 210) > Vector(x: 792, y: 210) > Vector(x: 792, y: 410) > Vector(x: 592, y: 410)) + Repeat: Image ("/tests/assets/image.jpg") [592, 210] Size (200, 200) Path (Vector(x: 592, y: 210) > Vector(x: 792, y: 210) > Vector(x: 792, y: 410) > Vector(x: 592, y: 410)) +Clip: Path (Vector(x: 592, y: 410) > Vector(x: 792, y: 410) > Vector(x: 792, y: 610) > Vector(x: 592, y: 610)) + Repeat: Image ("/tests/assets/image.jpg") [592, 410] Size (200, 200) Path (Vector(x: 592, y: 410) > Vector(x: 792, y: 410) > Vector(x: 792, y: 610) > Vector(x: 592, y: 610)) +Clip: Path (Vector(x: 592, y: 610) > Vector(x: 792, y: 610) > Vector(x: 792, y: 810) > Vector(x: 592, y: 810)) + Repeat: Image ("/tests/assets/image.jpg") [592, 610] Size (200, 200) Path (Vector(x: 592, y: 610) > Vector(x: 792, y: 610) > Vector(x: 792, y: 810) > Vector(x: 592, y: 810)) +Clip: Path (Vector(x: 592, y: 810) > Vector(x: 792, y: 810) > Vector(x: 792, y: 1010) > Vector(x: 592, y: 1010)) + Repeat: Image ("/tests/assets/image.jpg") [655, 873] Size (75, 75) Path (Vector(x: 592, y: 810) > Vector(x: 792, y: 810) > Vector(x: 792, y: 1010) > Vector(x: 592, y: 1010)) \ No newline at end of file diff --git a/tests/cases/border/dashed.html b/tests/reftests/border/dashed.html similarity index 100% rename from tests/cases/border/dashed.html rename to tests/reftests/border/dashed.html diff --git a/tests/reftests/border/dashed.txt b/tests/reftests/border/dashed.txt new file mode 100644 index 000000000..bd676d835 --- /dev/null +++ b/tests/reftests/border/dashed.txt @@ -0,0 +1,27 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(58,132,195) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229)) + Fill: rgb(111,66,140) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228)) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228)) +Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228)) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228)) +Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228)) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228)) +Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508)) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508)) \ No newline at end of file diff --git a/tests/cases/border/dotted.html b/tests/reftests/border/dotted.html similarity index 100% rename from tests/cases/border/dotted.html rename to tests/reftests/border/dotted.html diff --git a/tests/reftests/border/dotted.txt b/tests/reftests/border/dotted.txt new file mode 100644 index 000000000..bd676d835 --- /dev/null +++ b/tests/reftests/border/dotted.txt @@ -0,0 +1,27 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(58,132,195) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229)) + Fill: rgb(111,66,140) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228)) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228)) +Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228)) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228)) +Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228)) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228)) +Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508)) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508)) \ No newline at end of file diff --git a/tests/cases/border/double.html b/tests/reftests/border/double.html similarity index 100% rename from tests/cases/border/double.html rename to tests/reftests/border/double.html diff --git a/tests/reftests/border/double.txt b/tests/reftests/border/double.txt new file mode 100644 index 000000000..bd676d835 --- /dev/null +++ b/tests/reftests/border/double.txt @@ -0,0 +1,27 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(58,132,195) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229)) + Fill: rgb(111,66,140) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228)) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228)) +Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228)) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228)) +Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228)) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228)) +Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508)) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508)) \ No newline at end of file diff --git a/tests/cases/border/inset.html b/tests/reftests/border/inset.html similarity index 100% rename from tests/cases/border/inset.html rename to tests/reftests/border/inset.html diff --git a/tests/reftests/border/inset.txt b/tests/reftests/border/inset.txt new file mode 100644 index 000000000..14f3351f3 --- /dev/null +++ b/tests/reftests/border/inset.txt @@ -0,0 +1,39 @@ +Window: [800, 693] +Rectangle: [0, 0, 800, 693] rgb(58,132,195) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229)) + Fill: rgb(111,66,140) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228)) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228)) +Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228)) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228)) +Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228)) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228)) +Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508)) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508)) +Clip: Path (Vector(x: 342, y: 258) > Vector(x: 642, y: 258) > Vector(x: 642, y: 558) > Vector(x: 342, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 342, y: 258) > Vector(x: 642, y: 258) > Vector(x: 592, y: 308) > Vector(x: 392, y: 308)) +Shape: rgb(0,0,0) Path (Vector(x: 642, y: 258) > Vector(x: 642, y: 558) > Vector(x: 592, y: 508) > Vector(x: 592, y: 308)) +Shape: rgb(0,0,0) Path (Vector(x: 642, y: 558) > Vector(x: 342, y: 558) > Vector(x: 392, y: 508) > Vector(x: 592, y: 508)) +Shape: rgb(0,0,0) Path (Vector(x: 342, y: 558) > Vector(x: 342, y: 258) > Vector(x: 392, y: 308) > Vector(x: 392, y: 508)) +Clip: Path (Vector(x: 8, y: 568) > Vector(x: 273, y: 568) > Vector(x: 273, y: 685) > Vector(x: 8, y: 685)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 568) > Vector(x: 273, y: 568) > Vector(x: 223, y: 618) > Vector(x: 58, y: 618)) +Shape: rgb(0,0,0) Path (Vector(x: 273, y: 568) > Vector(x: 273, y: 685) > Vector(x: 223, y: 635) > Vector(x: 223, y: 618)) +Shape: rgb(0,0,0) Path (Vector(x: 273, y: 685) > Vector(x: 8, y: 685) > Vector(x: 58, y: 635) > Vector(x: 223, y: 635)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 685) > Vector(x: 8, y: 568) > Vector(x: 58, y: 618) > Vector(x: 58, y: 635)) \ No newline at end of file diff --git a/tests/cases/border/radius.html b/tests/reftests/border/radius.html similarity index 100% rename from tests/cases/border/radius.html rename to tests/reftests/border/radius.html diff --git a/tests/reftests/border/radius.txt b/tests/reftests/border/radius.txt new file mode 100644 index 000000000..1c06e17d3 --- /dev/null +++ b/tests/reftests/border/radius.txt @@ -0,0 +1,36 @@ +Window: [800, 996] +Rectangle: [0, 0, 800, 996] rgb(58,132,195) +Opacity: 1 +Clip: Path (BezierCurve(x0: 18, y0: 77, x1: 68, y1: 27, cx0: 18, cy0: 49, cx1: 40, cy1: 27) > BezierCurve(x0: 170, y0: 27, x1: 220, y1: 77, cx0: 198, cy0: 27, cx1: 220, cy1: 49) > BezierCurve(x0: 220, y0: 179, x1: 170, y1: 229, cx0: 220, cy0: 206, cx1: 198, cy1: 229) > BezierCurve(x0: 68, y0: 229, x1: 18, y1: 179, cx0: 40, cy0: 229, cx1: 18, cy1: 206)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (BezierCurve(x0: 33, y0: 41, x1: 68, y1: 27, cx0: 42, cy0: 32, cx1: 54, cy1: 27) > BezierCurve(x0: 170, y0: 27, x1: 205, y1: 41, cx0: 184, cy0: 27, cx1: 196, cy1: 32) > BezierCurve(x0: 205, y0: 42, x1: 170, y1: 28, cx0: 196, cy0: 33, cx1: 184, cy1: 28) > BezierCurve(x0: 68, y0: 28, x1: 33, y1: 42, cx0: 54, cy0: 28, cx1: 42, cy1: 33)) +Shape: rgb(0,128,0) Path (BezierCurve(x0: 205, y0: 41, x1: 220, y1: 77, cx0: 214, cy0: 50, cx1: 220, cy1: 63) > BezierCurve(x0: 220, y0: 179, x1: 205, y1: 214, cx0: 220, cy0: 193, cx1: 214, cy1: 205) > BezierCurve(x0: 205, y0: 213, x1: 219, y1: 179, cx0: 214, cy0: 205, cx1: 219, cy1: 192) > BezierCurve(x0: 219, y0: 77, x1: 205, y1: 42, cx0: 219, cy0: 63, cx1: 214, cy1: 51)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 205, y0: 214, x1: 170, y1: 229, cx0: 196, cy0: 223, cx1: 184, cy1: 229) > BezierCurve(x0: 68, y0: 229, x1: 33, y1: 214, cx0: 54, cy0: 229, cx1: 42, cy1: 223) > BezierCurve(x0: 33, y0: 213, x1: 68, y1: 228, cx0: 42, cy0: 222, cx1: 54, cy1: 228) > BezierCurve(x0: 170, y0: 228, x1: 205, y1: 213, cx0: 184, cy0: 228, cx1: 196, cy1: 222)) +Shape: rgb(0,181,226) Path (BezierCurve(x0: 33, y0: 214, x1: 18, y1: 179, cx0: 24, cy0: 205, cx1: 18, cy1: 193) > BezierCurve(x0: 18, y0: 77, x1: 33, y1: 41, cx0: 18, cy0: 63, cx1: 24, cy1: 50) > BezierCurve(x0: 33, y0: 42, x1: 19, y1: 77, cx0: 24, cy0: 51, cx1: 19, cy1: 63) > BezierCurve(x0: 19, y0: 179, x1: 33, y1: 213, cx0: 19, cy0: 192, cx1: 24, cy1: 205)) +Clip: Path (BezierCurve(x0: 244, y0: 75, x1: 294, y1: 25, cx0: 244, cy0: 47, cx1: 266, cy1: 25) > BezierCurve(x0: 400, y0: 25, x1: 450, y1: 75, cx0: 428, cy0: 25, cx1: 450, cy1: 47) > BezierCurve(x0: 450, y0: 181, x1: 400, y1: 231, cx0: 450, cy0: 208, cx1: 428, cy1: 231) > BezierCurve(x0: 294, y0: 231, x1: 244, y1: 181, cx0: 266, cy0: 231, cx1: 244, cy1: 208)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (BezierCurve(x0: 259, y0: 39, x1: 294, y1: 25, cx0: 268, cy0: 30, cx1: 280, cy1: 25) > BezierCurve(x0: 400, y0: 25, x1: 435, y1: 39, cx0: 414, cy0: 25, cx1: 426, cy1: 30) > BezierCurve(x0: 433, y0: 42, x1: 400, y1: 28, cx0: 425, cy0: 33, cx1: 413, cy1: 28) > BezierCurve(x0: 294, y0: 28, x1: 261, y1: 42, cx0: 281, cy0: 28, cx1: 269, cy1: 33)) +Shape: rgb(0,128,0) Path (BezierCurve(x0: 435, y0: 39, x1: 450, y1: 75, cx0: 444, cy0: 48, cx1: 450, cy1: 61) > BezierCurve(x0: 450, y0: 181, x1: 435, y1: 216, cx0: 450, cy0: 195, cx1: 444, cy1: 207) > BezierCurve(x0: 433, y0: 214, x1: 447, y1: 181, cx0: 442, cy0: 206, cx1: 447, cy1: 194) > BezierCurve(x0: 447, y0: 75, x1: 433, y1: 42, cx0: 447, cy0: 62, cx1: 442, cy1: 50)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 435, y0: 216, x1: 400, y1: 231, cx0: 426, cy0: 225, cx1: 414, cy1: 231) > BezierCurve(x0: 294, y0: 231, x1: 259, y1: 216, cx0: 280, cy0: 231, cx1: 268, cy1: 225) > BezierCurve(x0: 261, y0: 214, x1: 294, y1: 228, cx0: 269, cy0: 223, cx1: 281, cy1: 228) > BezierCurve(x0: 400, y0: 228, x1: 433, y1: 214, cx0: 413, cy0: 228, cx1: 425, cy1: 223)) +Shape: rgb(0,181,226) Path (BezierCurve(x0: 259, y0: 216, x1: 244, y1: 181, cx0: 250, cy0: 207, cx1: 244, cy1: 195) > BezierCurve(x0: 244, y0: 75, x1: 259, y1: 39, cx0: 244, cy0: 61, cx1: 250, cy1: 48) > BezierCurve(x0: 261, y0: 42, x1: 247, y1: 75, cx0: 252, cy0: 50, cx1: 247, cy1: 62) > BezierCurve(x0: 247, y0: 181, x1: 261, y1: 214, cx0: 247, cy0: 194, cx1: 252, cy1: 206)) +Clip: Path (BezierCurve(x0: 474, y0: 68, x1: 524, y1: 18, cx0: 474, cy0: 40, cx1: 496, cy1: 18) > BezierCurve(x0: 644, y0: 18, x1: 694, y1: 68, cx0: 672, cy0: 18, cx1: 694, cy1: 40) > BezierCurve(x0: 694, y0: 188, x1: 644, y1: 238, cx0: 694, cy0: 216, cx1: 672, cy1: 238) > BezierCurve(x0: 524, y0: 238, x1: 474, y1: 188, cx0: 496, cy0: 238, cx1: 474, cy1: 216)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (BezierCurve(x0: 489, y0: 33, x1: 524, y1: 18, cx0: 498, cy0: 24, cx1: 510, cy1: 18) > BezierCurve(x0: 644, y0: 18, x1: 679, y1: 33, cx0: 658, cy0: 18, cx1: 670, cy1: 24) > BezierCurve(x0: 672, y0: 40, x1: 644, y1: 28, cx0: 665, cy0: 32, cx1: 655, cy1: 28) > BezierCurve(x0: 524, y0: 28, x1: 496, y1: 40, cx0: 513, cy0: 28, cx1: 503, cy1: 32)) +Shape: rgb(0,128,0) Path (BezierCurve(x0: 679, y0: 33, x1: 694, y1: 68, cx0: 688, cy0: 42, cx1: 694, cy1: 54) > BezierCurve(x0: 694, y0: 188, x1: 679, y1: 223, cx0: 694, cy0: 202, cx1: 688, cy1: 214) > BezierCurve(x0: 672, y0: 216, x1: 684, y1: 188, cx0: 680, cy0: 209, cx1: 684, cy1: 199) > BezierCurve(x0: 684, y0: 68, x1: 672, y1: 40, cx0: 684, cy0: 57, cx1: 680, cy1: 47)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 679, y0: 223, x1: 644, y1: 238, cx0: 670, cy0: 232, cx1: 658, cy1: 238) > BezierCurve(x0: 524, y0: 238, x1: 489, y1: 223, cx0: 510, cy0: 238, cx1: 498, cy1: 232) > BezierCurve(x0: 496, y0: 216, x1: 524, y1: 228, cx0: 503, cy0: 224, cx1: 513, cy1: 228) > BezierCurve(x0: 644, y0: 228, x1: 672, y1: 216, cx0: 655, cy0: 228, cx1: 665, cy1: 224)) +Clip: Path (BezierCurve(x0: 68, y0: 308, x1: 68, y1: 268, cx0: 68, cy0: 286, cx1: 68, cy1: 268) > BezierCurve(x0: 268, y0: 268, x1: 268, y1: 308, cx0: 268, cy0: 268, cx1: 268, cy1: 286) > BezierCurve(x0: 268, y0: 388, x1: 168, y1: 468, cx0: 268, cy0: 432, cx1: 223, cy1: 468) > BezierCurve(x0: 68, y0: 468, x1: 68, y1: 468, cx0: 68, cy0: 468, cx1: 68, cy1: 468)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (BezierCurve(x0: 33, y0: 273, x1: 68, y1: 258, cx0: 42, cy0: 264, cx1: 54, cy1: 258) > BezierCurve(x0: 268, y0: 258, x1: 303, y1: 273, cx0: 282, cy0: 258, cx1: 294, cy1: 264) > BezierCurve(x0: 268, y0: 280, x1: 268, y1: 268, cx0: 268, cy0: 272, cx1: 268, cy1: 268) > BezierCurve(x0: 68, y0: 268, x1: 68, y1: 280, cx0: 68, cy0: 268, cx1: 68, cy1: 272)) +Shape: rgb(0,128,0) Path (BezierCurve(x0: 303, y0: 273, x1: 318, y1: 308, cx0: 312, cy0: 282, cx1: 318, cy1: 294) > BezierCurve(x0: 318, y0: 388, x1: 274, y1: 480, cx0: 318, cy0: 424, cx1: 301, cy1: 456) > BezierCurve(x0: 239, y0: 445, x1: 268, y1: 388, cx0: 257, cy0: 430, cx1: 268, cy1: 410) > BezierCurve(x0: 268, y0: 308, x1: 268, y1: 280, cx0: 268, cy0: 297, cx1: 268, cy1: 287)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 274, y0: 480, x1: 168, y1: 518, cx0: 247, cy0: 503, cx1: 209, cy1: 518) > BezierCurve(x0: 68, y0: 518, x1: 33, y1: 503, cx0: 54, cy0: 518, cx1: 42, cy1: 512) > BezierCurve(x0: 68, y0: 468, x1: 68, y1: 468, cx0: 68, cy0: 468, cx1: 68, cy1: 468) > BezierCurve(x0: 168, y0: 468, x1: 239, y1: 445, cx0: 196, cy0: 468, cx1: 221, cy1: 459)) +Clip: Path (BezierCurve(x0: 158, y0: 653, x1: 158, y1: 638, cx0: 158, cy0: 645, cx1: 158, cy1: 638) > BezierCurve(x0: 383, y0: 638, x1: 358, y1: 653, cx0: 369, cy0: 638, cx1: 358, cy1: 645) > BezierCurve(x0: 358, y0: 863, x1: 358, y1: 838, cx0: 358, cy0: 849, cx1: 358, cy1: 838) > BezierCurve(x0: 158, y0: 838, x1: 158, y1: 863, cx0: 158, cy0: 838, cx1: 158, cy1: 849)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (BezierCurve(x0: 115, y0: 635, x1: 133, y1: 628, cx0: 120, cy0: 631, cx1: 126, cy1: 628) > BezierCurve(x0: 383, y0: 628, x1: 401, y1: 635, cx0: 390, cy0: 628, cx1: 396, cy1: 631) > BezierCurve(x0: 365, y0: 642, x1: 383, y1: 638, cx0: 370, cy0: 640, cx1: 376, cy1: 638) > BezierCurve(x0: 158, y0: 638, x1: 158, y1: 642, cx0: 158, cy0: 638, cx1: 158, cy1: 640)) +Shape: rgb(0,128,0) Path (BezierCurve(x0: 401, y0: 635, x1: 408, y1: 653, cx0: 405, cy0: 640, cx1: 408, cy1: 646) > BezierCurve(x0: 408, y0: 863, x1: 401, y1: 881, cx0: 408, cy0: 870, cx1: 405, cy1: 876) > BezierCurve(x0: 358, y0: 845, x1: 358, y1: 863, cx0: 358, cy0: 850, cx1: 358, cy1: 856) > BezierCurve(x0: 358, y0: 653, x1: 365, y1: 642, cx0: 358, cy0: 649, cx1: 361, cy1: 645)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 401, y0: 881, x1: 383, y1: 888, cx0: 396, cy0: 885, cx1: 390, cy1: 888) > BezierCurve(x0: 133, y0: 888, x1: 115, y1: 881, cx0: 126, cy0: 888, cx1: 120, cy1: 885) > BezierCurve(x0: 158, y0: 845, x1: 158, y1: 838, cx0: 158, cy0: 841, cx1: 158, cy1: 838) > BezierCurve(x0: 358, y0: 838, x1: 358, y1: 845, cx0: 358, cy0: 838, cx1: 358, cy1: 841)) +Clip: Path (BezierCurve(x0: 522, y0: 738, x1: 623, y1: 637, cx0: 522, cy0: 682, cx1: 567, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 724, y1: 738, cx0: 679, cy0: 637, cx1: 724, cy1: 682) > BezierCurve(x0: 724, y0: 738, x1: 623, y1: 839, cx0: 724, cy0: 794, cx1: 679, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 522, y1: 738, cx0: 567, cy0: 839, cx1: 522, cy1: 794)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 666, x1: 623, y1: 637, cx0: 570, cy0: 648, cx1: 595, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 695, y1: 666, cx0: 651, cy0: 637, cx1: 676, cy1: 648) > BezierCurve(x0: 694, y0: 667, x1: 623, y1: 638, cx0: 676, cy0: 649, cx1: 651, cy1: 638) > BezierCurve(x0: 623, y0: 638, x1: 552, y1: 667, cx0: 596, cy0: 638, cx1: 570, cy1: 649)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 666, x1: 724, y1: 738, cx0: 713, cy0: 685, cx1: 724, cy1: 710) > BezierCurve(x0: 724, y0: 738, x1: 695, y1: 810, cx0: 724, cy0: 766, cx1: 713, cy1: 791) > BezierCurve(x0: 694, y0: 809, x1: 723, y1: 738, cx0: 712, cy0: 791, cx1: 723, cy1: 766) > BezierCurve(x0: 723, y0: 738, x1: 694, y1: 667, cx0: 723, cy0: 710, cx1: 712, cy1: 685)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 810, x1: 623, y1: 839, cx0: 676, cy0: 828, cx1: 651, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 552, y1: 810, cx0: 595, cy0: 839, cx1: 570, cy1: 828) > BezierCurve(x0: 552, y0: 809, x1: 623, y1: 838, cx0: 570, cy0: 827, cx1: 596, cy1: 838) > BezierCurve(x0: 623, y0: 838, x1: 694, y1: 809, cx0: 651, cy0: 838, cx1: 676, cy1: 827)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 810, x1: 522, y1: 738, cx0: 533, cy0: 791, cx1: 522, cy1: 766) > BezierCurve(x0: 522, y0: 738, x1: 552, y1: 666, cx0: 522, cy0: 710, cx1: 533, cy1: 685) > BezierCurve(x0: 552, y0: 667, x1: 523, y1: 738, cx0: 534, cy0: 685, cx1: 523, cy1: 710) > BezierCurve(x0: 523, y0: 738, x1: 552, y1: 809, cx0: 523, cy0: 766, cx1: 534, cy1: 791)) \ No newline at end of file diff --git a/tests/cases/border/solid.html b/tests/reftests/border/solid.html similarity index 100% rename from tests/cases/border/solid.html rename to tests/reftests/border/solid.html diff --git a/tests/reftests/border/solid.txt b/tests/reftests/border/solid.txt new file mode 100644 index 000000000..bd676d835 --- /dev/null +++ b/tests/reftests/border/solid.txt @@ -0,0 +1,27 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(58,132,195) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 18, y: 229)) + Fill: rgb(111,66,140) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 27) > Vector(x: 220, y: 27) > Vector(x: 219, y: 28) > Vector(x: 19, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 27) > Vector(x: 220, y: 229) > Vector(x: 219, y: 228) > Vector(x: 219, y: 28)) +Shape: rgb(0,181,226) Path (Vector(x: 220, y: 229) > Vector(x: 18, y: 229) > Vector(x: 19, y: 228) > Vector(x: 219, y: 228)) +Shape: rgb(0,181,226) Path (Vector(x: 18, y: 229) > Vector(x: 18, y: 27) > Vector(x: 19, y: 28) > Vector(x: 19, y: 228)) +Clip: Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 244, y: 231)) + Fill: rgb(111,66,140) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 25) > Vector(x: 450, y: 25) > Vector(x: 447, y: 28) > Vector(x: 247, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 25) > Vector(x: 450, y: 231) > Vector(x: 447, y: 228) > Vector(x: 447, y: 28)) +Shape: rgb(255,0,0) Path (Vector(x: 450, y: 231) > Vector(x: 244, y: 231) > Vector(x: 247, y: 228) > Vector(x: 447, y: 228)) +Shape: rgb(255,0,0) Path (Vector(x: 244, y: 231) > Vector(x: 244, y: 25) > Vector(x: 247, y: 28) > Vector(x: 247, y: 228)) +Clip: Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 474, y: 238)) + Fill: rgb(111,66,140) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 18) > Vector(x: 694, y: 18) > Vector(x: 684, y: 28) > Vector(x: 484, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 18) > Vector(x: 694, y: 238) > Vector(x: 684, y: 228) > Vector(x: 684, y: 28)) +Shape: rgb(0,0,0) Path (Vector(x: 694, y: 238) > Vector(x: 474, y: 238) > Vector(x: 484, y: 228) > Vector(x: 684, y: 228)) +Shape: rgb(0,0,0) Path (Vector(x: 474, y: 238) > Vector(x: 474, y: 18) > Vector(x: 484, y: 28) > Vector(x: 484, y: 228)) +Clip: Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 18, y: 558)) + Fill: rgb(111,66,140) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 258) > Vector(x: 318, y: 258) > Vector(x: 268, y: 308) > Vector(x: 68, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 258) > Vector(x: 318, y: 558) > Vector(x: 268, y: 508) > Vector(x: 268, y: 308)) +Shape: rgb(0,128,0) Path (Vector(x: 318, y: 558) > Vector(x: 18, y: 558) > Vector(x: 68, y: 508) > Vector(x: 268, y: 508)) +Shape: rgb(0,128,0) Path (Vector(x: 18, y: 558) > Vector(x: 18, y: 258) > Vector(x: 68, y: 308) > Vector(x: 68, y: 508)) \ No newline at end of file diff --git a/tests/cases/clip.html b/tests/reftests/clip.html similarity index 96% rename from tests/cases/clip.html rename to tests/reftests/clip.html index 4d8cc957a..0ddeed0d2 100644 --- a/tests/cases/clip.html +++ b/tests/reftests/clip.html @@ -15,6 +15,9 @@ background: red; border: 5px solid blue; } + body { + font-family: Arial; + } diff --git a/tests/reftests/clip.txt b/tests/reftests/clip.txt new file mode 100644 index 000000000..37368e2fe --- /dev/null +++ b/tests/reftests/clip.txt @@ -0,0 +1,178 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 104) > Vector(x: 8, y: 104)) + Fill: rgb(255,0,0) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 787, y: 13) > Vector(x: 13, y: 13)) +Shape: rgb(0,0,255) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 104) > Vector(x: 787, y: 99) > Vector(x: 787, y: 13)) +Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 8, y: 104) > Vector(x: 13, y: 99) > Vector(x: 787, y: 99)) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 8, y: 8) > Vector(x: 13, y: 13) > Vector(x: 13, y: 99)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 13]: Some + [59, 13]: inline + [101, 13]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [302, 13]: followed + [365, 13]: by + [387, 13]: more + [427, 13]: inline + [469, 13]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 81]: Then + [54, 81]: more + [95, 81]: inline + [137, 81]: text. +Clip: Path (Vector(x: 13, y: 47) > Vector(x: 787, y: 47) > Vector(x: 787, y: 65) > Vector(x: 13, y: 65)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 47]: Then + [54, 47]: a + [67, 47]: block + [109, 47]: level + [147, 47]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [131, 13]: followed + [195, 13]: by + [216, 13]: text + [246, 13]: in + [263, 13]: span +Clip: Path (Vector(x: 8, y: 104) > Vector(x: 792, y: 104) > Vector(x: 792, y: 200) > Vector(x: 8, y: 200)) + Fill: rgb(255,0,0) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 792, y: 104) > Vector(x: 787, y: 109) > Vector(x: 13, y: 109)) +Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 792, y: 200) > Vector(x: 787, y: 195) > Vector(x: 787, y: 109)) +Shape: rgb(0,0,255) Path (Vector(x: 792, y: 200) > Vector(x: 8, y: 200) > Vector(x: 13, y: 195) > Vector(x: 787, y: 195)) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 8, y: 104) > Vector(x: 13, y: 109) > Vector(x: 13, y: 195)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 109]: Some + [59, 109]: inline + [101, 109]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [302, 109]: followed + [365, 109]: by + [387, 109]: more + [427, 109]: inline + [469, 109]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 177]: Then + [54, 177]: more + [95, 177]: inline + [137, 177]: text. +Clip: Path (Vector(x: 13, y: 143) > Vector(x: 787, y: 143) > Vector(x: 787, y: 161) > Vector(x: 13, y: 161)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 143]: Then + [54, 143]: a + [67, 143]: block + [109, 143]: level + [147, 143]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [131, 109]: followed + [195, 109]: by + [216, 109]: text + [246, 109]: in + [263, 109]: span +Clip: Path (Vector(x: 8, y: 200) > Vector(x: 504, y: 200) > Vector(x: 504, y: 296) > Vector(x: 8, y: 296)) + Fill: rgb(255,0,0) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 504, y: 200) > Vector(x: 499, y: 205) > Vector(x: 13, y: 205)) +Shape: rgb(0,0,255) Path (Vector(x: 504, y: 200) > Vector(x: 504, y: 296) > Vector(x: 499, y: 291) > Vector(x: 499, y: 205)) +Shape: rgb(0,0,255) Path (Vector(x: 504, y: 296) > Vector(x: 8, y: 296) > Vector(x: 13, y: 291) > Vector(x: 499, y: 291)) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 296) > Vector(x: 8, y: 200) > Vector(x: 13, y: 205) > Vector(x: 13, y: 291)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 205]: Some + [59, 205]: inline + [101, 205]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [302, 205]: followed + [365, 205]: by + [387, 205]: more + [427, 205]: inline + [469, 205]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 273]: Then + [54, 273]: more + [95, 273]: inline + [137, 273]: text. +Clip: Path (Vector(x: 13, y: 239) > Vector(x: 499, y: 239) > Vector(x: 499, y: 257) > Vector(x: 13, y: 257)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 239]: Then + [54, 239]: a + [67, 239]: block + [109, 239]: level + [147, 239]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [131, 205]: followed + [195, 205]: by + [216, 205]: text + [246, 205]: in + [263, 205]: span +Clip: Path (Vector(x: 500, y: 250) > Vector(x: 800, y: 250) > Vector(x: 800, y: 364) > Vector(x: 500, y: 364)) + Fill: rgb(255,0,0) +Shape: rgb(0,0,255) Path (Vector(x: 500, y: 250) > Vector(x: 800, y: 250) > Vector(x: 795, y: 255) > Vector(x: 505, y: 255)) +Shape: rgb(0,0,255) Path (Vector(x: 800, y: 250) > Vector(x: 800, y: 364) > Vector(x: 795, y: 359) > Vector(x: 795, y: 255)) +Shape: rgb(0,0,255) Path (Vector(x: 800, y: 364) > Vector(x: 500, y: 364) > Vector(x: 505, y: 359) > Vector(x: 795, y: 359)) +Shape: rgb(0,0,255) Path (Vector(x: 500, y: 364) > Vector(x: 500, y: 250) > Vector(x: 505, y: 255) > Vector(x: 505, y: 359)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [505, 255]: Some + [551, 255]: inline + [593, 255]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [505, 273]: followed + [568, 273]: by + [589, 273]: more + [630, 273]: inline + [672, 273]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [505, 341]: Then + [546, 341]: more + [587, 341]: inline + [629, 341]: text. +Clip: Path (Vector(x: 505, y: 307) > Vector(x: 795, y: 307) > Vector(x: 795, y: 325) > Vector(x: 505, y: 325)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [505, 307]: Then + [546, 307]: a + [559, 307]: block + [601, 307]: level + [639, 307]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [623, 255]: followed + [687, 255]: by + [708, 255]: text + [738, 255]: in + [755, 255]: span +Clip: Path (Vector(x: 8, y: 500) > Vector(x: 504, y: 500) > Vector(x: 504, y: 596) > Vector(x: 8, y: 596)) + Fill: rgb(255,0,0) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 500) > Vector(x: 504, y: 500) > Vector(x: 499, y: 505) > Vector(x: 13, y: 505)) +Shape: rgb(0,0,255) Path (Vector(x: 504, y: 500) > Vector(x: 504, y: 596) > Vector(x: 499, y: 591) > Vector(x: 499, y: 505)) +Shape: rgb(0,0,255) Path (Vector(x: 504, y: 596) > Vector(x: 8, y: 596) > Vector(x: 13, y: 591) > Vector(x: 499, y: 591)) +Shape: rgb(0,0,255) Path (Vector(x: 8, y: 596) > Vector(x: 8, y: 500) > Vector(x: 13, y: 505) > Vector(x: 13, y: 591)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 505]: Some + [59, 505]: inline + [101, 505]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [302, 505]: followed + [365, 505]: by + [387, 505]: more + [427, 505]: inline + [469, 505]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 573]: Then + [54, 573]: more + [95, 573]: inline + [137, 573]: text. +Clip: Path (Vector(x: 13, y: 539) > Vector(x: 499, y: 539) > Vector(x: 499, y: 557) > Vector(x: 13, y: 557)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 539]: Then + [54, 539]: a + [67, 539]: block + [109, 539]: level + [147, 539]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [131, 505]: followed + [195, 505]: by + [216, 505]: text + [246, 505]: in + [263, 505]: span \ No newline at end of file diff --git a/tests/cases/crossorigin-iframe.html b/tests/reftests/crossorigin-iframe.html similarity index 100% rename from tests/cases/crossorigin-iframe.html rename to tests/reftests/crossorigin-iframe.html diff --git a/tests/reftests/crossorigin-iframe.txt b/tests/reftests/crossorigin-iframe.txt new file mode 100644 index 000000000..8eccfe1ad --- /dev/null +++ b/tests/reftests/crossorigin-iframe.txt @@ -0,0 +1,7 @@ +Window: [812, 824] +Rectangle: [0, 0, 812, 824] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 812, y: 8) > Vector(x: 810, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 812, y: 8) > Vector(x: 812, y: 812) > Vector(x: 810, y: 810) > Vector(x: 810, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 812, y: 812) > Vector(x: 8, y: 812) > Vector(x: 10, y: 810) > Vector(x: 810, y: 810)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 812) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 810)) \ No newline at end of file diff --git a/tests/cases/forms.html b/tests/reftests/forms.html similarity index 100% rename from tests/cases/forms.html rename to tests/reftests/forms.html diff --git a/tests/reftests/forms.txt b/tests/reftests/forms.txt new file mode 100644 index 000000000..cf3dab41d --- /dev/null +++ b/tests/reftests/forms.txt @@ -0,0 +1,310 @@ +Window: [800, 1003] +Rectangle: [0, 0, 800, 1003] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 138) > Vector(x: 792, y: 138) > Vector(x: 791, y: 139) > Vector(x: 9, y: 139)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 138) > Vector(x: 792, y: 140) > Vector(x: 791, y: 139) > Vector(x: 791, y: 139)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 140) > Vector(x: 8, y: 140) > Vector(x: 9, y: 139) > Vector(x: 791, y: 139)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 140) > Vector(x: 8, y: 138) > Vector(x: 9, y: 139) > Vector(x: 9, y: 139)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 176) > Vector(x: 792, y: 176) > Vector(x: 791, y: 177) > Vector(x: 9, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 176) > Vector(x: 792, y: 178) > Vector(x: 791, y: 177) > Vector(x: 791, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 178) > Vector(x: 8, y: 178) > Vector(x: 9, y: 177) > Vector(x: 791, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 178) > Vector(x: 8, y: 176) > Vector(x: 9, y: 177) > Vector(x: 9, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 244) > Vector(x: 792, y: 244) > Vector(x: 791, y: 245) > Vector(x: 9, y: 245)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 244) > Vector(x: 792, y: 246) > Vector(x: 791, y: 245) > Vector(x: 791, y: 245)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 246) > Vector(x: 8, y: 246) > Vector(x: 9, y: 245) > Vector(x: 791, y: 245)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 246) > Vector(x: 8, y: 244) > Vector(x: 9, y: 245) > Vector(x: 9, y: 245)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 321) > Vector(x: 792, y: 321) > Vector(x: 791, y: 322) > Vector(x: 9, y: 322)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 321) > Vector(x: 792, y: 323) > Vector(x: 791, y: 322) > Vector(x: 791, y: 322)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 323) > Vector(x: 8, y: 323) > Vector(x: 9, y: 322) > Vector(x: 791, y: 322)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 323) > Vector(x: 8, y: 321) > Vector(x: 9, y: 322) > Vector(x: 9, y: 322)) +Clip: Path (Vector(x: 8, y: 24) > Vector(x: 177, y: 24) > Vector(x: 177, y: 45) > Vector(x: 8, y: 45)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 24) > Vector(x: 177, y: 24) > Vector(x: 175, y: 26) > Vector(x: 10, y: 26)) +Shape: rgb(0,0,0) Path (Vector(x: 177, y: 24) > Vector(x: 177, y: 45) > Vector(x: 175, y: 43) > Vector(x: 175, y: 26)) +Shape: rgb(0,0,0) Path (Vector(x: 177, y: 45) > Vector(x: 8, y: 45) > Vector(x: 10, y: 43) > Vector(x: 175, y: 43)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 45) > Vector(x: 8, y: 24) > Vector(x: 10, y: 26) > Vector(x: 10, y: 43)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [10, 27]: textbox +Clip: Path (Vector(x: 181, y: 24) > Vector(x: 350, y: 24) > Vector(x: 350, y: 45) > Vector(x: 181, y: 45)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 181, y: 24) > Vector(x: 350, y: 24) > Vector(x: 348, y: 26) > Vector(x: 183, y: 26)) +Shape: rgb(0,0,0) Path (Vector(x: 350, y: 24) > Vector(x: 350, y: 45) > Vector(x: 348, y: 43) > Vector(x: 348, y: 26)) +Shape: rgb(0,0,0) Path (Vector(x: 350, y: 45) > Vector(x: 181, y: 45) > Vector(x: 183, y: 43) > Vector(x: 348, y: 43)) +Shape: rgb(0,0,0) Path (Vector(x: 181, y: 45) > Vector(x: 181, y: 24) > Vector(x: 183, y: 26) > Vector(x: 183, y: 43)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [183, 27]: • + [188, 27]: • + [192, 27]: • + [197, 27]: • + [202, 27]: • + [206, 27]: • + [211, 27]: • +Clip: Path (Vector(x: 354, y: 20) > Vector(x: 528, y: 20) > Vector(x: 528, y: 48) > Vector(x: 354, y: 48)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,128) Path (Vector(x: 354, y: 20) > Vector(x: 528, y: 20) > Vector(x: 523, y: 25) > Vector(x: 359, y: 25)) +Shape: rgb(0,0,128) Path (Vector(x: 528, y: 20) > Vector(x: 528, y: 48) > Vector(x: 523, y: 43) > Vector(x: 523, y: 25)) +Shape: rgb(0,0,128) Path (Vector(x: 528, y: 48) > Vector(x: 354, y: 48) > Vector(x: 359, y: 43) > Vector(x: 523, y: 43)) +Shape: rgb(0,0,128) Path (Vector(x: 354, y: 48) > Vector(x: 354, y: 20) > Vector(x: 359, y: 25) > Vector(x: 359, y: 43)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [359, 26]: textbox +Clip: Path (Vector(x: 532, y: 8) > Vector(x: 707, y: 8) > Vector(x: 707, y: 60) > Vector(x: 532, y: 60)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,128) Path (Vector(x: 532, y: 8) > Vector(x: 707, y: 8) > Vector(x: 702, y: 13) > Vector(x: 537, y: 13)) +Shape: rgb(0,0,128) Path (Vector(x: 707, y: 8) > Vector(x: 707, y: 60) > Vector(x: 702, y: 55) > Vector(x: 702, y: 13)) +Shape: rgb(0,0,128) Path (Vector(x: 707, y: 60) > Vector(x: 532, y: 60) > Vector(x: 537, y: 55) > Vector(x: 702, y: 55)) +Shape: rgb(0,0,128) Path (Vector(x: 532, y: 60) > Vector(x: 532, y: 8) > Vector(x: 537, y: 13) > Vector(x: 537, y: 55)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [537, 14]: textbox +Clip: Path (Vector(x: 8, y: 60) > Vector(x: 203, y: 60) > Vector(x: 203, y: 130) > Vector(x: 8, y: 130)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,128) Path (Vector(x: 8, y: 60) > Vector(x: 203, y: 60) > Vector(x: 198, y: 65) > Vector(x: 13, y: 65)) +Shape: rgb(0,0,128) Path (Vector(x: 203, y: 60) > Vector(x: 203, y: 130) > Vector(x: 198, y: 125) > Vector(x: 198, y: 65)) +Shape: rgb(0,0,128) Path (Vector(x: 203, y: 130) > Vector(x: 8, y: 130) > Vector(x: 13, y: 125) > Vector(x: 198, y: 125)) +Shape: rgb(0,0,128) Path (Vector(x: 8, y: 130) > Vector(x: 8, y: 60) > Vector(x: 13, y: 65) > Vector(x: 13, y: 125)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [23, 75]: textbox +Clip: Path (Vector(x: 207, y: 75) > Vector(x: 396, y: 75) > Vector(x: 396, y: 114) > Vector(x: 207, y: 114)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 207, y: 75) > Vector(x: 396, y: 75) > Vector(x: 394, y: 77) > Vector(x: 209, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 396, y: 75) > Vector(x: 396, y: 114) > Vector(x: 394, y: 112) > Vector(x: 394, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 396, y: 114) > Vector(x: 207, y: 114) > Vector(x: 209, y: 112) > Vector(x: 394, y: 112)) +Shape: rgb(0,0,0) Path (Vector(x: 207, y: 114) > Vector(x: 207, y: 75) > Vector(x: 209, y: 77) > Vector(x: 209, y: 112)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [219, 87]: textbox +Clip: Path (Vector(x: 400, y: 75) > Vector(x: 588, y: 75) > Vector(x: 588, y: 114) > Vector(x: 400, y: 114)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 400, y: 75) > Vector(x: 588, y: 75) > Vector(x: 586, y: 77) > Vector(x: 402, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 588, y: 75) > Vector(x: 588, y: 114) > Vector(x: 586, y: 112) > Vector(x: 586, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 588, y: 114) > Vector(x: 400, y: 114) > Vector(x: 402, y: 112) > Vector(x: 586, y: 112)) +Shape: rgb(0,0,0) Path (Vector(x: 400, y: 114) > Vector(x: 400, y: 75) > Vector(x: 402, y: 77) > Vector(x: 402, y: 112)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [533, 87]: textbox +Clip: Path (Vector(x: 8, y: 149) > Vector(x: 76, y: 149) > Vector(x: 76, y: 168) > Vector(x: 8, y: 168)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 149) > Vector(x: 76, y: 149) > Vector(x: 75, y: 150) > Vector(x: 9, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 76, y: 149) > Vector(x: 76, y: 168) > Vector(x: 75, y: 167) > Vector(x: 75, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 76, y: 168) > Vector(x: 8, y: 168) > Vector(x: 9, y: 167) > Vector(x: 75, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 168) > Vector(x: 8, y: 149) > Vector(x: 9, y: 150) > Vector(x: 9, y: 167)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [9, 150]: Value + [46, 150]: 1 +Clip: Path (Vector(x: 80, y: 149) > Vector(x: 104, y: 149) > Vector(x: 104, y: 168) > Vector(x: 80, y: 168)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 80, y: 149) > Vector(x: 104, y: 149) > Vector(x: 103, y: 150) > Vector(x: 81, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 104, y: 149) > Vector(x: 104, y: 168) > Vector(x: 103, y: 167) > Vector(x: 103, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 104, y: 168) > Vector(x: 80, y: 168) > Vector(x: 81, y: 167) > Vector(x: 103, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 80, y: 168) > Vector(x: 80, y: 149) > Vector(x: 81, y: 150) > Vector(x: 81, y: 167)) +Clip: Path (Vector(x: 108, y: 149) > Vector(x: 140, y: 149) > Vector(x: 140, y: 168) > Vector(x: 108, y: 168)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 108, y: 149) > Vector(x: 140, y: 149) > Vector(x: 139, y: 150) > Vector(x: 109, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 140, y: 149) > Vector(x: 140, y: 168) > Vector(x: 139, y: 167) > Vector(x: 139, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 140, y: 168) > Vector(x: 108, y: 168) > Vector(x: 109, y: 167) > Vector(x: 139, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 108, y: 168) > Vector(x: 108, y: 149) > Vector(x: 109, y: 150) > Vector(x: 109, y: 167)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [109, 150]: 2 +Clip: Path (Vector(x: 144, y: 149) > Vector(x: 333, y: 149) > Vector(x: 333, y: 168) > Vector(x: 144, y: 168)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 144, y: 149) > Vector(x: 333, y: 149) > Vector(x: 332, y: 150) > Vector(x: 145, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 333, y: 149) > Vector(x: 333, y: 168) > Vector(x: 332, y: 167) > Vector(x: 332, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 333, y: 168) > Vector(x: 144, y: 168) > Vector(x: 145, y: 167) > Vector(x: 332, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 144, y: 168) > Vector(x: 144, y: 149) > Vector(x: 145, y: 150) > Vector(x: 145, y: 167)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [145, 150]: Value + [182, 150]: 2 + [193, 150]: with + [220, 150]: something + [286, 150]: else +Clip: Path (Vector(x: 8, y: 200) > Vector(x: 65, y: 200) > Vector(x: 65, y: 221) > Vector(x: 8, y: 221)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 8, y: 200) > Vector(x: 65, y: 200) > Vector(x: 63, y: 202) > Vector(x: 10, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 65, y: 200) > Vector(x: 65, y: 221) > Vector(x: 63, y: 219) > Vector(x: 63, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 65, y: 221) > Vector(x: 8, y: 221) > Vector(x: 10, y: 219) > Vector(x: 63, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 8, y: 221) > Vector(x: 8, y: 200) > Vector(x: 10, y: 202) > Vector(x: 10, y: 219)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [16, 203]: Submit +Clip: Path (Vector(x: 69, y: 200) > Vector(x: 124, y: 200) > Vector(x: 124, y: 221) > Vector(x: 69, y: 221)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 69, y: 200) > Vector(x: 124, y: 200) > Vector(x: 122, y: 202) > Vector(x: 71, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 124, y: 200) > Vector(x: 124, y: 221) > Vector(x: 122, y: 219) > Vector(x: 122, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 124, y: 221) > Vector(x: 69, y: 221) > Vector(x: 71, y: 219) > Vector(x: 122, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 69, y: 221) > Vector(x: 69, y: 200) > Vector(x: 71, y: 202) > Vector(x: 71, y: 219)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [77, 203]: Button +Clip: Path (Vector(x: 128, y: 200) > Vector(x: 179, y: 200) > Vector(x: 179, y: 221) > Vector(x: 128, y: 221)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 128, y: 200) > Vector(x: 179, y: 200) > Vector(x: 177, y: 202) > Vector(x: 130, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 179, y: 200) > Vector(x: 179, y: 221) > Vector(x: 177, y: 219) > Vector(x: 177, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 179, y: 221) > Vector(x: 128, y: 221) > Vector(x: 130, y: 219) > Vector(x: 177, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 128, y: 221) > Vector(x: 128, y: 200) > Vector(x: 130, y: 202) > Vector(x: 130, y: 219)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [136, 203]: Reset +Clip: Path (Vector(x: 183, y: 200) > Vector(x: 383, y: 200) > Vector(x: 383, y: 221) > Vector(x: 183, y: 221)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 183, y: 200) > Vector(x: 383, y: 200) > Vector(x: 381, y: 202) > Vector(x: 185, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 383, y: 200) > Vector(x: 383, y: 221) > Vector(x: 381, y: 219) > Vector(x: 381, y: 202)) +Shape: rgb(221,221,221) Path (Vector(x: 383, y: 221) > Vector(x: 183, y: 221) > Vector(x: 185, y: 219) > Vector(x: 381, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 183, y: 221) > Vector(x: 183, y: 200) > Vector(x: 185, y: 202) > Vector(x: 185, y: 219)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [262, 203]: Submit +Clip: Path (Vector(x: 387, y: 186) > Vector(x: 587, y: 186) > Vector(x: 587, y: 236) > Vector(x: 387, y: 236)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 387, y: 186) > Vector(x: 587, y: 186) > Vector(x: 585, y: 188) > Vector(x: 389, y: 188)) +Shape: rgb(221,221,221) Path (Vector(x: 587, y: 186) > Vector(x: 587, y: 236) > Vector(x: 585, y: 234) > Vector(x: 585, y: 188)) +Shape: rgb(221,221,221) Path (Vector(x: 587, y: 236) > Vector(x: 387, y: 236) > Vector(x: 389, y: 234) > Vector(x: 585, y: 234)) +Shape: rgb(221,221,221) Path (Vector(x: 387, y: 236) > Vector(x: 387, y: 186) > Vector(x: 389, y: 188) > Vector(x: 389, y: 234)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [468, 189]: Button +Clip: Path (Vector(x: 591, y: 186) > Vector(x: 791, y: 186) > Vector(x: 791, y: 236) > Vector(x: 591, y: 236)) + Fill: rgb(221,221,221) +Shape: rgb(221,221,221) Path (Vector(x: 591, y: 186) > Vector(x: 791, y: 186) > Vector(x: 789, y: 188) > Vector(x: 593, y: 188)) +Shape: rgb(221,221,221) Path (Vector(x: 791, y: 186) > Vector(x: 791, y: 236) > Vector(x: 789, y: 234) > Vector(x: 789, y: 188)) +Shape: rgb(221,221,221) Path (Vector(x: 791, y: 236) > Vector(x: 591, y: 236) > Vector(x: 593, y: 234) > Vector(x: 789, y: 234)) +Shape: rgb(221,221,221) Path (Vector(x: 591, y: 236) > Vector(x: 591, y: 186) > Vector(x: 593, y: 188) > Vector(x: 593, y: 234)) +Text: rgb(0,0,0) normal normal 400 13.3333px Arial + [599, 189]: Reset +Clip: Path (Vector(x: 8, y: 272) > Vector(x: 165, y: 272) > Vector(x: 165, y: 309) > Vector(x: 8, y: 309)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 272) > Vector(x: 165, y: 272) > Vector(x: 164, y: 273) > Vector(x: 9, y: 273)) +Shape: rgb(169,169,169) Path (Vector(x: 165, y: 272) > Vector(x: 165, y: 309) > Vector(x: 164, y: 308) > Vector(x: 164, y: 273)) +Shape: rgb(169,169,169) Path (Vector(x: 165, y: 309) > Vector(x: 8, y: 309) > Vector(x: 9, y: 308) > Vector(x: 164, y: 308)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 309) > Vector(x: 8, y: 272) > Vector(x: 9, y: 273) > Vector(x: 9, y: 308)) +Text: rgb(0,0,0) normal normal 400 13.3333px monospace +Clip: Path (Vector(x: 169, y: 254) > Vector(x: 344, y: 254) > Vector(x: 344, y: 309) > Vector(x: 169, y: 309)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 169, y: 254) > Vector(x: 344, y: 254) > Vector(x: 334, y: 264) > Vector(x: 179, y: 264)) +Shape: rgb(169,169,169) Path (Vector(x: 344, y: 254) > Vector(x: 344, y: 309) > Vector(x: 334, y: 299) > Vector(x: 334, y: 264)) +Shape: rgb(169,169,169) Path (Vector(x: 344, y: 309) > Vector(x: 169, y: 309) > Vector(x: 179, y: 299) > Vector(x: 334, y: 299)) +Shape: rgb(169,169,169) Path (Vector(x: 169, y: 309) > Vector(x: 169, y: 254) > Vector(x: 179, y: 264) > Vector(x: 179, y: 299)) +Clip: Path (Vector(x: 348, y: 272) > Vector(x: 504, y: 272) > Vector(x: 504, y: 309) > Vector(x: 348, y: 309)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 348, y: 272) > Vector(x: 504, y: 272) > Vector(x: 503, y: 273) > Vector(x: 349, y: 273)) +Shape: rgb(169,169,169) Path (Vector(x: 504, y: 272) > Vector(x: 504, y: 309) > Vector(x: 503, y: 308) > Vector(x: 503, y: 273)) +Shape: rgb(169,169,169) Path (Vector(x: 504, y: 309) > Vector(x: 348, y: 309) > Vector(x: 349, y: 308) > Vector(x: 503, y: 308)) +Shape: rgb(169,169,169) Path (Vector(x: 348, y: 309) > Vector(x: 348, y: 272) > Vector(x: 349, y: 273) > Vector(x: 349, y: 308)) +Text: rgb(0,0,0) normal normal 400 13.3333px monospace + [358, 275]: text +Clip: Path (Vector(x: 508, y: 254) > Vector(x: 683, y: 254) > Vector(x: 683, y: 309) > Vector(x: 508, y: 309)) + Fill: rgb(255,255,255) +Shape: rgb(169,169,169) Path (Vector(x: 508, y: 254) > Vector(x: 683, y: 254) > Vector(x: 673, y: 264) > Vector(x: 518, y: 264)) +Shape: rgb(169,169,169) Path (Vector(x: 683, y: 254) > Vector(x: 683, y: 309) > Vector(x: 673, y: 299) > Vector(x: 673, y: 264)) +Shape: rgb(169,169,169) Path (Vector(x: 683, y: 309) > Vector(x: 508, y: 309) > Vector(x: 518, y: 299) > Vector(x: 673, y: 299)) +Shape: rgb(169,169,169) Path (Vector(x: 508, y: 309) > Vector(x: 508, y: 254) > Vector(x: 518, y: 264) > Vector(x: 518, y: 299)) +Text: rgb(0,0,0) normal normal 400 13.3333px monospace + [520, 266]: text +Clip: Path (BezierCurve(x0: 19, y0: 534, x1: 24, y1: 529, cx0: 19, cy0: 531, cx1: 21, cy1: 529) > BezierCurve(x0: 24, y0: 529, x1: 30, y1: 534, cx0: 27, cy0: 529, cx1: 30, cy1: 531) > BezierCurve(x0: 30, y0: 534, x1: 24, y1: 540, cx0: 30, cy0: 537, cx1: 27, cy1: 540) > BezierCurve(x0: 24, y0: 540, x1: 19, y1: 534, cx0: 21, cy0: 540, cx1: 19, cy1: 537)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 20, y0: 530, x1: 24, y1: 528, cx0: 21, cy0: 529, cx1: 23, cy1: 528) > BezierCurve(x0: 24, y0: 528, x1: 29, y1: 530, cx0: 26, cy0: 528, cx1: 28, cy1: 529) > BezierCurve(x0: 28, y0: 531, x1: 24, y1: 529, cx0: 27, cy0: 530, cx1: 26, cy1: 529) > BezierCurve(x0: 24, y0: 529, x1: 21, y1: 531, cx0: 23, cy0: 529, cx1: 22, cy1: 530)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 29, y0: 530, x1: 31, y1: 534, cx0: 30, cy0: 531, cx1: 31, cy1: 533) > BezierCurve(x0: 31, y0: 534, x1: 29, y1: 539, cx0: 31, cy0: 536, cx1: 30, cy1: 538) > BezierCurve(x0: 28, y0: 538, x1: 30, y1: 534, cx0: 29, cy0: 537, cx1: 30, cy1: 536) > BezierCurve(x0: 30, y0: 534, x1: 28, y1: 531, cx0: 30, cy0: 533, cx1: 29, cy1: 532)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 29, y0: 539, x1: 24, y1: 541, cx0: 28, cy0: 540, cx1: 26, cy1: 541) > BezierCurve(x0: 24, y0: 541, x1: 20, y1: 539, cx0: 23, cy0: 541, cx1: 21, cy1: 540) > BezierCurve(x0: 21, y0: 538, x1: 24, y1: 540, cx0: 22, cy0: 539, cx1: 23, cy1: 540) > BezierCurve(x0: 24, y0: 540, x1: 28, y1: 538, cx0: 26, cy0: 540, cx1: 27, cy1: 539)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 20, y0: 539, x1: 18, y1: 534, cx0: 19, cy0: 538, cx1: 18, cy1: 536) > BezierCurve(x0: 18, y0: 534, x1: 20, y1: 530, cx0: 18, cy0: 533, cx1: 19, cy1: 531) > BezierCurve(x0: 21, y0: 531, x1: 19, y1: 534, cx0: 20, cy0: 532, cx1: 19, cy1: 533) > BezierCurve(x0: 19, y0: 534, x1: 21, y1: 538, cx0: 19, cy0: 536, cx1: 20, cy1: 537)) +Clip: Path (BezierCurve(x0: 93, y0: 534, x1: 98, y1: 529, cx0: 93, cy0: 531, cx1: 95, cy1: 529) > BezierCurve(x0: 98, y0: 529, x1: 103, y1: 534, cx0: 101, cy0: 529, cx1: 103, cy1: 531) > BezierCurve(x0: 103, y0: 534, x1: 98, y1: 540, cx0: 103, cy0: 537, cx1: 101, cy1: 540) > BezierCurve(x0: 98, y0: 540, x1: 93, y1: 534, cx0: 95, cy0: 540, cx1: 93, cy1: 537)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 93, y0: 530, x1: 98, y1: 528, cx0: 95, cy0: 529, cx1: 96, cy1: 528) > BezierCurve(x0: 98, y0: 528, x1: 103, y1: 530, cx0: 100, cy0: 528, cx1: 101, cy1: 529) > BezierCurve(x0: 102, y0: 531, x1: 98, y1: 529, cx0: 101, cy0: 530, cx1: 99, cy1: 529) > BezierCurve(x0: 98, y0: 529, x1: 94, y1: 531, cx0: 97, cy0: 529, cx1: 95, cy1: 530)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 103, y0: 530, x1: 104, y1: 534, cx0: 104, cy0: 531, cx1: 104, cy1: 533) > BezierCurve(x0: 104, y0: 534, x1: 103, y1: 539, cx0: 104, cy0: 536, cx1: 104, cy1: 538) > BezierCurve(x0: 102, y0: 538, x1: 103, y1: 534, cx0: 103, cy0: 537, cx1: 103, cy1: 536) > BezierCurve(x0: 103, y0: 534, x1: 102, y1: 531, cx0: 103, cy0: 533, cx1: 103, cy1: 532)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 103, y0: 539, x1: 98, y1: 541, cx0: 101, cy0: 540, cx1: 100, cy1: 541) > BezierCurve(x0: 98, y0: 541, x1: 93, y1: 539, cx0: 96, cy0: 541, cx1: 95, cy1: 540) > BezierCurve(x0: 94, y0: 538, x1: 98, y1: 540, cx0: 95, cy0: 539, cx1: 97, cy1: 540) > BezierCurve(x0: 98, y0: 540, x1: 102, y1: 538, cx0: 99, cy0: 540, cx1: 101, cy1: 539)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 93, y0: 539, x1: 92, y1: 534, cx0: 92, cy0: 538, cx1: 92, cy1: 536) > BezierCurve(x0: 92, y0: 534, x1: 93, y1: 530, cx0: 92, cy0: 533, cx1: 92, cy1: 531) > BezierCurve(x0: 94, y0: 531, x1: 93, y1: 534, cx0: 93, cy0: 532, cx1: 93, cy1: 533) > BezierCurve(x0: 93, y0: 534, x1: 94, y1: 538, cx0: 93, cy0: 536, cx1: 93, cy1: 537)) +Shape: rgb(42,42,42) Circle(x: 95, y: 531, r: 3) +Clip: Path (BezierCurve(x0: 297, y0: 534, x1: 302, y1: 529, cx0: 297, cy0: 531, cx1: 299, cy1: 529) > BezierCurve(x0: 302, y0: 529, x1: 307, y1: 534, cx0: 305, cy0: 529, cx1: 307, cy1: 531) > BezierCurve(x0: 307, y0: 534, x1: 302, y1: 540, cx0: 307, cy0: 537, cx1: 305, cy1: 540) > BezierCurve(x0: 302, y0: 540, x1: 297, y1: 534, cx0: 299, cy0: 540, cx1: 297, cy1: 537)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 297, y0: 530, x1: 302, y1: 528, cx0: 299, cy0: 529, cx1: 300, cy1: 528) > BezierCurve(x0: 302, y0: 528, x1: 307, y1: 530, cx0: 304, cy0: 528, cx1: 305, cy1: 529) > BezierCurve(x0: 306, y0: 531, x1: 302, y1: 529, cx0: 305, cy0: 530, cx1: 303, cy1: 529) > BezierCurve(x0: 302, y0: 529, x1: 298, y1: 531, cx0: 301, cy0: 529, cx1: 299, cy1: 530)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 307, y0: 530, x1: 308, y1: 534, cx0: 308, cy0: 531, cx1: 308, cy1: 533) > BezierCurve(x0: 308, y0: 534, x1: 307, y1: 539, cx0: 308, cy0: 536, cx1: 308, cy1: 538) > BezierCurve(x0: 306, y0: 538, x1: 307, y1: 534, cx0: 307, cy0: 537, cx1: 307, cy1: 536) > BezierCurve(x0: 307, y0: 534, x1: 306, y1: 531, cx0: 307, cy0: 533, cx1: 307, cy1: 532)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 307, y0: 539, x1: 302, y1: 541, cx0: 305, cy0: 540, cx1: 304, cy1: 541) > BezierCurve(x0: 302, y0: 541, x1: 297, y1: 539, cx0: 300, cy0: 541, cx1: 299, cy1: 540) > BezierCurve(x0: 298, y0: 538, x1: 302, y1: 540, cx0: 299, cy0: 539, cx1: 301, cy1: 540) > BezierCurve(x0: 302, y0: 540, x1: 306, y1: 538, cx0: 303, cy0: 540, cx1: 305, cy1: 539)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 297, y0: 539, x1: 296, y1: 534, cx0: 296, cy0: 538, cx1: 296, cy1: 536) > BezierCurve(x0: 296, y0: 534, x1: 297, y1: 530, cx0: 296, cy0: 533, cx1: 296, cy1: 531) > BezierCurve(x0: 298, y0: 531, x1: 297, y1: 534, cx0: 297, cy0: 532, cx1: 297, cy1: 533) > BezierCurve(x0: 297, y0: 534, x1: 298, y1: 538, cx0: 297, cy0: 536, cx1: 297, cy1: 537)) +Clip: Path (BezierCurve(x0: 427, y0: 441, x1: 526, y1: 342, cx0: 427, cy0: 386, cx1: 471, cy1: 342) > BezierCurve(x0: 526, y0: 342, x1: 625, y1: 441, cx0: 581, cy0: 342, cx1: 625, cy1: 386) > BezierCurve(x0: 625, y0: 441, x1: 526, y1: 540, cx0: 625, cy0: 495, cx1: 581, cy1: 540) > BezierCurve(x0: 526, y0: 540, x1: 427, y1: 441, cx0: 471, cy0: 540, cx1: 427, cy1: 495)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 455, y0: 370, x1: 526, y1: 341, cx0: 473, cy0: 352, cx1: 498, cy1: 341) > BezierCurve(x0: 526, y0: 341, x1: 597, y1: 370, cx0: 554, cy0: 341, cx1: 579, cy1: 352) > BezierCurve(x0: 596, y0: 371, x1: 526, y1: 342, cx0: 578, cy0: 353, cx1: 553, cy1: 342) > BezierCurve(x0: 526, y0: 342, x1: 456, y1: 371, cx0: 499, cy0: 342, cx1: 474, cy1: 353)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 597, y0: 370, x1: 626, y1: 441, cx0: 615, cy0: 388, cx1: 626, cy1: 413) > BezierCurve(x0: 626, y0: 441, x1: 597, y1: 512, cx0: 626, cy0: 468, cx1: 615, cy1: 493) > BezierCurve(x0: 596, y0: 511, x1: 625, y1: 441, cx0: 614, cy0: 493, cx1: 625, cy1: 468) > BezierCurve(x0: 625, y0: 441, x1: 596, y1: 371, cx0: 625, cy0: 413, cx1: 614, cy1: 389)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 597, y0: 512, x1: 526, y1: 541, cx0: 579, cy0: 530, cx1: 554, cy1: 541) > BezierCurve(x0: 526, y0: 541, x1: 455, y1: 512, cx0: 498, cy0: 541, cx1: 473, cy1: 530) > BezierCurve(x0: 456, y0: 511, x1: 526, y1: 540, cx0: 474, cy0: 529, cx1: 499, cy1: 540) > BezierCurve(x0: 526, y0: 540, x1: 596, y1: 511, cx0: 553, cy0: 540, cx1: 578, cy1: 529)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 455, y0: 512, x1: 426, y1: 441, cx0: 437, cy0: 493, cx1: 426, cy1: 468) > BezierCurve(x0: 426, y0: 441, x1: 455, y1: 370, cx0: 426, cy0: 413, cx1: 437, cy1: 388) > BezierCurve(x0: 456, y0: 371, x1: 427, y1: 441, cx0: 438, cy0: 389, cx1: 427, cy1: 413) > BezierCurve(x0: 427, y0: 441, x1: 456, y1: 511, cx0: 427, cy0: 468, cx1: 438, cy1: 493)) +Clip: Path (BezierCurve(x0: 19, y0: 661, x1: 118, y1: 562, cx0: 19, cy0: 606, cx1: 63, cy1: 562) > BezierCurve(x0: 118, y0: 562, x1: 217, y1: 661, cx0: 173, cy0: 562, cx1: 217, cy1: 606) > BezierCurve(x0: 217, y0: 661, x1: 118, y1: 760, cx0: 217, cy0: 715, cx1: 173, cy1: 760) > BezierCurve(x0: 118, y0: 760, x1: 19, y1: 661, cx0: 63, cy0: 760, cx1: 19, cy1: 715)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 47, y0: 590, x1: 118, y1: 561, cx0: 65, cy0: 572, cx1: 90, cy1: 561) > BezierCurve(x0: 118, y0: 561, x1: 189, y1: 590, cx0: 146, cy0: 561, cx1: 171, cy1: 572) > BezierCurve(x0: 188, y0: 591, x1: 118, y1: 562, cx0: 170, cy0: 573, cx1: 145, cy1: 562) > BezierCurve(x0: 118, y0: 562, x1: 48, y1: 591, cx0: 91, cy0: 562, cx1: 66, cy1: 573)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 189, y0: 590, x1: 218, y1: 661, cx0: 207, cy0: 608, cx1: 218, cy1: 633) > BezierCurve(x0: 218, y0: 661, x1: 189, y1: 732, cx0: 218, cy0: 688, cx1: 207, cy1: 713) > BezierCurve(x0: 188, y0: 731, x1: 217, y1: 661, cx0: 206, cy0: 713, cx1: 217, cy1: 688) > BezierCurve(x0: 217, y0: 661, x1: 188, y1: 591, cx0: 217, cy0: 633, cx1: 206, cy1: 609)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 189, y0: 732, x1: 118, y1: 761, cx0: 171, cy0: 750, cx1: 146, cy1: 761) > BezierCurve(x0: 118, y0: 761, x1: 47, y1: 732, cx0: 90, cy0: 761, cx1: 65, cy1: 750) > BezierCurve(x0: 48, y0: 731, x1: 118, y1: 760, cx0: 66, cy0: 749, cx1: 91, cy1: 760) > BezierCurve(x0: 118, y0: 760, x1: 188, y1: 731, cx0: 145, cy0: 760, cx1: 170, cy1: 749)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 47, y0: 732, x1: 18, y1: 661, cx0: 29, cy0: 713, cx1: 18, cy1: 688) > BezierCurve(x0: 18, y0: 661, x1: 47, y1: 590, cx0: 18, cy0: 633, cx1: 29, cy1: 608) > BezierCurve(x0: 48, y0: 591, x1: 19, y1: 661, cx0: 30, cy0: 609, cx1: 19, cy1: 633) > BezierCurve(x0: 19, y0: 661, x1: 48, y1: 731, cx0: 19, cy0: 688, cx1: 30, cy1: 713)) +Shape: rgb(42,42,42) Circle(x: 68, y: 611, r: 50) +Clip: Path (BezierCurve(x0: 243, y0: 751, x1: 245, y1: 749, cx0: 243, cy0: 750, cx1: 244, cy1: 749) > BezierCurve(x0: 252, y0: 749, x1: 254, y1: 751, cx0: 253, cy0: 749, cx1: 254, cy1: 750) > BezierCurve(x0: 254, y0: 758, x1: 252, y1: 760, cx0: 254, cy0: 759, cx1: 253, cy1: 760) > BezierCurve(x0: 245, y0: 760, x1: 243, y1: 758, cx0: 244, cy0: 760, cx1: 243, cy1: 759)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 749, x1: 245, y1: 748, cx0: 243, cy0: 748, cx1: 244, cy1: 748) > BezierCurve(x0: 252, y0: 748, x1: 254, y1: 749, cx0: 253, cy0: 748, cx1: 253, cy1: 748) > BezierCurve(x0: 253, y0: 750, x1: 252, y1: 749, cx0: 253, cy0: 749, cx1: 252, cy1: 749) > BezierCurve(x0: 245, y0: 749, x1: 244, y1: 750, cx0: 244, cy0: 749, cx1: 244, cy1: 749)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 254, y0: 749, x1: 255, y1: 751, cx0: 254, cy0: 749, cx1: 255, cy1: 750) > BezierCurve(x0: 255, y0: 758, x1: 254, y1: 760, cx0: 255, cy0: 759, cx1: 254, cy1: 759) > BezierCurve(x0: 253, y0: 759, x1: 254, y1: 758, cx0: 254, cy0: 759, cx1: 254, cy1: 758) > BezierCurve(x0: 254, y0: 751, x1: 253, y1: 750, cx0: 254, cy0: 750, cx1: 254, cy1: 750)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 254, y0: 760, x1: 252, y1: 761, cx0: 253, cy0: 760, cx1: 253, cy1: 761) > BezierCurve(x0: 245, y0: 761, x1: 243, y1: 760, cx0: 244, cy0: 761, cx1: 243, cy1: 760) > BezierCurve(x0: 244, y0: 759, x1: 245, y1: 760, cx0: 244, cy0: 760, cx1: 244, cy1: 760) > BezierCurve(x0: 252, y0: 760, x1: 253, y1: 759, cx0: 252, cy0: 760, cx1: 253, cy1: 760)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 760, x1: 242, y1: 758, cx0: 242, cy0: 759, cx1: 242, cy1: 759) > BezierCurve(x0: 242, y0: 751, x1: 243, y1: 749, cx0: 242, cy0: 750, cx1: 242, cy1: 749) > BezierCurve(x0: 244, y0: 750, x1: 243, y1: 751, cx0: 243, cy0: 750, cx1: 243, cy1: 750) > BezierCurve(x0: 243, y0: 758, x1: 244, y1: 759, cx0: 243, cy0: 758, cx1: 243, cy1: 759)) +Clip: Path (BezierCurve(x0: 317, y0: 751, x1: 319, y1: 749, cx0: 317, cy0: 750, cx1: 317, cy1: 749) > BezierCurve(x0: 325, y0: 749, x1: 327, y1: 751, cx0: 327, cy0: 749, cx1: 327, cy1: 750) > BezierCurve(x0: 327, y0: 758, x1: 325, y1: 760, cx0: 327, cy0: 759, cx1: 327, cy1: 760) > BezierCurve(x0: 319, y0: 760, x1: 317, y1: 758, cx0: 317, cy0: 760, cx1: 317, cy1: 759)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 749, x1: 319, y1: 748, cx0: 317, cy0: 748, cx1: 318, cy1: 748) > BezierCurve(x0: 325, y0: 748, x1: 328, y1: 749, cx0: 326, cy0: 748, cx1: 327, cy1: 748) > BezierCurve(x0: 327, y0: 750, x1: 325, y1: 749, cx0: 326, cy0: 749, cx1: 326, cy1: 749) > BezierCurve(x0: 319, y0: 749, x1: 317, y1: 750, cx0: 318, cy0: 749, cx1: 318, cy1: 749)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 328, y0: 749, x1: 328, y1: 751, cx0: 328, cy0: 749, cx1: 328, cy1: 750) > BezierCurve(x0: 328, y0: 758, x1: 328, y1: 760, cx0: 328, cy0: 759, cx1: 328, cy1: 759) > BezierCurve(x0: 327, y0: 759, x1: 327, y1: 758, cx0: 327, cy0: 759, cx1: 327, cy1: 758) > BezierCurve(x0: 327, y0: 751, x1: 327, y1: 750, cx0: 327, cy0: 750, cx1: 327, cy1: 750)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 328, y0: 760, x1: 325, y1: 761, cx0: 327, cy0: 760, cx1: 326, cy1: 761) > BezierCurve(x0: 319, y0: 761, x1: 316, y1: 760, cx0: 318, cy0: 761, cx1: 317, cy1: 760) > BezierCurve(x0: 317, y0: 759, x1: 319, y1: 760, cx0: 318, cy0: 760, cx1: 318, cy1: 760) > BezierCurve(x0: 325, y0: 760, x1: 327, y1: 759, cx0: 326, cy0: 760, cx1: 326, cy1: 760)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 760, x1: 316, y1: 758, cx0: 316, cy0: 759, cx1: 316, cy1: 759) > BezierCurve(x0: 316, y0: 751, x1: 316, y1: 749, cx0: 316, cy0: 750, cx1: 316, cy1: 749) > BezierCurve(x0: 317, y0: 750, x1: 317, y1: 751, cx0: 317, cy0: 750, cx1: 317, cy1: 750) > BezierCurve(x0: 317, y0: 758, x1: 317, y1: 759, cx0: 317, cy0: 758, cx1: 317, cy1: 759)) +Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial + [318, 760]: ✔ +Clip: Path (BezierCurve(x0: 521, y0: 751, x1: 523, y1: 749, cx0: 521, cy0: 750, cx1: 521, cy1: 749) > BezierCurve(x0: 529, y0: 749, x1: 531, y1: 751, cx0: 531, cy0: 749, cx1: 531, cy1: 750) > BezierCurve(x0: 531, y0: 758, x1: 529, y1: 760, cx0: 531, cy0: 759, cx1: 531, cy1: 760) > BezierCurve(x0: 523, y0: 760, x1: 521, y1: 758, cx0: 521, cy0: 760, cx1: 521, cy1: 759)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 520, y0: 749, x1: 523, y1: 748, cx0: 521, cy0: 748, cx1: 522, cy1: 748) > BezierCurve(x0: 529, y0: 748, x1: 532, y1: 749, cx0: 530, cy0: 748, cx1: 531, cy1: 748) > BezierCurve(x0: 531, y0: 750, x1: 529, y1: 749, cx0: 530, cy0: 749, cx1: 530, cy1: 749) > BezierCurve(x0: 523, y0: 749, x1: 521, y1: 750, cx0: 522, cy0: 749, cx1: 522, cy1: 749)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 532, y0: 749, x1: 532, y1: 751, cx0: 532, cy0: 749, cx1: 532, cy1: 750) > BezierCurve(x0: 532, y0: 758, x1: 532, y1: 760, cx0: 532, cy0: 759, cx1: 532, cy1: 759) > BezierCurve(x0: 531, y0: 759, x1: 531, y1: 758, cx0: 531, cy0: 759, cx1: 531, cy1: 758) > BezierCurve(x0: 531, y0: 751, x1: 531, y1: 750, cx0: 531, cy0: 750, cx1: 531, cy1: 750)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 532, y0: 760, x1: 529, y1: 761, cx0: 531, cy0: 760, cx1: 530, cy1: 761) > BezierCurve(x0: 523, y0: 761, x1: 520, y1: 760, cx0: 522, cy0: 761, cx1: 521, cy1: 760) > BezierCurve(x0: 521, y0: 759, x1: 523, y1: 760, cx0: 522, cy0: 760, cx1: 522, cy1: 760) > BezierCurve(x0: 529, y0: 760, x1: 531, y1: 759, cx0: 530, cy0: 760, cx1: 530, cy1: 760)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 520, y0: 760, x1: 520, y1: 758, cx0: 520, cy0: 759, cx1: 520, cy1: 759) > BezierCurve(x0: 520, y0: 751, x1: 520, y1: 749, cx0: 520, cy0: 750, cx1: 520, cy1: 749) > BezierCurve(x0: 521, y0: 750, x1: 521, y1: 751, cx0: 521, cy0: 750, cx1: 521, cy1: 750) > BezierCurve(x0: 521, y0: 758, x1: 521, y1: 759, cx0: 521, cy0: 758, cx1: 521, cy1: 759)) +Clip: Path (BezierCurve(x0: 19, y0: 784, x1: 21, y1: 782, cx0: 19, cy0: 783, cx1: 20, cy1: 782) > BezierCurve(x0: 215, y0: 782, x1: 217, y1: 784, cx0: 216, cy0: 782, cx1: 217, cy1: 783) > BezierCurve(x0: 217, y0: 978, x1: 215, y1: 980, cx0: 217, cy0: 979, cx1: 216, cy1: 980) > BezierCurve(x0: 21, y0: 980, x1: 19, y1: 978, cx0: 20, cy0: 980, cx1: 19, cy1: 979)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 782, x1: 21, y1: 781, cx0: 19, cy0: 781, cx1: 20, cy1: 781) > BezierCurve(x0: 215, y0: 781, x1: 217, y1: 782, cx0: 216, cy0: 781, cx1: 217, cy1: 781) > BezierCurve(x0: 216, y0: 782, x1: 215, y1: 782, cx0: 216, cy0: 782, cx1: 216, cy1: 782) > BezierCurve(x0: 21, y0: 782, x1: 20, y1: 782, cx0: 20, cy0: 782, cx1: 20, cy1: 782)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 217, y0: 782, x1: 218, y1: 784, cx0: 218, cy0: 782, cx1: 218, cy1: 783) > BezierCurve(x0: 218, y0: 978, x1: 217, y1: 980, cx0: 218, cy0: 979, cx1: 218, cy1: 979) > BezierCurve(x0: 216, y0: 979, x1: 217, y1: 978, cx0: 217, cy0: 979, cx1: 217, cy1: 978) > BezierCurve(x0: 217, y0: 784, x1: 216, y1: 782, cx0: 217, cy0: 783, cx1: 217, cy1: 783)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 217, y0: 980, x1: 215, y1: 981, cx0: 217, cy0: 980, cx1: 216, cy1: 981) > BezierCurve(x0: 21, y0: 981, x1: 19, y1: 980, cx0: 20, cy0: 981, cx1: 19, cy1: 980) > BezierCurve(x0: 20, y0: 979, x1: 21, y1: 980, cx0: 20, cy0: 980, cx1: 20, cy1: 980) > BezierCurve(x0: 215, y0: 980, x1: 216, y1: 979, cx0: 216, cy0: 980, cx1: 216, cy1: 980)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 980, x1: 18, y1: 978, cx0: 18, cy0: 979, cx1: 18, cy1: 979) > BezierCurve(x0: 18, y0: 784, x1: 19, y1: 782, cx0: 18, cy0: 783, cx1: 18, cy1: 782) > BezierCurve(x0: 20, y0: 782, x1: 19, y1: 784, cx0: 19, cy0: 783, cx1: 19, cy1: 783) > BezierCurve(x0: 19, y0: 978, x1: 20, y1: 979, cx0: 19, cy0: 978, cx1: 19, cy1: 979)) +Clip: Path (BezierCurve(x0: 243, y0: 784, x1: 245, y1: 782, cx0: 243, cy0: 783, cx1: 244, cy1: 782) > BezierCurve(x0: 439, y0: 782, x1: 441, y1: 784, cx0: 440, cy0: 782, cx1: 441, cy1: 783) > BezierCurve(x0: 441, y0: 978, x1: 439, y1: 980, cx0: 441, cy0: 979, cx1: 440, cy1: 980) > BezierCurve(x0: 245, y0: 980, x1: 243, y1: 978, cx0: 244, cy0: 980, cx1: 243, cy1: 979)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 782, x1: 245, y1: 781, cx0: 243, cy0: 781, cx1: 244, cy1: 781) > BezierCurve(x0: 439, y0: 781, x1: 441, y1: 782, cx0: 440, cy0: 781, cx1: 441, cy1: 781) > BezierCurve(x0: 440, y0: 782, x1: 439, y1: 782, cx0: 440, cy0: 782, cx1: 440, cy1: 782) > BezierCurve(x0: 245, y0: 782, x1: 244, y1: 782, cx0: 244, cy0: 782, cx1: 244, cy1: 782)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 441, y0: 782, x1: 442, y1: 784, cx0: 442, cy0: 782, cx1: 442, cy1: 783) > BezierCurve(x0: 442, y0: 978, x1: 441, y1: 980, cx0: 442, cy0: 979, cx1: 442, cy1: 979) > BezierCurve(x0: 440, y0: 979, x1: 441, y1: 978, cx0: 441, cy0: 979, cx1: 441, cy1: 978) > BezierCurve(x0: 441, y0: 784, x1: 440, y1: 782, cx0: 441, cy0: 783, cx1: 441, cy1: 783)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 441, y0: 980, x1: 439, y1: 981, cx0: 441, cy0: 980, cx1: 440, cy1: 981) > BezierCurve(x0: 245, y0: 981, x1: 243, y1: 980, cx0: 244, cy0: 981, cx1: 243, cy1: 980) > BezierCurve(x0: 244, y0: 979, x1: 245, y1: 980, cx0: 244, cy0: 980, cx1: 244, cy1: 980) > BezierCurve(x0: 439, y0: 980, x1: 440, y1: 979, cx0: 440, cy0: 980, cx1: 440, cy1: 980)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 980, x1: 242, y1: 978, cx0: 242, cy0: 979, cx1: 242, cy1: 979) > BezierCurve(x0: 242, y0: 784, x1: 243, y1: 782, cx0: 242, cy0: 783, cx1: 242, cy1: 782) > BezierCurve(x0: 244, y0: 782, x1: 243, y1: 784, cx0: 243, cy0: 783, cx1: 243, cy1: 783) > BezierCurve(x0: 243, y0: 978, x1: 244, y1: 979, cx0: 243, cy0: 978, cx1: 243, cy1: 979)) +Text: rgb(42,42,42) normal normal 400 197px Arial + [275, 980]: ✔ +Transform: (61, 534) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 56, y0: 534, x1: 61, y1: 529, cx0: 56, cy0: 531, cx1: 58, cy1: 529) > BezierCurve(x0: 61, y0: 529, x1: 67, y1: 534, cx0: 64, cy0: 529, cx1: 67, cy1: 531) > BezierCurve(x0: 67, y0: 534, x1: 61, y1: 540, cx0: 67, cy0: 537, cx1: 64, cy1: 540) > BezierCurve(x0: 61, y0: 540, x1: 56, y1: 534, cx0: 58, cy0: 540, cx1: 56, cy1: 537)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 57, y0: 530, x1: 61, y1: 528, cx0: 58, cy0: 529, cx1: 59, cy1: 528) > BezierCurve(x0: 61, y0: 528, x1: 66, y1: 530, cx0: 63, cy0: 528, cx1: 65, cy1: 529) > BezierCurve(x0: 65, y0: 531, x1: 61, y1: 529, cx0: 64, cy0: 530, cx1: 63, cy1: 529) > BezierCurve(x0: 61, y0: 529, x1: 57, y1: 531, cx0: 60, cy0: 529, cx1: 58, cy1: 530)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 66, y0: 530, x1: 68, y1: 534, cx0: 67, cy0: 531, cx1: 68, cy1: 533) > BezierCurve(x0: 68, y0: 534, x1: 66, y1: 539, cx0: 68, cy0: 536, cx1: 67, cy1: 538) > BezierCurve(x0: 65, y0: 538, x1: 67, y1: 534, cx0: 66, cy0: 537, cx1: 67, cy1: 536) > BezierCurve(x0: 67, y0: 534, x1: 65, y1: 531, cx0: 67, cy0: 533, cx1: 66, cy1: 532)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 66, y0: 539, x1: 61, y1: 541, cx0: 65, cy0: 540, cx1: 63, cy1: 541) > BezierCurve(x0: 61, y0: 541, x1: 57, y1: 539, cx0: 59, cy0: 541, cx1: 58, cy1: 540) > BezierCurve(x0: 57, y0: 538, x1: 61, y1: 540, cx0: 58, cy0: 539, cx1: 60, cy1: 540) > BezierCurve(x0: 61, y0: 540, x1: 65, y1: 538, cx0: 63, cy0: 540, cx1: 64, cy1: 539)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 57, y0: 539, x1: 55, y1: 534, cx0: 56, cy0: 538, cx1: 55, cy1: 536) > BezierCurve(x0: 55, y0: 534, x1: 57, y1: 530, cx0: 55, cy0: 533, cx1: 56, cy1: 531) > BezierCurve(x0: 57, y0: 531, x1: 56, y1: 534, cx0: 56, cy0: 532, cx1: 56, cy1: 533) > BezierCurve(x0: 56, y0: 534, x1: 57, y1: 538, cx0: 56, cy0: 536, cx1: 56, cy1: 537)) +Transform: (135, 534) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 129, y0: 534, x1: 135, y1: 529, cx0: 129, cy0: 531, cx1: 132, cy1: 529) > BezierCurve(x0: 135, y0: 529, x1: 140, y1: 534, cx0: 138, cy0: 529, cx1: 140, cy1: 531) > BezierCurve(x0: 140, y0: 534, x1: 135, y1: 540, cx0: 140, cy0: 537, cx1: 138, cy1: 540) > BezierCurve(x0: 135, y0: 540, x1: 129, y1: 534, cx0: 132, cy0: 540, cx1: 129, cy1: 537)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 130, y0: 530, x1: 135, y1: 528, cx0: 131, cy0: 529, cx1: 133, cy1: 528) > BezierCurve(x0: 135, y0: 528, x1: 139, y1: 530, cx0: 137, cy0: 528, cx1: 138, cy1: 529) > BezierCurve(x0: 139, y0: 531, x1: 135, y1: 529, cx0: 138, cy0: 530, cx1: 136, cy1: 529) > BezierCurve(x0: 135, y0: 529, x1: 131, y1: 531, cx0: 133, cy0: 529, cx1: 132, cy1: 530)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 139, y0: 530, x1: 141, y1: 534, cx0: 140, cy0: 531, cx1: 141, cy1: 533) > BezierCurve(x0: 141, y0: 534, x1: 139, y1: 539, cx0: 141, cy0: 536, cx1: 140, cy1: 538) > BezierCurve(x0: 139, y0: 538, x1: 140, y1: 534, cx0: 140, cy0: 537, cx1: 140, cy1: 536) > BezierCurve(x0: 140, y0: 534, x1: 139, y1: 531, cx0: 140, cy0: 533, cx1: 140, cy1: 532)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 139, y0: 539, x1: 135, y1: 541, cx0: 138, cy0: 540, cx1: 137, cy1: 541) > BezierCurve(x0: 135, y0: 541, x1: 130, y1: 539, cx0: 133, cy0: 541, cx1: 131, cy1: 540) > BezierCurve(x0: 131, y0: 538, x1: 135, y1: 540, cx0: 132, cy0: 539, cx1: 133, cy1: 540) > BezierCurve(x0: 135, y0: 540, x1: 139, y1: 538, cx0: 136, cy0: 540, cx1: 138, cy1: 539)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 130, y0: 539, x1: 128, y1: 534, cx0: 129, cy0: 538, cx1: 128, cy1: 536) > BezierCurve(x0: 128, y0: 534, x1: 130, y1: 530, cx0: 128, cy0: 533, cx1: 129, cy1: 531) > BezierCurve(x0: 131, y0: 531, x1: 129, y1: 534, cx0: 130, cy0: 532, cx1: 129, cy1: 533) > BezierCurve(x0: 129, y0: 534, x1: 131, y1: 538, cx0: 129, cy0: 536, cx1: 130, cy1: 537)) + Shape: rgb(42,42,42) Circle(x: 132, y: 531, r: 3) +Transform: (172, 534) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 166, y0: 534, x1: 172, y1: 529, cx0: 166, cy0: 531, cx1: 169, cy1: 529) > BezierCurve(x0: 172, y0: 529, x1: 177, y1: 534, cx0: 175, cy0: 529, cx1: 177, cy1: 531) > BezierCurve(x0: 177, y0: 534, x1: 172, y1: 540, cx0: 177, cy0: 537, cx1: 175, cy1: 540) > BezierCurve(x0: 172, y0: 540, x1: 166, y1: 534, cx0: 169, cy0: 540, cx1: 166, cy1: 537)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 167, y0: 530, x1: 172, y1: 528, cx0: 168, cy0: 529, cx1: 170, cy1: 528) > BezierCurve(x0: 172, y0: 528, x1: 176, y1: 530, cx0: 173, cy0: 528, cx1: 175, cy1: 529) > BezierCurve(x0: 175, y0: 531, x1: 172, y1: 529, cx0: 174, cy0: 530, cx1: 173, cy1: 529) > BezierCurve(x0: 172, y0: 529, x1: 168, y1: 531, cx0: 170, cy0: 529, cx1: 169, cy1: 530)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 176, y0: 530, x1: 178, y1: 534, cx0: 177, cy0: 531, cx1: 178, cy1: 533) > BezierCurve(x0: 178, y0: 534, x1: 176, y1: 539, cx0: 178, cy0: 536, cx1: 177, cy1: 538) > BezierCurve(x0: 175, y0: 538, x1: 177, y1: 534, cx0: 176, cy0: 537, cx1: 177, cy1: 536) > BezierCurve(x0: 177, y0: 534, x1: 175, y1: 531, cx0: 177, cy0: 533, cx1: 176, cy1: 532)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 176, y0: 539, x1: 172, y1: 541, cx0: 175, cy0: 540, cx1: 173, cy1: 541) > BezierCurve(x0: 172, y0: 541, x1: 167, y1: 539, cx0: 170, cy0: 541, cx1: 168, cy1: 540) > BezierCurve(x0: 168, y0: 538, x1: 172, y1: 540, cx0: 169, cy0: 539, cx1: 170, cy1: 540) > BezierCurve(x0: 172, y0: 540, x1: 175, y1: 538, cx0: 173, cy0: 540, cx1: 174, cy1: 539)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 167, y0: 539, x1: 165, y1: 534, cx0: 166, cy0: 538, cx1: 165, cy1: 536) > BezierCurve(x0: 165, y0: 534, x1: 167, y1: 530, cx0: 165, cy0: 533, cx1: 166, cy1: 531) > BezierCurve(x0: 168, y0: 531, x1: 166, y1: 534, cx0: 167, cy0: 532, cx1: 166, cy1: 533) > BezierCurve(x0: 166, y0: 534, x1: 168, y1: 538, cx0: 166, cy0: 536, cx1: 167, cy1: 537)) +Transform: (285, 754) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 280, y0: 751, x1: 282, y1: 749, cx0: 280, cy0: 750, cx1: 281, cy1: 749) > BezierCurve(x0: 289, y0: 749, x1: 291, y1: 751, cx0: 290, cy0: 749, cx1: 291, cy1: 750) > BezierCurve(x0: 291, y0: 758, x1: 289, y1: 760, cx0: 291, cy0: 759, cx1: 290, cy1: 760) > BezierCurve(x0: 282, y0: 760, x1: 280, y1: 758, cx0: 281, cy0: 760, cx1: 280, cy1: 759)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 280, y0: 749, x1: 282, y1: 748, cx0: 280, cy0: 748, cx1: 281, cy1: 748) > BezierCurve(x0: 289, y0: 748, x1: 291, y1: 749, cx0: 289, cy0: 748, cx1: 290, cy1: 748) > BezierCurve(x0: 290, y0: 750, x1: 289, y1: 749, cx0: 290, cy0: 749, cx1: 289, cy1: 749) > BezierCurve(x0: 282, y0: 749, x1: 280, y1: 750, cx0: 281, cy0: 749, cx1: 281, cy1: 749)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 291, y0: 749, x1: 292, y1: 751, cx0: 291, cy0: 749, cx1: 292, cy1: 750) > BezierCurve(x0: 292, y0: 758, x1: 291, y1: 760, cx0: 292, cy0: 759, cx1: 291, cy1: 759) > BezierCurve(x0: 290, y0: 759, x1: 291, y1: 758, cx0: 290, cy0: 759, cx1: 291, cy1: 758) > BezierCurve(x0: 291, y0: 751, x1: 290, y1: 750, cx0: 291, cy0: 750, cx1: 290, cy1: 750)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 291, y0: 760, x1: 289, y1: 761, cx0: 290, cy0: 760, cx1: 289, cy1: 761) > BezierCurve(x0: 282, y0: 761, x1: 280, y1: 760, cx0: 281, cy0: 761, cx1: 280, cy1: 760) > BezierCurve(x0: 280, y0: 759, x1: 282, y1: 760, cx0: 281, cy0: 760, cx1: 281, cy1: 760) > BezierCurve(x0: 289, y0: 760, x1: 290, y1: 759, cx0: 289, cy0: 760, cx1: 290, cy1: 760)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 280, y0: 760, x1: 279, y1: 758, cx0: 279, cy0: 759, cx1: 279, cy1: 759) > BezierCurve(x0: 279, y0: 751, x1: 280, y1: 749, cx0: 279, cy0: 750, cx1: 279, cy1: 749) > BezierCurve(x0: 280, y0: 750, x1: 280, y1: 751, cx0: 280, cy0: 750, cx1: 280, cy1: 750) > BezierCurve(x0: 280, y0: 758, x1: 280, y1: 759, cx0: 280, cy0: 758, cx1: 280, cy1: 759)) +Transform: (359, 754) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 353, y0: 751, x1: 355, y1: 749, cx0: 353, cy0: 750, cx1: 354, cy1: 749) > BezierCurve(x0: 362, y0: 749, x1: 364, y1: 751, cx0: 363, cy0: 749, cx1: 364, cy1: 750) > BezierCurve(x0: 364, y0: 758, x1: 362, y1: 760, cx0: 364, cy0: 759, cx1: 363, cy1: 760) > BezierCurve(x0: 355, y0: 760, x1: 353, y1: 758, cx0: 354, cy0: 760, cx1: 353, cy1: 759)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 353, y0: 749, x1: 355, y1: 748, cx0: 354, cy0: 748, cx1: 355, cy1: 748) > BezierCurve(x0: 362, y0: 748, x1: 364, y1: 749, cx0: 363, cy0: 748, cx1: 364, cy1: 748) > BezierCurve(x0: 364, y0: 750, x1: 362, y1: 749, cx0: 363, cy0: 749, cx1: 363, cy1: 749) > BezierCurve(x0: 355, y0: 749, x1: 354, y1: 750, cx0: 355, cy0: 749, cx1: 354, cy1: 749)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 364, y0: 749, x1: 365, y1: 751, cx0: 365, cy0: 749, cx1: 365, cy1: 750) > BezierCurve(x0: 365, y0: 758, x1: 364, y1: 760, cx0: 365, cy0: 759, cx1: 365, cy1: 759) > BezierCurve(x0: 364, y0: 759, x1: 364, y1: 758, cx0: 364, cy0: 759, cx1: 364, cy1: 758) > BezierCurve(x0: 364, y0: 751, x1: 364, y1: 750, cx0: 364, cy0: 750, cx1: 364, cy1: 750)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 364, y0: 760, x1: 362, y1: 761, cx0: 364, cy0: 760, cx1: 363, cy1: 761) > BezierCurve(x0: 355, y0: 761, x1: 353, y1: 760, cx0: 355, cy0: 761, cx1: 354, cy1: 760) > BezierCurve(x0: 354, y0: 759, x1: 355, y1: 760, cx0: 354, cy0: 760, cx1: 355, cy1: 760) > BezierCurve(x0: 362, y0: 760, x1: 364, y1: 759, cx0: 363, cy0: 760, cx1: 363, cy1: 760)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 353, y0: 760, x1: 352, y1: 758, cx0: 353, cy0: 759, cx1: 352, cy1: 759) > BezierCurve(x0: 352, y0: 751, x1: 353, y1: 749, cx0: 352, cy0: 750, cx1: 353, cy1: 749) > BezierCurve(x0: 354, y0: 750, x1: 353, y1: 751, cx0: 354, cy0: 750, cx1: 353, cy1: 750) > BezierCurve(x0: 353, y0: 758, x1: 354, y1: 759, cx0: 353, cy0: 758, cx1: 354, cy1: 759)) + Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial + [355, 760]: ✔ +Transform: (396, 754) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 390, y0: 751, x1: 392, y1: 749, cx0: 390, cy0: 750, cx1: 391, cy1: 749) > BezierCurve(x0: 399, y0: 749, x1: 401, y1: 751, cx0: 400, cy0: 749, cx1: 401, cy1: 750) > BezierCurve(x0: 401, y0: 758, x1: 399, y1: 760, cx0: 401, cy0: 759, cx1: 400, cy1: 760) > BezierCurve(x0: 392, y0: 760, x1: 390, y1: 758, cx0: 391, cy0: 760, cx1: 390, cy1: 759)) + Fill: rgb(222,222,222) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 390, y0: 749, x1: 392, y1: 748, cx0: 391, cy0: 748, cx1: 391, cy1: 748) > BezierCurve(x0: 399, y0: 748, x1: 401, y1: 749, cx0: 400, cy0: 748, cx1: 401, cy1: 748) > BezierCurve(x0: 400, y0: 750, x1: 399, y1: 749, cx0: 400, cy0: 749, cx1: 400, cy1: 749) > BezierCurve(x0: 392, y0: 749, x1: 391, y1: 750, cx0: 392, cy0: 749, cx1: 391, cy1: 749)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 401, y0: 749, x1: 402, y1: 751, cx0: 402, cy0: 749, cx1: 402, cy1: 750) > BezierCurve(x0: 402, y0: 758, x1: 401, y1: 760, cx0: 402, cy0: 759, cx1: 402, cy1: 759) > BezierCurve(x0: 400, y0: 759, x1: 401, y1: 758, cx0: 401, cy0: 759, cx1: 401, cy1: 758) > BezierCurve(x0: 401, y0: 751, x1: 400, y1: 750, cx0: 401, cy0: 750, cx1: 401, cy1: 750)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 401, y0: 760, x1: 399, y1: 761, cx0: 401, cy0: 760, cx1: 400, cy1: 761) > BezierCurve(x0: 392, y0: 761, x1: 390, y1: 760, cx0: 391, cy0: 761, cx1: 391, cy1: 760) > BezierCurve(x0: 391, y0: 759, x1: 392, y1: 760, cx0: 391, cy0: 760, cx1: 392, cy1: 760) > BezierCurve(x0: 399, y0: 760, x1: 400, y1: 759, cx0: 400, cy0: 760, cx1: 400, cy1: 760)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 390, y0: 760, x1: 389, y1: 758, cx0: 390, cy0: 759, cx1: 389, cy1: 759) > BezierCurve(x0: 389, y0: 751, x1: 390, y1: 749, cx0: 389, cy0: 750, cx1: 390, cy1: 749) > BezierCurve(x0: 391, y0: 750, x1: 390, y1: 751, cx0: 390, cy0: 750, cx1: 390, cy1: 750) > BezierCurve(x0: 390, y0: 758, x1: 391, y1: 759, cx0: 390, cy0: 758, cx1: 390, cy1: 759)) +Clip: Path (BezierCurve(x0: 8, y0: 994, x1: 11, y1: 991, cx0: 8, cy0: 992, cx1: 9, cy1: 991) > BezierCurve(x0: 17, y0: 991, x1: 20, y1: 994, cx0: 19, cy0: 991, cx1: 20, cy1: 992) > BezierCurve(x0: 20, y0: 1000, x1: 17, y1: 1003, cx0: 20, cy0: 1001, cx1: 19, cy1: 1003) > BezierCurve(x0: 11, y0: 1003, x1: 8, y1: 1000, cx0: 9, cy0: 1003, cx1: 8, cy1: 1001)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 992, x1: 11, y1: 991, cx0: 9, cy0: 991, cx1: 10, cy1: 991) > BezierCurve(x0: 17, y0: 991, x1: 19, y1: 992, cx0: 18, cy0: 991, cx1: 19, cy1: 991) > BezierCurve(x0: 18, y0: 992, x1: 17, y1: 992, cx0: 18, cy0: 992, cx1: 18, cy1: 992) > BezierCurve(x0: 11, y0: 992, x1: 10, y1: 992, cx0: 10, cy0: 992, cx1: 10, cy1: 992)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 992, x1: 20, y1: 994, cx0: 20, cy0: 992, cx1: 20, cy1: 993) > BezierCurve(x0: 20, y0: 1000, x1: 19, y1: 1002, cx0: 20, cy0: 1001, cx1: 20, cy1: 1001) > BezierCurve(x0: 18, y0: 1001, x1: 19, y1: 1000, cx0: 19, cy0: 1001, cx1: 19, cy1: 1000) > BezierCurve(x0: 19, y0: 994, x1: 18, y1: 992, cx0: 19, cy0: 993, cx1: 19, cy1: 993)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 1002, x1: 17, y1: 1003, cx0: 19, cy0: 1002, cx1: 18, cy1: 1003) > BezierCurve(x0: 11, y0: 1003, x1: 9, y1: 1002, cx0: 10, cy0: 1003, cx1: 9, cy1: 1002) > BezierCurve(x0: 10, y0: 1001, x1: 11, y1: 1002, cx0: 10, cy0: 1002, cx1: 10, cy1: 1002) > BezierCurve(x0: 17, y0: 1002, x1: 18, y1: 1001, cx0: 18, cy0: 1002, cx1: 18, cy1: 1002)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 1002, x1: 8, y1: 1000, cx0: 8, cy0: 1001, cx1: 8, cy1: 1001) > BezierCurve(x0: 8, y0: 994, x1: 9, y1: 992, cx0: 8, cy0: 993, cx1: 8, cy1: 992) > BezierCurve(x0: 10, y0: 992, x1: 9, y1: 994, cx0: 9, cy0: 993, cx1: 9, cy1: 993) > BezierCurve(x0: 9, y0: 1000, x1: 10, y1: 1001, cx0: 9, cy0: 1000, cx1: 9, cy1: 1001)) \ No newline at end of file diff --git a/tests/cases/iframe.html b/tests/reftests/iframe.html similarity index 100% rename from tests/cases/iframe.html rename to tests/reftests/iframe.html diff --git a/tests/reftests/iframe.txt b/tests/reftests/iframe.txt new file mode 100644 index 000000000..0b6b13cb3 --- /dev/null +++ b/tests/reftests/iframe.txt @@ -0,0 +1,7 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 512, y: 8) > Vector(x: 510, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 512, y: 8) > Vector(x: 512, y: 512) > Vector(x: 510, y: 510) > Vector(x: 510, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 512, y: 512) > Vector(x: 8, y: 512) > Vector(x: 10, y: 510) > Vector(x: 510, y: 510)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 512) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 510)) \ No newline at end of file diff --git a/tests/cases/images/base.html b/tests/reftests/images/base.html similarity index 86% rename from tests/cases/images/base.html rename to tests/reftests/images/base.html index b3c4f5e1d..98dd0a1c8 100644 --- a/tests/cases/images/base.html +++ b/tests/reftests/images/base.html @@ -4,7 +4,11 @@ External content tests - + diff --git a/tests/reftests/images/base.txt b/tests/reftests/images/base.txt new file mode 100644 index 000000000..294dbe216 --- /dev/null +++ b/tests/reftests/images/base.txt @@ -0,0 +1,16 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 700 32px Arial + [8, 22]: External + [143, 22]: image +Text: rgb(0,0,0) normal normal 700 32px Arial + [8, 278]: External + [143, 278]: image + [244, 278]: (using + [350, 278]: + [469, 278]: href) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 80) > Vector(x: 439, y: 80) > Vector(x: 434, y: 85) > Vector(x: 13, y: 85)) +Shape: rgb(0,0,0) Path (Vector(x: 439, y: 80) > Vector(x: 439, y: 253) > Vector(x: 434, y: 248) > Vector(x: 434, y: 85)) +Shape: rgb(0,0,0) Path (Vector(x: 439, y: 253) > Vector(x: 8, y: 253) > Vector(x: 13, y: 248) > Vector(x: 434, y: 248)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 253) > Vector(x: 8, y: 80) > Vector(x: 13, y: 85) > Vector(x: 13, y: 248)) \ No newline at end of file diff --git a/tests/cases/images/canvas.html b/tests/reftests/images/canvas.html similarity index 100% rename from tests/cases/images/canvas.html rename to tests/reftests/images/canvas.html diff --git a/tests/reftests/images/canvas.txt b/tests/reftests/images/canvas.txt new file mode 100644 index 000000000..2cb02a1b1 --- /dev/null +++ b/tests/reftests/images/canvas.txt @@ -0,0 +1,5 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 708, y: 8) > Vector(x: 708, y: 308) > Vector(x: 8, y: 308)) + Draw image: Canvas (source: [0, 0, 300, 150]) (destination: [0, 0, 300, 150]) \ No newline at end of file diff --git a/tests/cases/images/cross-origin.html b/tests/reftests/images/cross-origin.html similarity index 82% rename from tests/cases/images/cross-origin.html rename to tests/reftests/images/cross-origin.html index f29cc6809..23f3ca03b 100644 --- a/tests/cases/images/cross-origin.html +++ b/tests/reftests/images/cross-origin.html @@ -7,6 +7,11 @@ h2cOptions = {useCORS: true, proxy: null}; +

      External image (CORS)

      diff --git a/tests/reftests/images/cross-origin.txt b/tests/reftests/images/cross-origin.txt new file mode 100644 index 000000000..497cfc579 --- /dev/null +++ b/tests/reftests/images/cross-origin.txt @@ -0,0 +1,7 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 700 32px Arial + [8, 22]: External + [143, 22]: image + [244, 22]: (CORS) \ No newline at end of file diff --git a/tests/cases/images/empty.html b/tests/reftests/images/empty.html similarity index 86% rename from tests/cases/images/empty.html rename to tests/reftests/images/empty.html index b22cf7924..cdfe35604 100644 --- a/tests/cases/images/empty.html +++ b/tests/reftests/images/empty.html @@ -4,6 +4,11 @@ Image tests + Image without src attribute, should not crash: diff --git a/tests/reftests/images/empty.txt b/tests/reftests/images/empty.txt new file mode 100644 index 000000000..48fcd6013 --- /dev/null +++ b/tests/reftests/images/empty.txt @@ -0,0 +1,32 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: Image + [57, 8]: without + [112, 8]: src + [138, 8]: attribute, + [204, 8]: should + [256, 8]: not + [283, 8]: crash: +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 78]: Image + [57, 78]: with + [90, 78]: broken + [143, 78]: src + [169, 78]: attribute, + [236, 78]: should + [287, 78]: not + [314, 78]: crash: +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 26) > Vector(x: 60, y: 26) > Vector(x: 59, y: 27) > Vector(x: 9, y: 27)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 26) > Vector(x: 60, y: 78) > Vector(x: 59, y: 77) > Vector(x: 59, y: 27)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 78) > Vector(x: 8, y: 78) > Vector(x: 9, y: 77) > Vector(x: 59, y: 77)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 78) > Vector(x: 8, y: 26) > Vector(x: 9, y: 27) > Vector(x: 9, y: 77)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 96) > Vector(x: 60, y: 96) > Vector(x: 59, y: 97) > Vector(x: 9, y: 97)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 96) > Vector(x: 60, y: 148) > Vector(x: 59, y: 147) > Vector(x: 59, y: 97)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 148) > Vector(x: 8, y: 148) > Vector(x: 9, y: 147) > Vector(x: 59, y: 147)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 148) > Vector(x: 8, y: 96) > Vector(x: 9, y: 97) > Vector(x: 9, y: 147)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 148) > Vector(x: 60, y: 148) > Vector(x: 59, y: 149) > Vector(x: 9, y: 149)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 148) > Vector(x: 60, y: 200) > Vector(x: 59, y: 199) > Vector(x: 59, y: 149)) +Shape: rgb(255,0,0) Path (Vector(x: 60, y: 200) > Vector(x: 8, y: 200) > Vector(x: 9, y: 199) > Vector(x: 59, y: 199)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 200) > Vector(x: 8, y: 148) > Vector(x: 9, y: 149) > Vector(x: 9, y: 199)) \ No newline at end of file diff --git a/tests/cases/images/images.html b/tests/reftests/images/images.html similarity index 100% rename from tests/cases/images/images.html rename to tests/reftests/images/images.html diff --git a/tests/reftests/images/images.txt b/tests/reftests/images/images.txt new file mode 100644 index 000000000..4fce3b52c --- /dev/null +++ b/tests/reftests/images/images.txt @@ -0,0 +1,36 @@ +Window: [800, 703] +Rectangle: [0, 0, 800, 703] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 433) > Vector(x: 83, y: 433) > Vector(x: 83, y: 508) > Vector(x: 8, y: 508)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (Vector(x: 87, y: 108) > Vector(x: 137, y: 108) > Vector(x: 137, y: 508) > Vector(x: 87, y: 508)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (Vector(x: 141, y: 8) > Vector(x: 641, y: 8) > Vector(x: 641, y: 508) > Vector(x: 141, y: 508)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (BezierCurve(x0: 645, y0: 458, x1: 695, y1: 408, cx0: 645, cy0: 430, cx1: 667, cy1: 408) > BezierCurve(x0: 695, y0: 408, x1: 745, y1: 458, cx0: 723, cy0: 408, cx1: 745, cy1: 430) > BezierCurve(x0: 745, y0: 458, x1: 695, y1: 508, cx0: 745, cy0: 486, cx1: 723, cy1: 508) > BezierCurve(x0: 695, y0: 508, x1: 645, y1: 458, cx0: 667, cy0: 508, cx1: 645, cy1: 486)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (Vector(x: 8, y: 597) > Vector(x: 508, y: 597) > Vector(x: 508, y: 637) > Vector(x: 8, y: 637)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Shape: rgb(0,0,0) Path (Vector(x: 512, y: 512) > Vector(x: 637, y: 512) > Vector(x: 632, y: 517) > Vector(x: 517, y: 517)) +Shape: rgb(0,0,0) Path (Vector(x: 637, y: 512) > Vector(x: 637, y: 637) > Vector(x: 632, y: 632) > Vector(x: 632, y: 517)) +Shape: rgb(0,0,0) Path (Vector(x: 637, y: 637) > Vector(x: 512, y: 637) > Vector(x: 517, y: 632) > Vector(x: 632, y: 632)) +Shape: rgb(0,0,0) Path (Vector(x: 512, y: 637) > Vector(x: 512, y: 512) > Vector(x: 517, y: 517) > Vector(x: 517, y: 632)) +Clip: Path (Vector(x: 517, y: 517) > Vector(x: 632, y: 517) > Vector(x: 632, y: 632) > Vector(x: 517, y: 632)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Shape: rgb(0,0,0) Path (Vector(x: 641, y: 537) > Vector(x: 716, y: 537) > Vector(x: 716, y: 542) > Vector(x: 641, y: 542)) +Clip: Path (Vector(x: 641, y: 542) > Vector(x: 716, y: 542) > Vector(x: 716, y: 637) > Vector(x: 641, y: 637)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Shape: rgb(0,0,0) Path (Vector(x: 720, y: 562) > Vector(x: 770, y: 562) > Vector(x: 770, y: 567) > Vector(x: 720, y: 567)) +Clip: Path (Vector(x: 720, y: 567) > Vector(x: 770, y: 567) > Vector(x: 770, y: 637) > Vector(x: 720, y: 637)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 641) > Vector(x: 58, y: 641) > Vector(x: 58, y: 646) > Vector(x: 8, y: 646)) +Clip: Path (Vector(x: 8, y: 646) > Vector(x: 58, y: 646) > Vector(x: 58, y: 691) > Vector(x: 8, y: 691)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Shape: rgb(0,0,0) Path (Vector(x: 62, y: 689) > Vector(x: 64, y: 689) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690)) +Shape: rgb(0,0,0) Path (Vector(x: 64, y: 689) > Vector(x: 64, y: 691) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690)) +Shape: rgb(0,0,0) Path (Vector(x: 64, y: 691) > Vector(x: 62, y: 691) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690)) +Shape: rgb(0,0,0) Path (Vector(x: 62, y: 691) > Vector(x: 62, y: 689) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690)) +Clip: Path (Vector(x: 63, y: 690) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690) > Vector(x: 63, y: 690)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (Vector(x: 68, y: 691) > Vector(x: 68, y: 691) > Vector(x: 68, y: 691) > Vector(x: 68, y: 691)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) \ No newline at end of file diff --git a/tests/cases/images/svg/base64.html b/tests/reftests/images/svg/base64.html similarity index 94% rename from tests/cases/images/svg/base64.html rename to tests/reftests/images/svg/base64.html index e52b47898..c8f9af6f2 100644 --- a/tests/cases/images/svg/base64.html +++ b/tests/reftests/images/svg/base64.html @@ -4,6 +4,11 @@ Base64 svg +
      diff --git a/tests/reftests/images/svg/base64.txt b/tests/reftests/images/svg/base64.txt new file mode 100644 index 000000000..07f87a5ec --- /dev/null +++ b/tests/reftests/images/svg/base64.txt @@ -0,0 +1,9 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: Inline + [51, 8]: svg + [80, 8]: image: +Clip: Path (Vector(x: 8, y: 26) > Vector(x: 208, y: 26) > Vector(x: 208, y: 226) > Vector(x: 8, y: 226)) + Draw image: Image ("/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53") (source: [0, 0, 306, 296]) (destination: [0, 0, 306, 296]) \ No newline at end of file diff --git a/tests/cases/images/svg/external.html b/tests/reftests/images/svg/external.html similarity index 79% rename from tests/cases/images/svg/external.html rename to tests/reftests/images/svg/external.html index 0ad3c6803..536c1aa97 100644 --- a/tests/cases/images/svg/external.html +++ b/tests/reftests/images/svg/external.html @@ -4,6 +4,11 @@ Image tests + SVG taints image:
      diff --git a/tests/reftests/images/svg/external.txt b/tests/reftests/images/svg/external.txt new file mode 100644 index 000000000..24972295f --- /dev/null +++ b/tests/reftests/images/svg/external.txt @@ -0,0 +1,9 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: SVG + [46, 8]: taints + [89, 8]: image: +Clip: Path (Vector(x: 8, y: 26) > Vector(x: 666, y: 26) > Vector(x: 666, y: 363) > Vector(x: 8, y: 363)) + Draw image: Image ("/tests/assets/image.svg") (source: [0, 0, 658, 337]) (destination: [0, 0, 658, 337]) \ No newline at end of file diff --git a/tests/cases/images/svg/inline.html b/tests/reftests/images/svg/inline.html similarity index 93% rename from tests/cases/images/svg/inline.html rename to tests/reftests/images/svg/inline.html index 8fb0f8d80..9adcb0659 100644 --- a/tests/cases/images/svg/inline.html +++ b/tests/reftests/images/svg/inline.html @@ -4,6 +4,11 @@ Inline svg +
      diff --git a/tests/reftests/images/svg/inline.txt b/tests/reftests/images/svg/inline.txt new file mode 100644 index 000000000..35ab8bbed --- /dev/null +++ b/tests/reftests/images/svg/inline.txt @@ -0,0 +1,7 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: Inline + [51, 8]: svg + [80, 8]: image: \ No newline at end of file diff --git a/tests/cases/images/svg/native_only.html b/tests/reftests/images/svg/native_only.html similarity index 97% rename from tests/cases/images/svg/native_only.html rename to tests/reftests/images/svg/native_only.html index 14a45fef6..8ab8f5d13 100644 --- a/tests/cases/images/svg/native_only.html +++ b/tests/reftests/images/svg/native_only.html @@ -7,6 +7,11 @@ var noFabric = true; +
      diff --git a/tests/reftests/images/svg/native_only.txt b/tests/reftests/images/svg/native_only.txt new file mode 100644 index 000000000..93dfa3fde --- /dev/null +++ b/tests/reftests/images/svg/native_only.txt @@ -0,0 +1,7 @@ +Window: [800, 656] +Rectangle: [0, 0, 800, 656] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 666, y: 8) > Vector(x: 666, y: 345) > Vector(x: 8, y: 345)) + Draw image: Image ("/tests/assets/image.svg") (source: [0, 0, 658, 337]) (destination: [0, 0, 658, 337]) +Clip: Path (Vector(x: 523, y: 445) > Vector(x: 723, y: 445) > Vector(x: 723, y: 645) > Vector(x: 523, y: 645)) + Draw image: Image ("/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53") (source: [0, 0, 306, 296]) (destination: [0, 0, 306, 296]) \ No newline at end of file diff --git a/tests/cases/images/svg/node.html b/tests/reftests/images/svg/node.html similarity index 93% rename from tests/cases/images/svg/node.html rename to tests/reftests/images/svg/node.html index 5faa7a527..f5e546960 100644 --- a/tests/cases/images/svg/node.html +++ b/tests/reftests/images/svg/node.html @@ -4,6 +4,11 @@ SVG node +
      SVG node image:
      diff --git a/tests/reftests/images/svg/node.txt b/tests/reftests/images/svg/node.txt new file mode 100644 index 000000000..3b0c45e5c --- /dev/null +++ b/tests/reftests/images/svg/node.txt @@ -0,0 +1,7 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: SVG + [46, 8]: node + [86, 8]: image: \ No newline at end of file diff --git a/tests/cases/list/decimal-leading-zero.html b/tests/reftests/list/decimal-leading-zero.html similarity index 100% rename from tests/cases/list/decimal-leading-zero.html rename to tests/reftests/list/decimal-leading-zero.html diff --git a/tests/reftests/list/decimal-leading-zero.txt b/tests/reftests/list/decimal-leading-zero.txt new file mode 100644 index 000000000..ee4798ee0 --- /dev/null +++ b/tests/reftests/list/decimal-leading-zero.txt @@ -0,0 +1,603 @@ +Window: [800, 5216] +Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 23]: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 75]: 2 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 127]: 3 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 179]: 4 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 231]: 5 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 283]: 6 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 335]: 7 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 387]: 8 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 439]: 9 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 491]: 10 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 543]: 11 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 595]: 12 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 647]: 13 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 699]: 14 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 751]: 15 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 803]: 16 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 855]: 17 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 907]: 18 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 959]: 19 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1011]: 20 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1063]: 21 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1115]: 22 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1167]: 23 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1219]: 24 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1271]: 25 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1323]: 26 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1375]: 27 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1427]: 28 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1479]: 29 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1531]: 30 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1583]: 31 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1635]: 32 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1687]: 33 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1739]: 34 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1791]: 35 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1843]: 36 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1895]: 37 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1947]: 38 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1999]: 39 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2051]: 40 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2103]: 41 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2155]: 42 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2207]: 43 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2259]: 44 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2311]: 45 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2363]: 46 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2415]: 47 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2467]: 48 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2519]: 49 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2571]: 50 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2623]: 51 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2675]: 52 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2727]: 53 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2779]: 54 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2831]: 55 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2883]: 56 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2935]: 57 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2987]: 58 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3039]: 59 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3091]: 60 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3143]: 61 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3195]: 62 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3247]: 63 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3299]: 64 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3351]: 65 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3403]: 66 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3455]: 67 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3507]: 68 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3559]: 69 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3611]: 70 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3663]: 71 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3715]: 72 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3767]: 73 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3819]: 74 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3871]: 75 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3923]: 76 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3975]: 77 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4027]: 78 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4079]: 79 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4131]: 80 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4183]: 81 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4235]: 82 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4287]: 83 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4339]: 84 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4391]: 85 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4443]: 86 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4495]: 87 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4547]: 88 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4599]: 89 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4651]: 90 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4703]: 91 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4755]: 92 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4807]: 93 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4859]: 94 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4911]: 95 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4963]: 96 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5015]: 97 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5067]: 98 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5119]: 99 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [89, 5171]: 100 \ No newline at end of file diff --git a/tests/cases/list/decimal.html b/tests/reftests/list/decimal.html similarity index 100% rename from tests/cases/list/decimal.html rename to tests/reftests/list/decimal.html diff --git a/tests/reftests/list/decimal.txt b/tests/reftests/list/decimal.txt new file mode 100644 index 000000000..d97857c27 --- /dev/null +++ b/tests/reftests/list/decimal.txt @@ -0,0 +1,603 @@ +Window: [800, 5216] +Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 23]: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 75]: 2 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 127]: 3 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 179]: 4 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 231]: 5 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 283]: 6 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 335]: 7 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 387]: 8 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 439]: 9 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 491]: 10 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 543]: 11 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 595]: 12 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 647]: 13 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 699]: 14 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 751]: 15 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 803]: 16 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 855]: 17 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 907]: 18 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 959]: 19 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1011]: 20 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1063]: 21 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1115]: 22 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1167]: 23 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1219]: 24 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1271]: 25 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1323]: 26 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1375]: 27 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1427]: 28 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1479]: 29 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1531]: 30 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1583]: 31 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1635]: 32 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1687]: 33 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1739]: 34 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1791]: 35 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1843]: 36 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1895]: 37 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1947]: 38 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 1999]: 39 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2051]: 40 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2103]: 41 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2155]: 42 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2207]: 43 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2259]: 44 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2311]: 45 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2363]: 46 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2415]: 47 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2467]: 48 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2519]: 49 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2571]: 50 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2623]: 51 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2675]: 52 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2727]: 53 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2779]: 54 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2831]: 55 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2883]: 56 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2935]: 57 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2987]: 58 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3039]: 59 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3091]: 60 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3143]: 61 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3195]: 62 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3247]: 63 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3299]: 64 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3351]: 65 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3403]: 66 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3455]: 67 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3507]: 68 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3559]: 69 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3611]: 70 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3663]: 71 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3715]: 72 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3767]: 73 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3819]: 74 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3871]: 75 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3923]: 76 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3975]: 77 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4027]: 78 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4079]: 79 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4131]: 80 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4183]: 81 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4235]: 82 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4287]: 83 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4339]: 84 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4391]: 85 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4443]: 86 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4495]: 87 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4547]: 88 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4599]: 89 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4651]: 90 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4703]: 91 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4755]: 92 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4807]: 93 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4859]: 94 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4911]: 95 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 4963]: 96 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5015]: 97 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5067]: 98 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 5119]: 99 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [89, 5171]: 100 \ No newline at end of file diff --git a/tests/cases/list/lower-alpha.html b/tests/reftests/list/lower-alpha.html similarity index 100% rename from tests/cases/list/lower-alpha.html rename to tests/reftests/list/lower-alpha.html diff --git a/tests/reftests/list/lower-alpha.txt b/tests/reftests/list/lower-alpha.txt new file mode 100644 index 000000000..96a2b1167 --- /dev/null +++ b/tests/reftests/list/lower-alpha.txt @@ -0,0 +1,603 @@ +Window: [800, 5216] +Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [68, 23]: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 75]: 2 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [68, 127]: 3 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 179]: 4 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [68, 231]: 5 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [66, 283]: 6 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 335]: 7 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 387]: 8 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [65, 439]: 9 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [65, 491]: 10 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 543]: 11 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [65, 595]: 12 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 647]: 13 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 699]: 14 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 751]: 15 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 803]: 16 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 855]: 17 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [66, 907]: 18 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [67, 959]: 19 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [65, 1011]: 20 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 1063]: 21 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 1115]: 22 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 1167]: 23 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 1219]: 24 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [69, 1271]: 25 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [68, 1323]: 26 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 1375]: 27 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 1427]: 28 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 1479]: 29 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 1531]: 30 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 1583]: 31 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 1635]: 32 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 1687]: 33 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 1739]: 34 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 1791]: 35 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 1843]: 36 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 1895]: 37 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 1947]: 38 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [83, 1999]: 39 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2051]: 40 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2103]: 41 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2155]: 42 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2207]: 43 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 2259]: 44 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [76, 2311]: 45 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 2363]: 46 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2415]: 47 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2467]: 48 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [82, 2519]: 49 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2571]: 50 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2623]: 51 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 2675]: 52 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2727]: 53 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2779]: 54 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2831]: 55 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 2883]: 56 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2935]: 57 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [76, 2987]: 58 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3039]: 59 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3091]: 60 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 3143]: 61 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 3195]: 62 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3247]: 63 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 3299]: 64 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [85, 3351]: 65 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3403]: 66 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3455]: 67 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3507]: 68 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3559]: 69 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [76, 3611]: 70 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 3663]: 71 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 3715]: 72 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3767]: 73 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3819]: 74 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [83, 3871]: 75 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3923]: 76 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 3975]: 77 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4027]: 78 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 4079]: 79 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4131]: 80 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 4183]: 81 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4235]: 82 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [77, 4287]: 83 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 4339]: 84 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4391]: 85 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4443]: 86 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 4495]: 87 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 4547]: 88 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4599]: 89 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 4651]: 90 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [83, 4703]: 91 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4755]: 92 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4807]: 93 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4859]: 94 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 4911]: 95 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [75, 4963]: 96 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [76, 5015]: 97 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 5067]: 98 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 5119]: 99 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 5171]: 100 \ No newline at end of file diff --git a/tests/cases/list/upper-roman.html b/tests/reftests/list/upper-roman.html similarity index 100% rename from tests/cases/list/upper-roman.html rename to tests/reftests/list/upper-roman.html diff --git a/tests/reftests/list/upper-roman.txt b/tests/reftests/list/upper-roman.txt new file mode 100644 index 000000000..1e556c97b --- /dev/null +++ b/tests/reftests/list/upper-roman.txt @@ -0,0 +1,603 @@ +Window: [800, 5666] +Rectangle: [0, 0, 800, 5666] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [66, 23]: 1 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [72, 75]: 2 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [79, 127]: 3 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [80, 179]: 4 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 231]: 5 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [80, 283]: 6 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [87, 335]: 7 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [93, 387]: 8 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [80, 439]: 9 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [73, 491]: 10 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [80, 543]: 11 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [87, 595]: 12 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [93, 647]: 13 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [95, 699]: 14 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [88, 751]: 15 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [95, 803]: 16 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [101, 855]: 17 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [108, 907]: 18 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [95, 959]: 19 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [88, 1011]: 20 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [95, 1063]: 21 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [101, 1115]: 22 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [108, 1167]: 23 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [109, 1219]: 24 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [102, 1271]: 25 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [109, 1323]: 26 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [116, 1375]: 27 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [122, 1427]: 28 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [109, 1479]: 29 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [102, 1531]: 30 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [109, 1583]: 31 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [116, 1635]: 32 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [122, 1687]: 33 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [123, 1739]: 34 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [117, 1791]: 35 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [123, 1843]: 36 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1982) > Vector(x: 149, y: 1981) > Vector(x: 149, y: 1881)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1982) > Vector(x: 48, y: 1982) > Vector(x: 49, y: 1981) > Vector(x: 149, y: 1981)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1982) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1981)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 1945]: 37 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1982) > Vector(x: 150, y: 1982) > Vector(x: 149, y: 1983) > Vector(x: 49, y: 1983)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1982) > Vector(x: 150, y: 2084) > Vector(x: 149, y: 2083) > Vector(x: 149, y: 1983)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2084) > Vector(x: 48, y: 2084) > Vector(x: 49, y: 2083) > Vector(x: 149, y: 2083)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2084) > Vector(x: 48, y: 1982) > Vector(x: 49, y: 1983) > Vector(x: 49, y: 2083)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 2047]: 38 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2084) > Vector(x: 150, y: 2084) > Vector(x: 149, y: 2085) > Vector(x: 49, y: 2085)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2084) > Vector(x: 150, y: 2136) > Vector(x: 149, y: 2135) > Vector(x: 149, y: 2085)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2136) > Vector(x: 48, y: 2136) > Vector(x: 49, y: 2135) > Vector(x: 149, y: 2135)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2136) > Vector(x: 48, y: 2084) > Vector(x: 49, y: 2085) > Vector(x: 49, y: 2135)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [123, 2099]: 39 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2136) > Vector(x: 150, y: 2136) > Vector(x: 149, y: 2137) > Vector(x: 49, y: 2137)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2136) > Vector(x: 150, y: 2188) > Vector(x: 149, y: 2187) > Vector(x: 149, y: 2137)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2188) > Vector(x: 48, y: 2188) > Vector(x: 49, y: 2187) > Vector(x: 149, y: 2187)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2188) > Vector(x: 48, y: 2136) > Vector(x: 49, y: 2137) > Vector(x: 49, y: 2187)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [86, 2151]: 40 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2188) > Vector(x: 150, y: 2188) > Vector(x: 149, y: 2189) > Vector(x: 49, y: 2189)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2188) > Vector(x: 150, y: 2240) > Vector(x: 149, y: 2239) > Vector(x: 149, y: 2189)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2240) > Vector(x: 48, y: 2240) > Vector(x: 49, y: 2239) > Vector(x: 149, y: 2239)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2240) > Vector(x: 48, y: 2188) > Vector(x: 49, y: 2189) > Vector(x: 49, y: 2239)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [92, 2203]: 41 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2240) > Vector(x: 150, y: 2240) > Vector(x: 149, y: 2241) > Vector(x: 49, y: 2241)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2240) > Vector(x: 150, y: 2292) > Vector(x: 149, y: 2291) > Vector(x: 149, y: 2241)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2292) > Vector(x: 48, y: 2292) > Vector(x: 49, y: 2291) > Vector(x: 149, y: 2291)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2292) > Vector(x: 48, y: 2240) > Vector(x: 49, y: 2241) > Vector(x: 49, y: 2291)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [99, 2255]: 42 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2292) > Vector(x: 150, y: 2292) > Vector(x: 149, y: 2293) > Vector(x: 49, y: 2293)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2292) > Vector(x: 150, y: 2344) > Vector(x: 149, y: 2343) > Vector(x: 149, y: 2293)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2344) > Vector(x: 48, y: 2344) > Vector(x: 49, y: 2343) > Vector(x: 149, y: 2343)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2344) > Vector(x: 48, y: 2292) > Vector(x: 49, y: 2293) > Vector(x: 49, y: 2343)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [106, 2307]: 43 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2344) > Vector(x: 150, y: 2344) > Vector(x: 149, y: 2345) > Vector(x: 49, y: 2345)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2344) > Vector(x: 150, y: 2396) > Vector(x: 149, y: 2395) > Vector(x: 149, y: 2345)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2396) > Vector(x: 48, y: 2396) > Vector(x: 49, y: 2395) > Vector(x: 149, y: 2395)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2396) > Vector(x: 48, y: 2344) > Vector(x: 49, y: 2345) > Vector(x: 49, y: 2395)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 2359]: 44 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2396) > Vector(x: 150, y: 2396) > Vector(x: 149, y: 2397) > Vector(x: 49, y: 2397)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2396) > Vector(x: 150, y: 2448) > Vector(x: 149, y: 2447) > Vector(x: 149, y: 2397)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2448) > Vector(x: 48, y: 2448) > Vector(x: 49, y: 2447) > Vector(x: 149, y: 2447)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2448) > Vector(x: 48, y: 2396) > Vector(x: 49, y: 2397) > Vector(x: 49, y: 2447)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [98, 2411]: 45 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2448) > Vector(x: 150, y: 2448) > Vector(x: 149, y: 2449) > Vector(x: 49, y: 2449)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2448) > Vector(x: 150, y: 2500) > Vector(x: 149, y: 2499) > Vector(x: 149, y: 2449)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2500) > Vector(x: 48, y: 2500) > Vector(x: 49, y: 2499) > Vector(x: 149, y: 2499)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2500) > Vector(x: 48, y: 2448) > Vector(x: 49, y: 2449) > Vector(x: 49, y: 2499)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [105, 2463]: 46 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2500) > Vector(x: 150, y: 2500) > Vector(x: 149, y: 2501) > Vector(x: 49, y: 2501)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2500) > Vector(x: 150, y: 2552) > Vector(x: 149, y: 2551) > Vector(x: 149, y: 2501)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2552) > Vector(x: 48, y: 2552) > Vector(x: 49, y: 2551) > Vector(x: 149, y: 2551)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2552) > Vector(x: 48, y: 2500) > Vector(x: 49, y: 2501) > Vector(x: 49, y: 2551)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [112, 2515]: 47 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2552) > Vector(x: 150, y: 2552) > Vector(x: 149, y: 2553) > Vector(x: 49, y: 2553)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2552) > Vector(x: 150, y: 2604) > Vector(x: 149, y: 2603) > Vector(x: 149, y: 2553)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2604) > Vector(x: 48, y: 2604) > Vector(x: 49, y: 2603) > Vector(x: 149, y: 2603)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2604) > Vector(x: 48, y: 2552) > Vector(x: 49, y: 2553) > Vector(x: 49, y: 2603)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [118, 2567]: 48 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2604) > Vector(x: 150, y: 2604) > Vector(x: 149, y: 2605) > Vector(x: 49, y: 2605)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2604) > Vector(x: 150, y: 2656) > Vector(x: 149, y: 2655) > Vector(x: 149, y: 2605)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2656) > Vector(x: 48, y: 2656) > Vector(x: 49, y: 2655) > Vector(x: 149, y: 2655)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2656) > Vector(x: 48, y: 2604) > Vector(x: 49, y: 2605) > Vector(x: 49, y: 2655)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 2619]: 49 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2656) > Vector(x: 150, y: 2656) > Vector(x: 149, y: 2657) > Vector(x: 49, y: 2657)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2656) > Vector(x: 150, y: 2708) > Vector(x: 149, y: 2707) > Vector(x: 149, y: 2657)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2708) > Vector(x: 48, y: 2708) > Vector(x: 49, y: 2707) > Vector(x: 149, y: 2707)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2708) > Vector(x: 48, y: 2656) > Vector(x: 49, y: 2657) > Vector(x: 49, y: 2707)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [71, 2671]: 50 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2708) > Vector(x: 150, y: 2708) > Vector(x: 149, y: 2709) > Vector(x: 49, y: 2709)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2708) > Vector(x: 150, y: 2760) > Vector(x: 149, y: 2759) > Vector(x: 149, y: 2709)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2760) > Vector(x: 48, y: 2760) > Vector(x: 49, y: 2759) > Vector(x: 149, y: 2759)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2760) > Vector(x: 48, y: 2708) > Vector(x: 49, y: 2709) > Vector(x: 49, y: 2759)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [78, 2723]: 51 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2760) > Vector(x: 150, y: 2760) > Vector(x: 149, y: 2761) > Vector(x: 49, y: 2761)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2760) > Vector(x: 150, y: 2812) > Vector(x: 149, y: 2811) > Vector(x: 149, y: 2761)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2812) > Vector(x: 48, y: 2812) > Vector(x: 49, y: 2811) > Vector(x: 149, y: 2811)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2812) > Vector(x: 48, y: 2760) > Vector(x: 49, y: 2761) > Vector(x: 49, y: 2811)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [85, 2775]: 52 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2812) > Vector(x: 150, y: 2812) > Vector(x: 149, y: 2813) > Vector(x: 49, y: 2813)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2812) > Vector(x: 150, y: 2864) > Vector(x: 149, y: 2863) > Vector(x: 149, y: 2813)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2864) > Vector(x: 48, y: 2864) > Vector(x: 49, y: 2863) > Vector(x: 149, y: 2863)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2864) > Vector(x: 48, y: 2812) > Vector(x: 49, y: 2813) > Vector(x: 49, y: 2863)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [91, 2827]: 53 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2864) > Vector(x: 150, y: 2864) > Vector(x: 149, y: 2865) > Vector(x: 49, y: 2865)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2864) > Vector(x: 150, y: 2916) > Vector(x: 149, y: 2915) > Vector(x: 149, y: 2865)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2916) > Vector(x: 48, y: 2916) > Vector(x: 49, y: 2915) > Vector(x: 149, y: 2915)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2916) > Vector(x: 48, y: 2864) > Vector(x: 49, y: 2865) > Vector(x: 49, y: 2915)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [92, 2879]: 54 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2916) > Vector(x: 150, y: 2916) > Vector(x: 149, y: 2917) > Vector(x: 49, y: 2917)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2916) > Vector(x: 150, y: 2968) > Vector(x: 149, y: 2967) > Vector(x: 149, y: 2917)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2968) > Vector(x: 48, y: 2968) > Vector(x: 49, y: 2967) > Vector(x: 149, y: 2967)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2968) > Vector(x: 48, y: 2916) > Vector(x: 49, y: 2917) > Vector(x: 49, y: 2967)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [84, 2931]: 55 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2968) > Vector(x: 150, y: 2968) > Vector(x: 149, y: 2969) > Vector(x: 49, y: 2969)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2968) > Vector(x: 150, y: 3020) > Vector(x: 149, y: 3019) > Vector(x: 149, y: 2969)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3020) > Vector(x: 48, y: 3020) > Vector(x: 49, y: 3019) > Vector(x: 149, y: 3019)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3020) > Vector(x: 48, y: 2968) > Vector(x: 49, y: 2969) > Vector(x: 49, y: 3019)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [90, 2983]: 56 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3020) > Vector(x: 150, y: 3020) > Vector(x: 149, y: 3021) > Vector(x: 49, y: 3021)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3020) > Vector(x: 150, y: 3072) > Vector(x: 149, y: 3071) > Vector(x: 149, y: 3021)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3072) > Vector(x: 48, y: 3072) > Vector(x: 49, y: 3071) > Vector(x: 149, y: 3071)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3072) > Vector(x: 48, y: 3020) > Vector(x: 49, y: 3021) > Vector(x: 49, y: 3071)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [97, 3035]: 57 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3072) > Vector(x: 150, y: 3072) > Vector(x: 149, y: 3073) > Vector(x: 49, y: 3073)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3072) > Vector(x: 150, y: 3124) > Vector(x: 149, y: 3123) > Vector(x: 149, y: 3073)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3124) > Vector(x: 48, y: 3124) > Vector(x: 49, y: 3123) > Vector(x: 149, y: 3123)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3124) > Vector(x: 48, y: 3072) > Vector(x: 49, y: 3073) > Vector(x: 49, y: 3123)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [104, 3087]: 58 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3124) > Vector(x: 150, y: 3124) > Vector(x: 149, y: 3125) > Vector(x: 49, y: 3125)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3124) > Vector(x: 150, y: 3176) > Vector(x: 149, y: 3175) > Vector(x: 149, y: 3125)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3176) > Vector(x: 48, y: 3176) > Vector(x: 49, y: 3175) > Vector(x: 149, y: 3175)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3176) > Vector(x: 48, y: 3124) > Vector(x: 49, y: 3125) > Vector(x: 49, y: 3175)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [92, 3139]: 59 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3176) > Vector(x: 150, y: 3176) > Vector(x: 149, y: 3177) > Vector(x: 49, y: 3177)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3176) > Vector(x: 150, y: 3228) > Vector(x: 149, y: 3227) > Vector(x: 149, y: 3177)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3228) > Vector(x: 48, y: 3228) > Vector(x: 49, y: 3227) > Vector(x: 149, y: 3227)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3228) > Vector(x: 48, y: 3176) > Vector(x: 49, y: 3177) > Vector(x: 49, y: 3227)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [86, 3191]: 60 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3228) > Vector(x: 150, y: 3228) > Vector(x: 149, y: 3229) > Vector(x: 49, y: 3229)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3228) > Vector(x: 150, y: 3280) > Vector(x: 149, y: 3279) > Vector(x: 149, y: 3229)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3280) > Vector(x: 48, y: 3280) > Vector(x: 49, y: 3279) > Vector(x: 149, y: 3279)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3280) > Vector(x: 48, y: 3228) > Vector(x: 49, y: 3229) > Vector(x: 49, y: 3279)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [92, 3243]: 61 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3280) > Vector(x: 150, y: 3280) > Vector(x: 149, y: 3281) > Vector(x: 49, y: 3281)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3280) > Vector(x: 150, y: 3332) > Vector(x: 149, y: 3331) > Vector(x: 149, y: 3281)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3332) > Vector(x: 48, y: 3332) > Vector(x: 49, y: 3331) > Vector(x: 149, y: 3331)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3332) > Vector(x: 48, y: 3280) > Vector(x: 49, y: 3281) > Vector(x: 49, y: 3331)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [99, 3295]: 62 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3332) > Vector(x: 150, y: 3332) > Vector(x: 149, y: 3333) > Vector(x: 49, y: 3333)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3332) > Vector(x: 150, y: 3384) > Vector(x: 149, y: 3383) > Vector(x: 149, y: 3333)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3384) > Vector(x: 48, y: 3384) > Vector(x: 49, y: 3383) > Vector(x: 149, y: 3383)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3384) > Vector(x: 48, y: 3332) > Vector(x: 49, y: 3333) > Vector(x: 49, y: 3383)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [106, 3347]: 63 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3384) > Vector(x: 150, y: 3384) > Vector(x: 149, y: 3385) > Vector(x: 49, y: 3385)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3384) > Vector(x: 150, y: 3436) > Vector(x: 149, y: 3435) > Vector(x: 149, y: 3385)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3436) > Vector(x: 48, y: 3436) > Vector(x: 49, y: 3435) > Vector(x: 149, y: 3435)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3436) > Vector(x: 48, y: 3384) > Vector(x: 49, y: 3385) > Vector(x: 49, y: 3435)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 3399]: 64 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3436) > Vector(x: 150, y: 3436) > Vector(x: 149, y: 3437) > Vector(x: 49, y: 3437)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3436) > Vector(x: 150, y: 3488) > Vector(x: 149, y: 3487) > Vector(x: 149, y: 3437)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3488) > Vector(x: 48, y: 3488) > Vector(x: 49, y: 3487) > Vector(x: 149, y: 3487)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3488) > Vector(x: 48, y: 3436) > Vector(x: 49, y: 3437) > Vector(x: 49, y: 3487)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [100, 3451]: 65 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3488) > Vector(x: 150, y: 3488) > Vector(x: 149, y: 3489) > Vector(x: 49, y: 3489)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3488) > Vector(x: 150, y: 3540) > Vector(x: 149, y: 3539) > Vector(x: 149, y: 3489)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3540) > Vector(x: 48, y: 3540) > Vector(x: 49, y: 3539) > Vector(x: 149, y: 3539)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3540) > Vector(x: 48, y: 3488) > Vector(x: 49, y: 3489) > Vector(x: 49, y: 3539)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 3503]: 66 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3540) > Vector(x: 150, y: 3540) > Vector(x: 149, y: 3541) > Vector(x: 49, y: 3541)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3540) > Vector(x: 150, y: 3592) > Vector(x: 149, y: 3591) > Vector(x: 149, y: 3541)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3592) > Vector(x: 48, y: 3592) > Vector(x: 49, y: 3591) > Vector(x: 149, y: 3591)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3592) > Vector(x: 48, y: 3540) > Vector(x: 49, y: 3541) > Vector(x: 49, y: 3591)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [113, 3555]: 67 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3592) > Vector(x: 150, y: 3592) > Vector(x: 149, y: 3593) > Vector(x: 49, y: 3593)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3592) > Vector(x: 150, y: 3644) > Vector(x: 149, y: 3643) > Vector(x: 149, y: 3593)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3644) > Vector(x: 48, y: 3644) > Vector(x: 49, y: 3643) > Vector(x: 149, y: 3643)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3644) > Vector(x: 48, y: 3592) > Vector(x: 49, y: 3593) > Vector(x: 49, y: 3643)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [120, 3607]: 68 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3644) > Vector(x: 150, y: 3644) > Vector(x: 149, y: 3645) > Vector(x: 49, y: 3645)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3644) > Vector(x: 150, y: 3696) > Vector(x: 149, y: 3695) > Vector(x: 149, y: 3645)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3696) > Vector(x: 48, y: 3696) > Vector(x: 49, y: 3695) > Vector(x: 149, y: 3695)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3696) > Vector(x: 48, y: 3644) > Vector(x: 49, y: 3645) > Vector(x: 49, y: 3695)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 3659]: 69 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3696) > Vector(x: 150, y: 3696) > Vector(x: 149, y: 3697) > Vector(x: 49, y: 3697)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3696) > Vector(x: 150, y: 3748) > Vector(x: 149, y: 3747) > Vector(x: 149, y: 3697)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3748) > Vector(x: 48, y: 3748) > Vector(x: 49, y: 3747) > Vector(x: 149, y: 3747)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3748) > Vector(x: 48, y: 3696) > Vector(x: 49, y: 3697) > Vector(x: 49, y: 3747)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [100, 3711]: 70 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3748) > Vector(x: 150, y: 3748) > Vector(x: 149, y: 3749) > Vector(x: 49, y: 3749)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3748) > Vector(x: 150, y: 3800) > Vector(x: 149, y: 3799) > Vector(x: 149, y: 3749)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3800) > Vector(x: 48, y: 3800) > Vector(x: 49, y: 3799) > Vector(x: 149, y: 3799)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3800) > Vector(x: 48, y: 3748) > Vector(x: 49, y: 3749) > Vector(x: 49, y: 3799)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 3763]: 71 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3800) > Vector(x: 150, y: 3800) > Vector(x: 149, y: 3801) > Vector(x: 49, y: 3801)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3800) > Vector(x: 150, y: 3852) > Vector(x: 149, y: 3851) > Vector(x: 149, y: 3801)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3852) > Vector(x: 48, y: 3852) > Vector(x: 49, y: 3851) > Vector(x: 149, y: 3851)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3852) > Vector(x: 48, y: 3800) > Vector(x: 49, y: 3801) > Vector(x: 49, y: 3851)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [113, 3815]: 72 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3852) > Vector(x: 150, y: 3852) > Vector(x: 149, y: 3853) > Vector(x: 49, y: 3853)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3852) > Vector(x: 150, y: 3904) > Vector(x: 149, y: 3903) > Vector(x: 149, y: 3853)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3904) > Vector(x: 48, y: 3904) > Vector(x: 49, y: 3903) > Vector(x: 149, y: 3903)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3904) > Vector(x: 48, y: 3852) > Vector(x: 49, y: 3853) > Vector(x: 49, y: 3903)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [120, 3867]: 73 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3904) > Vector(x: 150, y: 3904) > Vector(x: 149, y: 3905) > Vector(x: 49, y: 3905)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3904) > Vector(x: 150, y: 3956) > Vector(x: 149, y: 3955) > Vector(x: 149, y: 3905)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3956) > Vector(x: 48, y: 3956) > Vector(x: 49, y: 3955) > Vector(x: 149, y: 3955)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3956) > Vector(x: 48, y: 3904) > Vector(x: 49, y: 3905) > Vector(x: 49, y: 3955)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [121, 3919]: 74 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3956) > Vector(x: 150, y: 3956) > Vector(x: 149, y: 3957) > Vector(x: 49, y: 3957)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3956) > Vector(x: 150, y: 4008) > Vector(x: 149, y: 4007) > Vector(x: 149, y: 3957)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4008) > Vector(x: 48, y: 4008) > Vector(x: 49, y: 4007) > Vector(x: 149, y: 4007)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4008) > Vector(x: 48, y: 3956) > Vector(x: 49, y: 3957) > Vector(x: 49, y: 4007)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [115, 3971]: 75 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4008) > Vector(x: 150, y: 4008) > Vector(x: 149, y: 4009) > Vector(x: 49, y: 4009)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4008) > Vector(x: 150, y: 4060) > Vector(x: 149, y: 4059) > Vector(x: 149, y: 4009)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4060) > Vector(x: 48, y: 4060) > Vector(x: 49, y: 4059) > Vector(x: 149, y: 4059)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4060) > Vector(x: 48, y: 4008) > Vector(x: 49, y: 4009) > Vector(x: 49, y: 4059)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [121, 4023]: 76 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4060) > Vector(x: 150, y: 4060) > Vector(x: 149, y: 4061) > Vector(x: 49, y: 4061)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4060) > Vector(x: 150, y: 4112) > Vector(x: 149, y: 4111) > Vector(x: 149, y: 4061)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4112) > Vector(x: 48, y: 4112) > Vector(x: 49, y: 4111) > Vector(x: 149, y: 4111)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4112) > Vector(x: 48, y: 4060) > Vector(x: 49, y: 4061) > Vector(x: 49, y: 4111)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [128, 4075]: 77 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4112) > Vector(x: 150, y: 4112) > Vector(x: 149, y: 4113) > Vector(x: 49, y: 4113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4112) > Vector(x: 150, y: 4214) > Vector(x: 149, y: 4213) > Vector(x: 149, y: 4113)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4214) > Vector(x: 48, y: 4214) > Vector(x: 49, y: 4213) > Vector(x: 149, y: 4213)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4214) > Vector(x: 48, y: 4112) > Vector(x: 49, y: 4113) > Vector(x: 49, y: 4213)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4177]: 78 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4214) > Vector(x: 150, y: 4214) > Vector(x: 149, y: 4215) > Vector(x: 49, y: 4215)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4214) > Vector(x: 150, y: 4266) > Vector(x: 149, y: 4265) > Vector(x: 149, y: 4215)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4266) > Vector(x: 48, y: 4266) > Vector(x: 49, y: 4265) > Vector(x: 149, y: 4265)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4266) > Vector(x: 48, y: 4214) > Vector(x: 49, y: 4215) > Vector(x: 49, y: 4265)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [121, 4229]: 79 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4266) > Vector(x: 150, y: 4266) > Vector(x: 149, y: 4267) > Vector(x: 49, y: 4267)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4266) > Vector(x: 150, y: 4318) > Vector(x: 149, y: 4317) > Vector(x: 149, y: 4267)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4318) > Vector(x: 48, y: 4318) > Vector(x: 49, y: 4317) > Vector(x: 149, y: 4317)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4318) > Vector(x: 48, y: 4266) > Vector(x: 49, y: 4267) > Vector(x: 49, y: 4317)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [115, 4281]: 80 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4318) > Vector(x: 150, y: 4318) > Vector(x: 149, y: 4319) > Vector(x: 49, y: 4319)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4318) > Vector(x: 150, y: 4370) > Vector(x: 149, y: 4369) > Vector(x: 149, y: 4319)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4370) > Vector(x: 48, y: 4370) > Vector(x: 49, y: 4369) > Vector(x: 149, y: 4369)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4370) > Vector(x: 48, y: 4318) > Vector(x: 49, y: 4319) > Vector(x: 49, y: 4369)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [121, 4333]: 81 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4370) > Vector(x: 150, y: 4370) > Vector(x: 149, y: 4371) > Vector(x: 49, y: 4371)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4370) > Vector(x: 150, y: 4422) > Vector(x: 149, y: 4421) > Vector(x: 149, y: 4371)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4422) > Vector(x: 48, y: 4422) > Vector(x: 49, y: 4421) > Vector(x: 149, y: 4421)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4422) > Vector(x: 48, y: 4370) > Vector(x: 49, y: 4371) > Vector(x: 49, y: 4421)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [128, 4385]: 82 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4422) > Vector(x: 150, y: 4422) > Vector(x: 149, y: 4423) > Vector(x: 49, y: 4423)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4422) > Vector(x: 150, y: 4524) > Vector(x: 149, y: 4523) > Vector(x: 149, y: 4423)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4524) > Vector(x: 48, y: 4524) > Vector(x: 49, y: 4523) > Vector(x: 149, y: 4523)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4524) > Vector(x: 48, y: 4422) > Vector(x: 49, y: 4423) > Vector(x: 49, y: 4523)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4487]: 83 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4524) > Vector(x: 150, y: 4524) > Vector(x: 149, y: 4525) > Vector(x: 49, y: 4525)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4524) > Vector(x: 150, y: 4626) > Vector(x: 149, y: 4625) > Vector(x: 149, y: 4525)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4626) > Vector(x: 48, y: 4626) > Vector(x: 49, y: 4625) > Vector(x: 149, y: 4625)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4626) > Vector(x: 48, y: 4524) > Vector(x: 49, y: 4525) > Vector(x: 49, y: 4625)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4589]: 84 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4626) > Vector(x: 150, y: 4626) > Vector(x: 149, y: 4627) > Vector(x: 49, y: 4627)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4626) > Vector(x: 150, y: 4678) > Vector(x: 149, y: 4677) > Vector(x: 149, y: 4627)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4678) > Vector(x: 48, y: 4678) > Vector(x: 49, y: 4677) > Vector(x: 149, y: 4677)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4678) > Vector(x: 48, y: 4626) > Vector(x: 49, y: 4627) > Vector(x: 49, y: 4677)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [129, 4641]: 85 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4678) > Vector(x: 150, y: 4678) > Vector(x: 149, y: 4679) > Vector(x: 49, y: 4679)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4678) > Vector(x: 150, y: 4780) > Vector(x: 149, y: 4779) > Vector(x: 149, y: 4679)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4780) > Vector(x: 48, y: 4780) > Vector(x: 49, y: 4779) > Vector(x: 149, y: 4779)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4780) > Vector(x: 48, y: 4678) > Vector(x: 49, y: 4679) > Vector(x: 49, y: 4779)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4743]: 86 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4780) > Vector(x: 150, y: 4780) > Vector(x: 149, y: 4781) > Vector(x: 49, y: 4781)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4780) > Vector(x: 150, y: 4882) > Vector(x: 149, y: 4881) > Vector(x: 149, y: 4781)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4882) > Vector(x: 48, y: 4882) > Vector(x: 49, y: 4881) > Vector(x: 149, y: 4881)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4882) > Vector(x: 48, y: 4780) > Vector(x: 49, y: 4781) > Vector(x: 49, y: 4881)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4845]: 87 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4882) > Vector(x: 150, y: 4882) > Vector(x: 149, y: 4883) > Vector(x: 49, y: 4883)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4882) > Vector(x: 150, y: 4984) > Vector(x: 149, y: 4983) > Vector(x: 149, y: 4883)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4984) > Vector(x: 48, y: 4984) > Vector(x: 49, y: 4983) > Vector(x: 149, y: 4983)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4984) > Vector(x: 48, y: 4882) > Vector(x: 49, y: 4883) > Vector(x: 49, y: 4983)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 4947]: 88 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4984) > Vector(x: 150, y: 4984) > Vector(x: 149, y: 4985) > Vector(x: 49, y: 4985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4984) > Vector(x: 150, y: 5086) > Vector(x: 149, y: 5085) > Vector(x: 149, y: 4985)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5086) > Vector(x: 48, y: 5086) > Vector(x: 49, y: 5085) > Vector(x: 149, y: 5085)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5086) > Vector(x: 48, y: 4984) > Vector(x: 49, y: 4985) > Vector(x: 49, y: 5085)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [49, 5049]: 89 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5086) > Vector(x: 150, y: 5086) > Vector(x: 149, y: 5087) > Vector(x: 49, y: 5087)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5086) > Vector(x: 150, y: 5138) > Vector(x: 149, y: 5137) > Vector(x: 149, y: 5087)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5138) > Vector(x: 48, y: 5138) > Vector(x: 49, y: 5137) > Vector(x: 149, y: 5137)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5138) > Vector(x: 48, y: 5086) > Vector(x: 49, y: 5087) > Vector(x: 49, y: 5137)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [87, 5101]: 90 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5138) > Vector(x: 150, y: 5138) > Vector(x: 149, y: 5139) > Vector(x: 49, y: 5139)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5138) > Vector(x: 150, y: 5190) > Vector(x: 149, y: 5189) > Vector(x: 149, y: 5139)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5190) > Vector(x: 48, y: 5190) > Vector(x: 49, y: 5189) > Vector(x: 149, y: 5189)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5190) > Vector(x: 48, y: 5138) > Vector(x: 49, y: 5139) > Vector(x: 49, y: 5189)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [93, 5153]: 91 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5190) > Vector(x: 150, y: 5190) > Vector(x: 149, y: 5191) > Vector(x: 49, y: 5191)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5190) > Vector(x: 150, y: 5242) > Vector(x: 149, y: 5241) > Vector(x: 149, y: 5191)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5242) > Vector(x: 48, y: 5242) > Vector(x: 49, y: 5241) > Vector(x: 149, y: 5241)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5242) > Vector(x: 48, y: 5190) > Vector(x: 49, y: 5191) > Vector(x: 49, y: 5241)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [100, 5205]: 92 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5242) > Vector(x: 150, y: 5242) > Vector(x: 149, y: 5243) > Vector(x: 49, y: 5243)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5242) > Vector(x: 150, y: 5294) > Vector(x: 149, y: 5293) > Vector(x: 149, y: 5243)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5294) > Vector(x: 48, y: 5294) > Vector(x: 49, y: 5293) > Vector(x: 149, y: 5293)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5294) > Vector(x: 48, y: 5242) > Vector(x: 49, y: 5243) > Vector(x: 49, y: 5293)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [107, 5257]: 93 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5294) > Vector(x: 150, y: 5294) > Vector(x: 149, y: 5295) > Vector(x: 49, y: 5295)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5294) > Vector(x: 150, y: 5346) > Vector(x: 149, y: 5345) > Vector(x: 149, y: 5295)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5346) > Vector(x: 48, y: 5346) > Vector(x: 49, y: 5345) > Vector(x: 149, y: 5345)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5346) > Vector(x: 48, y: 5294) > Vector(x: 49, y: 5295) > Vector(x: 49, y: 5345)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [108, 5309]: 94 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5346) > Vector(x: 150, y: 5346) > Vector(x: 149, y: 5347) > Vector(x: 49, y: 5347)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5346) > Vector(x: 150, y: 5398) > Vector(x: 149, y: 5397) > Vector(x: 149, y: 5347)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5398) > Vector(x: 48, y: 5398) > Vector(x: 49, y: 5397) > Vector(x: 149, y: 5397)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5398) > Vector(x: 48, y: 5346) > Vector(x: 49, y: 5347) > Vector(x: 49, y: 5397)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [101, 5361]: 95 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5398) > Vector(x: 150, y: 5398) > Vector(x: 149, y: 5399) > Vector(x: 49, y: 5399)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5398) > Vector(x: 150, y: 5450) > Vector(x: 149, y: 5449) > Vector(x: 149, y: 5399)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5450) > Vector(x: 48, y: 5450) > Vector(x: 49, y: 5449) > Vector(x: 149, y: 5449)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5450) > Vector(x: 48, y: 5398) > Vector(x: 49, y: 5399) > Vector(x: 49, y: 5449)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [108, 5413]: 96 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5450) > Vector(x: 150, y: 5450) > Vector(x: 149, y: 5451) > Vector(x: 49, y: 5451)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5450) > Vector(x: 150, y: 5502) > Vector(x: 149, y: 5501) > Vector(x: 149, y: 5451)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5502) > Vector(x: 48, y: 5502) > Vector(x: 49, y: 5501) > Vector(x: 149, y: 5501)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5502) > Vector(x: 48, y: 5450) > Vector(x: 49, y: 5451) > Vector(x: 49, y: 5501)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [115, 5465]: 97 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5502) > Vector(x: 150, y: 5502) > Vector(x: 149, y: 5503) > Vector(x: 49, y: 5503)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5502) > Vector(x: 150, y: 5554) > Vector(x: 149, y: 5553) > Vector(x: 149, y: 5503)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5554) > Vector(x: 48, y: 5554) > Vector(x: 49, y: 5553) > Vector(x: 149, y: 5553)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5554) > Vector(x: 48, y: 5502) > Vector(x: 49, y: 5503) > Vector(x: 49, y: 5553)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [121, 5517]: 98 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5554) > Vector(x: 150, y: 5554) > Vector(x: 149, y: 5555) > Vector(x: 49, y: 5555)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5554) > Vector(x: 150, y: 5606) > Vector(x: 149, y: 5605) > Vector(x: 149, y: 5555)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5606) > Vector(x: 48, y: 5606) > Vector(x: 49, y: 5605) > Vector(x: 149, y: 5605)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5606) > Vector(x: 48, y: 5554) > Vector(x: 49, y: 5555) > Vector(x: 49, y: 5605)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [108, 5569]: 99 +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5606) > Vector(x: 150, y: 5606) > Vector(x: 149, y: 5607) > Vector(x: 49, y: 5607)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5606) > Vector(x: 150, y: 5658) > Vector(x: 149, y: 5657) > Vector(x: 149, y: 5607)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5658) > Vector(x: 48, y: 5658) > Vector(x: 49, y: 5657) > Vector(x: 149, y: 5657)) +Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5658) > Vector(x: 48, y: 5606) > Vector(x: 49, y: 5607) > Vector(x: 49, y: 5657)) +Text: rgb(0,0,0) normal normal 400 20px Times New Roman + [72, 5621]: 100 \ No newline at end of file diff --git a/tests/cases/overflow/overflow-transform.html b/tests/reftests/overflow/overflow-transform.html similarity index 96% rename from tests/cases/overflow/overflow-transform.html rename to tests/reftests/overflow/overflow-transform.html index 3f081999d..d513eba06 100644 --- a/tests/cases/overflow/overflow-transform.html +++ b/tests/reftests/overflow/overflow-transform.html @@ -34,6 +34,9 @@ width: 461px;background: #ff0000; z-index: 1; } + body { + font-family: Arial; + } diff --git a/tests/reftests/overflow/overflow-transform.txt b/tests/reftests/overflow/overflow-transform.txt new file mode 100644 index 000000000..66394e137 --- /dev/null +++ b/tests/reftests/overflow/overflow-transform.txt @@ -0,0 +1,134 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 312, y: 8) > Vector(x: 310, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 368) > Vector(x: 310, y: 366) > Vector(x: 310, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 368) > Vector(x: 8, y: 368) > Vector(x: 10, y: 366) > Vector(x: 310, y: 366)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 368) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 366)) +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [10, 26]: Le + [32, 26]: Lorem + [82, 26]: Ipsum + [130, 26]: est + [156, 26]: simplement + [242, 26]: du + [264, 26]: faux + [10, 44]: texte + [49, 44]: employé + [114, 44]: dans + [153, 44]: la + [170, 44]: composition + [260, 44]: et + [278, 44]: la + [10, 62]: mise + [48, 62]: en + [70, 62]: page + [110, 62]: avant + [154, 62]: impression. + [240, 62]: Le + [262, 62]: Lorem + [10, 80]: Ipsum + [58, 80]: est + [84, 80]: le + [101, 80]: faux + [135, 80]: texte + [174, 80]: standard + [241, 80]: de + [10, 98]: l'imprimerie + [96, 98]: depuis + [147, 98]: les + [172, 98]: années + [229, 98]: 1500, + [10, 116]: quand + [59, 116]: un + [81, 116]: peintre + [134, 116]: anonyme + [205, 116]: assembla + [10, 134]: ensemble + [84, 134]: des + [114, 134]: morceaux + [189, 134]: de + [211, 134]: texte + [250, 134]: pour + [10, 152]: réaliser + [67, 152]: un + [89, 152]: livre + [123, 152]: spécimen + [196, 152]: de + [218, 152]: polices + [272, 152]: de + [10, 170]: texte. + [54, 170]: Il + [66, 170]: n'a + [91, 170]: pas + [122, 170]: fait + [147, 170]: que + [178, 170]: survivre + [239, 170]: cinq + [10, 188]: siècles, + [68, 188]: mais + [106, 188]: s'est + [143, 188]: aussi + [185, 188]: adapté + [238, 188]: à + [251, 188]: la + [10, 206]: bureautique + [99, 206]: informatique, + [196, 206]: sans + [234, 206]: que + [265, 206]: son + [10, 224]: contenu + [71, 224]: n'en + [106, 224]: soit + [135, 224]: modifié. + [195, 224]: Il + [208, 224]: a + [221, 224]: été + [10, 242]: popularisé + [88, 242]: dans + [128, 242]: les + [152, 242]: années + [209, 242]: 1960 + [249, 242]: grâce + [294, 242]: à + [10, 260]: la + [27, 260]: vente + [70, 260]: de + [93, 260]: feuilles + [147, 260]: Letraset + [209, 260]: contenant + [284, 260]: des + [10, 278]: passages + [83, 278]: du + [105, 278]: Lorem + [155, 278]: Ipsum, + [208, 278]: et, + [230, 278]: plus + [10, 296]: récemment, + [99, 296]: par + [126, 296]: son + [157, 296]: inclusion + [224, 296]: dans + [262, 296]: des + [10, 314]: applications + [99, 314]: de + [121, 314]: mise + [160, 314]: en + [182, 314]: page + [222, 314]: de + [244, 314]: texte, + [10, 332]: comme + [67, 332]: Aldus + [111, 332]: PageMaker. +Transform: (91, 525) [-0.92, -0.39, 0.39, -0.92, 0, 0] + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Clip: Path (Vector(x: -140, y: 215) > Vector(x: 321, y: 215) > Vector(x: 321, y: 835) > Vector(x: -140, y: 835)) + Fill: rgb(255,0,0) + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) +Transform: (268, -94) [-0.92, -0.39, 0.39, -0.92, 0, 0] + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Clip: Path (Vector(x: -47, y: -402) > Vector(x: 582, y: -402) > Vector(x: 582, y: 215) > Vector(x: -47, y: 215)) + Fill: rgb(255,0,255) + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) \ No newline at end of file diff --git a/tests/cases/overflow/overflow.html b/tests/reftests/overflow/overflow.html similarity index 98% rename from tests/cases/overflow/overflow.html rename to tests/reftests/overflow/overflow.html index 44716976c..05dce7888 100644 --- a/tests/cases/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -25,6 +25,9 @@ h1 { margin:0; } + body { + font-family: Arial; + } diff --git a/tests/reftests/overflow/overflow.txt b/tests/reftests/overflow/overflow.txt new file mode 100644 index 000000000..75f8527e6 --- /dev/null +++ b/tests/reftests/overflow/overflow.txt @@ -0,0 +1,567 @@ +Window: [800, 626] +Rectangle: [0, 0, 800, 626] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 700 32px Arial + [8, 8]: Overflow: + [164, 8]: visible +Clip: Path (Vector(x: 8, y: 45) > Vector(x: 320, y: 45) > Vector(x: 320, y: 257) > Vector(x: 8, y: 257)) + Fill: rgb(204,204,204) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 45) > Vector(x: 320, y: 45) > Vector(x: 314, y: 51) > Vector(x: 14, y: 51)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 45) > Vector(x: 320, y: 257) > Vector(x: 314, y: 251) > Vector(x: 314, y: 51)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 257) > Vector(x: 8, y: 257) > Vector(x: 14, y: 251) > Vector(x: 314, y: 251)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 257) > Vector(x: 8, y: 45) > Vector(x: 14, y: 51) > Vector(x: 14, y: 251)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [14, 51]: Lorem + [64, 51]: Ipsum + [112, 51]: is + [128, 51]: simply + [178, 51]: dummy + [234, 51]: text + [265, 51]: of + [282, 51]: the + [14, 69]: printing + [71, 69]: and + [102, 69]: typesetting + [184, 69]: industry. + [248, 69]: Lorem + [14, 87]: Ipsum + [62, 87]: has + [92, 87]: been + [132, 87]: the + [159, 87]: industry's + [230, 87]: standard + [14, 105]: dummy + [71, 105]: text + [101, 105]: ever + [137, 105]: since + [178, 105]: the + [205, 105]: 1500s, + [258, 105]: when + [14, 123]: an + [36, 123]: unknown + [105, 123]: printer + [154, 123]: took + [189, 123]: a + [202, 123]: galley + [249, 123]: of + [267, 123]: type + [14, 141]: and + [45, 141]: scrambled + [123, 141]: it + [136, 141]: to + [154, 141]: make + [197, 141]: a + [210, 141]: type + [245, 141]: specimen + [14, 159]: book. + [58, 159]: It + [71, 159]: has + [101, 159]: survived + [165, 159]: not + [192, 159]: only + [226, 159]: five + [14, 177]: centuries, + [88, 177]: but + [114, 177]: also + [148, 177]: the + [175, 177]: leap + [210, 177]: into + [240, 177]: electronic + [14, 195]: typesetting, + [100, 195]: remaining + [175, 195]: essentially + [14, 213]: unchanged. + [102, 213]: It + [116, 213]: was + [148, 213]: popularised + [236, 213]: in + [252, 213]: the + [14, 231]: 1960s + [62, 231]: with + [95, 231]: the + [122, 231]: release + [178, 231]: of + [196, 231]: Letraset + [258, 231]: sheets + [14, 249]: containing + [91, 249]: Lorem + [141, 249]: Ipsum + [189, 249]: passages, + [266, 249]: and + [14, 267]: more + [55, 267]: recently + [115, 267]: with + [148, 267]: desktop + [209, 267]: publishing + [14, 285]: software + [79, 285]: like +Text: rgb(0,0,0) normal normal 400 16px Arial + [245, 285]: including + [14, 303]: versions + [78, 303]: of + [96, 303]: Lorem + [146, 303]: Ipsum. +Text: rgb(0,0,0) normal normal 700 32px Arial + [8, 317]: Overflow: + [164, 317]: hidden +Clip: Path (Vector(x: 8, y: 354) > Vector(x: 320, y: 354) > Vector(x: 320, y: 566) > Vector(x: 8, y: 566)) + Fill: rgb(204,204,204) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 354) > Vector(x: 320, y: 354) > Vector(x: 314, y: 360) > Vector(x: 14, y: 360)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 354) > Vector(x: 320, y: 566) > Vector(x: 314, y: 560) > Vector(x: 314, y: 360)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 566) > Vector(x: 8, y: 566) > Vector(x: 14, y: 560) > Vector(x: 314, y: 560)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 566) > Vector(x: 8, y: 354) > Vector(x: 14, y: 360) > Vector(x: 14, y: 560)) +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [14, 360]: Lorem + [64, 360]: Ipsum + [112, 360]: is + [128, 360]: simply + [178, 360]: dummy + [234, 360]: text + [265, 360]: of + [282, 360]: the + [14, 378]: printing + [71, 378]: and + [102, 378]: typesetting + [184, 378]: industry. + [248, 378]: Lorem + [14, 396]: Ipsum + [62, 396]: has + [92, 396]: been + [132, 396]: the + [159, 396]: industry's + [230, 396]: standard + [14, 414]: dummy + [71, 414]: text + [101, 414]: ever + [137, 414]: since + [178, 414]: the + [205, 414]: 1500s, + [258, 414]: when + [14, 432]: an + [36, 432]: unknown + [105, 432]: printer + [154, 432]: took + [189, 432]: a + [202, 432]: galley + [249, 432]: of + [267, 432]: type + [14, 450]: and + [45, 450]: scrambled + [123, 450]: it + [136, 450]: to + [154, 450]: make + [197, 450]: a + [210, 450]: type + [245, 450]: specimen + [14, 468]: book. + [58, 468]: It + [71, 468]: has + [101, 468]: survived + [165, 468]: not + [192, 468]: only + [226, 468]: five + [14, 486]: centuries, + [88, 486]: but + [114, 486]: also + [148, 486]: the + [175, 486]: leap + [210, 486]: into + [240, 486]: electronic + [14, 504]: typesetting, + [100, 504]: remaining + [175, 504]: essentially + [14, 522]: unchanged. + [102, 522]: It + [116, 522]: was + [148, 522]: popularised + [236, 522]: in + [252, 522]: the + [14, 540]: 1960s + [62, 540]: with + [95, 540]: the + [122, 540]: release + [178, 540]: of + Text: rgb(0,0,0) normal normal 400 16px Arial + [14, 833]: Letraset + [76, 833]: sheets + [128, 833]: containing + [205, 833]: Lorem + [255, 833]: Ipsum + [14, 911]: passages, + Text: rgb(0,0,0) normal normal 400 16px Arial + [171, 911]: and + [202, 911]: more + [243, 911]: recently + [14, 929]: with + [47, 929]: desktop + [107, 929]: publishing + [184, 929]: software + [249, 929]: like + Text: rgb(0,0,0) normal normal 400 16px Arial + [152, 947]: including + [220, 947]: versions + [284, 947]: of + [14, 965]: Lorem + [64, 965]: Ipsum. +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Clip: Path (Vector(x: 14, y: 558) > Vector(x: 314, y: 558) > Vector(x: 314, y: 773) > Vector(x: 14, y: 773)) + Fill: rgb(0,128,0) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 558) > Vector(x: 314, y: 558) > Vector(x: 314, y: 568) > Vector(x: 14, y: 568)) + Shape: rgb(0,0,0) Path (Vector(x: 314, y: 558) > Vector(x: 314, y: 773) > Vector(x: 314, y: 768) > Vector(x: 314, y: 568)) + Shape: rgb(0,0,0) Path (Vector(x: 314, y: 773) > Vector(x: 14, y: 773) > Vector(x: 14, y: 768) > Vector(x: 314, y: 768)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 773) > Vector(x: 14, y: 558) > Vector(x: 14, y: 568) > Vector(x: 14, y: 768)) +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [14, 568]: a +Clip: Path (BezierCurve(x0: 480, y0: 410, x1: 636, y1: 354, cx0: 480, cy0: 379, cx1: 550, cy1: 354) > BezierCurve(x0: 636, y0: 354, x1: 792, y1: 410, cx0: 722, cy0: 354, cx1: 792, cy1: 379) > BezierCurve(x0: 792, y0: 410, x1: 636, y1: 466, cx0: 792, cy0: 441, cx1: 722, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 480, y1: 410, cx0: 550, cy0: 466, cx1: 480, cy1: 441)) + Fill: rgb(204,204,204) +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [486, 360]: Lorem + [536, 360]: Ipsum + [584, 360]: is + [600, 360]: simply + [650, 360]: dummy + [706, 360]: text + [737, 360]: of + [754, 360]: the + [486, 378]: printing + [543, 378]: and + [574, 378]: typesetting + [656, 378]: industry. + [720, 378]: Lorem + [486, 396]: Ipsum + [534, 396]: has + [564, 396]: been + [604, 396]: the + [631, 396]: industry's + [702, 396]: standard + [486, 414]: dummy + [543, 414]: text + [573, 414]: ever + [609, 414]: since + [650, 414]: the + [677, 414]: 1500s, + [730, 414]: when + [486, 432]: an + [508, 432]: unknown + [577, 432]: printer + [626, 432]: took + [661, 432]: a + [674, 432]: galley + [721, 432]: of + [739, 432]: type + [486, 450]: and + [517, 450]: scrambled + [595, 450]: it + [608, 450]: to + [626, 450]: make + [669, 450]: a + [682, 450]: type + [717, 450]: specimen + [486, 468]: book. + [530, 468]: It + [543, 468]: has + [573, 468]: survived + [637, 468]: not + [664, 468]: only + [698, 468]: five + [486, 486]: centuries, + [560, 486]: but + [586, 486]: also + [620, 486]: the + [647, 486]: leap + [682, 486]: into + [712, 486]: electronic + [486, 504]: typesetting, + [572, 504]: remaining + [647, 504]: essentially + [486, 522]: unchanged. + [574, 522]: It + [588, 522]: was + [620, 522]: popularised + [708, 522]: in + [724, 522]: the + [486, 540]: 1960s + [534, 540]: with + [567, 540]: the + [594, 540]: release + [650, 540]: of + Text: rgb(0,0,0) normal normal 400 16px Arial + [486, 833]: Letraset + [548, 833]: sheets + [600, 833]: containing + [677, 833]: Lorem + [727, 833]: Ipsum + [486, 911]: passages, + Text: rgb(0,0,0) normal normal 400 16px Arial + [643, 911]: and + [674, 911]: more + [715, 911]: recently + [486, 929]: with + [519, 929]: desktop + [579, 929]: publishing + [656, 929]: software + [721, 929]: like + Text: rgb(0,0,0) normal normal 400 16px Arial + [624, 947]: including + [692, 947]: versions + [756, 947]: of + [486, 965]: Lorem + [536, 965]: Ipsum. +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Clip: Path (Vector(x: 486, y: 558) > Vector(x: 786, y: 558) > Vector(x: 786, y: 773) > Vector(x: 486, y: 773)) + Fill: rgb(0,128,0) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 558) > Vector(x: 786, y: 558) > Vector(x: 786, y: 568) > Vector(x: 486, y: 568)) + Shape: rgb(0,0,0) Path (Vector(x: 786, y: 558) > Vector(x: 786, y: 773) > Vector(x: 786, y: 768) > Vector(x: 786, y: 568)) + Shape: rgb(0,0,0) Path (Vector(x: 786, y: 773) > Vector(x: 486, y: 773) > Vector(x: 486, y: 768) > Vector(x: 786, y: 768)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 773) > Vector(x: 486, y: 558) > Vector(x: 486, y: 568) > Vector(x: 486, y: 768)) +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [486, 568]: a +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Clip: Path (Vector(x: 563, y: 851) > Vector(x: 638, y: 851) > Vector(x: 638, y: 926) > Vector(x: 563, y: 926)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 700 16px Arial + [486, 947]: Aldus + [535, 947]: PageMaker +Text: rgb(0,0,0) normal normal 700 16px Arial + [107, 285]: Aldus + [156, 285]: PageMaker +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Clip: Path (Vector(x: 91, y: 851) > Vector(x: 166, y: 851) > Vector(x: 166, y: 926) > Vector(x: 91, y: 926)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 700 16px Arial + [14, 947]: Aldus + [63, 947]: PageMaker +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Clip: Path (Vector(x: 486, y: 983) > Vector(x: 798, y: 983) > Vector(x: 798, y: 1195) > Vector(x: 486, y: 1195)) + Fill: rgb(204,204,204) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 983) > Vector(x: 798, y: 983) > Vector(x: 792, y: 989) > Vector(x: 492, y: 989)) + Shape: rgb(0,0,0) Path (Vector(x: 798, y: 983) > Vector(x: 798, y: 1195) > Vector(x: 792, y: 1189) > Vector(x: 792, y: 989)) + Shape: rgb(0,0,0) Path (Vector(x: 798, y: 1195) > Vector(x: 486, y: 1195) > Vector(x: 492, y: 1189) > Vector(x: 792, y: 1189)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 1195) > Vector(x: 486, y: 983) > Vector(x: 492, y: 989) > Vector(x: 492, y: 1189)) +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [492, 1043]: Lorem + [542, 1043]: Ipsum + [590, 1043]: is + [606, 1043]: simply + [656, 1043]: dummy + [712, 1043]: text + [743, 1043]: of + [760, 1043]: the + [492, 1061]: printing + [549, 1061]: and + [580, 1061]: typesetting + [662, 1061]: industry. + [726, 1061]: Lorem + [492, 1079]: Ipsum + [540, 1079]: has + [570, 1079]: been + [610, 1079]: the + [637, 1079]: industry's + [708, 1079]: standard + [492, 1097]: dummy + [549, 1097]: text + [579, 1097]: ever + [615, 1097]: since + [656, 1097]: the + [683, 1097]: 1500s, + [736, 1097]: when + [492, 1115]: an + [514, 1115]: unknown + [583, 1115]: printer + [632, 1115]: took + [667, 1115]: a + [680, 1115]: galley + [727, 1115]: of + [745, 1115]: type + [492, 1133]: and + [523, 1133]: scrambled + [601, 1133]: it + [614, 1133]: to + [632, 1133]: make + [675, 1133]: a + [688, 1133]: type + [723, 1133]: specimen + [492, 1151]: book. + [536, 1151]: It + [549, 1151]: has + [579, 1151]: survived + [643, 1151]: not + [670, 1151]: only + [704, 1151]: five + [492, 1169]: centuries, + [566, 1169]: but + [592, 1169]: also + [626, 1169]: the + [653, 1169]: leap + [688, 1169]: into + [718, 1169]: electronic + [492, 1187]: typesetting, + [578, 1187]: remaining + [653, 1187]: essentially + [492, 1205]: unchanged. + [580, 1205]: It + [594, 1205]: was + [626, 1205]: popularised + [714, 1205]: in + [730, 1205]: the + [492, 1223]: 1960s + [540, 1223]: with + [573, 1223]: the + [600, 1223]: release + [656, 1223]: of + [674, 1223]: Letraset + [736, 1223]: sheets + [492, 1241]: containing + [569, 1241]: Lorem + [619, 1241]: Ipsum + [667, 1241]: passages, + [744, 1241]: and + [492, 1259]: more + [533, 1259]: recently + [593, 1259]: with + [626, 1259]: desktop + [687, 1259]: publishing + [492, 1277]: software + [557, 1277]: like + Text: rgb(0,0,0) normal normal 400 16px Arial + [723, 1277]: including + [492, 1295]: versions + [556, 1295]: of + [574, 1295]: Lorem + [624, 1295]: Ipsum. +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 400 16px Arial solid rgb(0,0,0) underline + [492, 989]: position:relative + [603, 989]: + [608, 989]: within + [648, 989]: + [653, 989]: a + [662, 989]: + [666, 989]: overflow:hidden + [778, 989]: + [492, 1007]: element +Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Text: rgb(0,0,0) normal normal 700 16px Arial + [585, 1277]: Aldus + [634, 1277]: PageMaker +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Clip: Path (Vector(x: 14, y: 983) > Vector(x: 326, y: 983) > Vector(x: 326, y: 1195) > Vector(x: 14, y: 1195)) + Fill: rgb(204,204,204) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 983) > Vector(x: 326, y: 983) > Vector(x: 320, y: 989) > Vector(x: 20, y: 989)) + Shape: rgb(0,0,0) Path (Vector(x: 326, y: 983) > Vector(x: 326, y: 1195) > Vector(x: 320, y: 1189) > Vector(x: 320, y: 989)) + Shape: rgb(0,0,0) Path (Vector(x: 326, y: 1195) > Vector(x: 14, y: 1195) > Vector(x: 20, y: 1189) > Vector(x: 320, y: 1189)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 1195) > Vector(x: 14, y: 983) > Vector(x: 20, y: 989) > Vector(x: 20, y: 1189)) +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [20, 1043]: Lorem + [70, 1043]: Ipsum + [118, 1043]: is + [134, 1043]: simply + [184, 1043]: dummy + [240, 1043]: text + [271, 1043]: of + [288, 1043]: the + [20, 1061]: printing + [77, 1061]: and + [108, 1061]: typesetting + [190, 1061]: industry. + [254, 1061]: Lorem + [20, 1079]: Ipsum + [68, 1079]: has + [98, 1079]: been + [138, 1079]: the + [165, 1079]: industry's + [236, 1079]: standard + [20, 1097]: dummy + [77, 1097]: text + [107, 1097]: ever + [143, 1097]: since + [184, 1097]: the + [211, 1097]: 1500s, + [264, 1097]: when + [20, 1115]: an + [42, 1115]: unknown + [111, 1115]: printer + [160, 1115]: took + [195, 1115]: a + [208, 1115]: galley + [255, 1115]: of + [273, 1115]: type + [20, 1133]: and + [51, 1133]: scrambled + [129, 1133]: it + [142, 1133]: to + [160, 1133]: make + [203, 1133]: a + [216, 1133]: type + [251, 1133]: specimen + [20, 1151]: book. + [64, 1151]: It + [77, 1151]: has + [107, 1151]: survived + [171, 1151]: not + [198, 1151]: only + [232, 1151]: five + [20, 1169]: centuries, + [94, 1169]: but + [120, 1169]: also + [154, 1169]: the + [181, 1169]: leap + [216, 1169]: into + [246, 1169]: electronic + [20, 1187]: typesetting, + [106, 1187]: remaining + [181, 1187]: essentially + [20, 1205]: unchanged. + [108, 1205]: It + [122, 1205]: was + [154, 1205]: popularised + [242, 1205]: in + [258, 1205]: the + [20, 1223]: 1960s + [68, 1223]: with + [101, 1223]: the + [128, 1223]: release + [184, 1223]: of + [202, 1223]: Letraset + [264, 1223]: sheets + [20, 1241]: containing + [97, 1241]: Lorem + [147, 1241]: Ipsum + [195, 1241]: passages, + [272, 1241]: and + [20, 1259]: more + [61, 1259]: recently + [121, 1259]: with + [154, 1259]: desktop + [215, 1259]: publishing + [20, 1277]: software + [85, 1277]: like + Text: rgb(0,0,0) normal normal 400 16px Arial + [251, 1277]: including + [20, 1295]: versions + [84, 1295]: of + [102, 1295]: Lorem + [152, 1295]: Ipsum. +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 400 16px Arial solid rgb(0,0,0) underline + [20, 989]: position:relative + [131, 989]: + [136, 989]: within + [176, 989]: + [181, 989]: a + [190, 989]: + [194, 989]: overflow:hidden + [306, 989]: + [20, 1007]: element +Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Text: rgb(0,0,0) normal normal 700 16px Arial + [113, 1277]: Aldus + [162, 1277]: PageMaker \ No newline at end of file diff --git a/tests/cases/pseudoelements.html b/tests/reftests/pseudoelements.html similarity index 96% rename from tests/cases/pseudoelements.html rename to tests/reftests/pseudoelements.html index 1227cded4..905c0c96d 100644 --- a/tests/cases/pseudoelements.html +++ b/tests/reftests/pseudoelements.html @@ -41,7 +41,9 @@ .none *::after { display:none; } - + body { + font-family: Arial; + } diff --git a/tests/reftests/pseudoelements.txt b/tests/reftests/pseudoelements.txt new file mode 100644 index 000000000..496829ea2 --- /dev/null +++ b/tests/reftests/pseudoelements.txt @@ -0,0 +1,73 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [90, 8]: Content + [150, 8]: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: root + [40, 8]: before! +Text: rgb(0,0,0) normal normal 400 16px Arial + [164, 8]: after! +Text: rgb(0,0,0) normal normal 400 16px Arial + [286, 8]: Content + [347, 8]: 2 +Text: rgb(0,0,0) normal normal 400 16px Arial + [204, 8]: root + [236, 8]: before! +Text: rgb(0,0,0) normal normal 400 16px Arial + [360, 8]: after! +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 26]: Content + [68, 26]: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [82, 26]: Content + [142, 26]: 2 +Text: rgb(0,0,0) normal normal 400 16px Arial + [90, 105]: Content + [150, 105]: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 105]: root + [40, 105]: before! +Clip: Path (Vector(x: 159, y: 44) > Vector(x: 234, y: 44) > Vector(x: 234, y: 119) > Vector(x: 159, y: 119)) + Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Text: rgb(0,0,0) normal normal 400 16px Arial + [320, 105]: Content + [381, 105]: 2 +Text: rgb(0,0,0) normal normal 400 16px Arial + [239, 105]: root + [271, 105]: before! +Clip: Path (Vector(x: 390, y: 44) > Vector(x: 465, y: 44) > Vector(x: 465, y: 119) > Vector(x: 390, y: 119)) + Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Text: rgb(0,0,0) normal normal 400 16px Arial + [100, 123]: Content + [160, 123]: 1 +Clip: Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 8, y: 145)) + Repeat: Image ("/tests/assets/image_1.jpg") [13, 123] Size (75, 75) Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 8, y: 145)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 118) > Vector(x: 100, y: 118) > Vector(x: 95, y: 123) > Vector(x: 13, y: 123)) +Shape: rgb(255,0,0) Path (Vector(x: 100, y: 118) > Vector(x: 100, y: 145) > Vector(x: 95, y: 140) > Vector(x: 95, y: 123)) +Shape: rgb(255,0,0) Path (Vector(x: 100, y: 145) > Vector(x: 8, y: 145) > Vector(x: 13, y: 140) > Vector(x: 95, y: 140)) +Shape: rgb(255,0,0) Path (Vector(x: 8, y: 145) > Vector(x: 8, y: 118) > Vector(x: 13, y: 123) > Vector(x: 13, y: 140)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [13, 123]: root + [45, 123]: before! +Clip: Path (Vector(x: 169, y: 123) > Vector(x: 210, y: 123) > Vector(x: 210, y: 140) > Vector(x: 169, y: 140)) + Repeat: Image ("/tests/assets/image2_1.jpg") [169, 123] Size (75, 75) Path (Vector(x: 169, y: 123) > Vector(x: 210, y: 123) > Vector(x: 210, y: 140) > Vector(x: 169, y: 140)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [174, 123]: after! +Text: rgb(0,0,0) normal normal 400 16px Arial + [306, 123]: Content + [367, 123]: 2 +Clip: Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 215, y: 145)) + Repeat: Image ("/tests/assets/image_1.jpg") [220, 123] Size (75, 75) Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 215, y: 145)) +Shape: rgb(255,0,0) Path (Vector(x: 215, y: 118) > Vector(x: 306, y: 118) > Vector(x: 301, y: 123) > Vector(x: 220, y: 123)) +Shape: rgb(255,0,0) Path (Vector(x: 306, y: 118) > Vector(x: 306, y: 145) > Vector(x: 301, y: 140) > Vector(x: 301, y: 123)) +Shape: rgb(255,0,0) Path (Vector(x: 306, y: 145) > Vector(x: 215, y: 145) > Vector(x: 220, y: 140) > Vector(x: 301, y: 140)) +Shape: rgb(255,0,0) Path (Vector(x: 215, y: 145) > Vector(x: 215, y: 118) > Vector(x: 220, y: 123) > Vector(x: 220, y: 140)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [220, 123]: root + [252, 123]: before! +Clip: Path (Vector(x: 376, y: 123) > Vector(x: 417, y: 123) > Vector(x: 417, y: 140) > Vector(x: 376, y: 140)) + Repeat: Image ("/tests/assets/image2_1.jpg") [376, 123] Size (75, 75) Path (Vector(x: 376, y: 123) > Vector(x: 417, y: 123) > Vector(x: 417, y: 140) > Vector(x: 376, y: 140)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [380, 123]: after! \ No newline at end of file diff --git a/tests/cases/text/child-textnodes.html b/tests/reftests/text/child-textnodes.html similarity index 91% rename from tests/cases/text/child-textnodes.html rename to tests/reftests/text/child-textnodes.html index 3f0c48dba..5cf59b49d 100644 --- a/tests/cases/text/child-textnodes.html +++ b/tests/reftests/text/child-textnodes.html @@ -11,6 +11,9 @@ p { background-color: green; } + body { + font-family: Arial; + } diff --git a/tests/reftests/text/child-textnodes.txt b/tests/reftests/text/child-textnodes.txt new file mode 100644 index 000000000..977622ab3 --- /dev/null +++ b/tests/reftests/text/child-textnodes.txt @@ -0,0 +1,32 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 8]: Some + [54, 8]: inline + [96, 8]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [297, 8]: followed + [360, 8]: by + [382, 8]: more + [422, 8]: inline + [464, 8]: text. +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 76]: Then + [49, 76]: more + [90, 76]: inline + [132, 76]: text. +Clip: Path (Vector(x: 8, y: 42) > Vector(x: 792, y: 42) > Vector(x: 792, y: 60) > Vector(x: 8, y: 60)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 42]: Then + [49, 42]: a + [62, 42]: block + [104, 42]: level + [142, 42]: element. +Text: rgb(0,0,255) normal normal 400 16px Arial + [126, 8]: followed + [190, 8]: by + [211, 8]: text + [241, 8]: in + [258, 8]: span \ No newline at end of file diff --git a/tests/cases/text/chinese.html b/tests/reftests/text/chinese.html similarity index 100% rename from tests/cases/text/chinese.html rename to tests/reftests/text/chinese.html diff --git a/tests/reftests/text/chinese.txt b/tests/reftests/text/chinese.txt new file mode 100644 index 000000000..1c8f779f5 --- /dev/null +++ b/tests/reftests/text/chinese.txt @@ -0,0 +1,1532 @@ +Window: [800, 1336] +Rectangle: [0, 0, 800, 1336] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 24]: 注 + [56, 24]: 释 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 59]: 〔 + [40, 59]: 1 + [48, 59]: 〕 + [68, 59]: 见 + [84, 59]: 本 + [100, 59]: 书 + [116, 59]: 第 + [132, 59]: 一 + [148, 59]: 卷 + [164, 59]: 《 + [180, 59]: 实 + [196, 59]: 践 + [212, 59]: 论 + [228, 59]: 》 + [244, 59]: 注 + [260, 59]: 〔 + [276, 59]: 6 + [284, 59]: 〕 + [300, 59]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 94]: 〔 + [40, 94]: 2 + [48, 94]: 〕 + [68, 94]: 见 + [84, 94]: 列 + [100, 94]: 宁 + [116, 94]: 《 + [132, 94]: 党 + [148, 94]: 的 + [164, 94]: 组 + [180, 94]: 织 + [196, 94]: 和 + [212, 94]: 党 + [228, 94]: 的 + [244, 94]: 出 + [260, 94]: 版 + [276, 94]: 物 + [292, 94]: 》 + [308, 94]: 。 + [324, 94]: 列 + [340, 94]: 宁 + [356, 94]: 在 + [372, 94]: 这 + [388, 94]: 篇 + [404, 94]: 论 + [420, 94]: 文 + [436, 94]: 中 + [452, 94]: 说 + [468, 94]: : + [484, 94]: “ + [491, 94]: 这 + [8, 113]: 将 + [24, 113]: 是 + [40, 113]: 自 + [56, 113]: 由 + [72, 113]: 的 + [88, 113]: 写 + [104, 113]: 作 + [120, 113]: , + [136, 113]: 因 + [152, 113]: 为 + [168, 113]: 把 + [184, 113]: 一 + [200, 113]: 批 + [216, 113]: 又 + [232, 113]: 一 + [248, 113]: 批 + [264, 113]: 新 + [280, 113]: 生 + [296, 113]: 力 + [312, 113]: 量 + [328, 113]: 吸 + [344, 113]: 引 + [360, 113]: 到 + [376, 113]: 写 + [392, 113]: 作 + [408, 113]: 队 + [424, 113]: 伍 + [440, 113]: 中 + [456, 113]: 来 + [472, 113]: 的 + [488, 113]: , + [8, 132]: 不 + [24, 132]: 是 + [40, 132]: 私 + [56, 132]: 利 + [72, 132]: 贪 + [88, 132]: 欲 + [104, 132]: , + [120, 132]: 也 + [136, 132]: 不 + [152, 132]: 是 + [168, 132]: 名 + [184, 132]: 誉 + [200, 132]: 地 + [216, 132]: 位 + [232, 132]: , + [248, 132]: 而 + [264, 132]: 是 + [280, 132]: 社 + [296, 132]: 会 + [312, 132]: 主 + [328, 132]: 义 + [344, 132]: 思 + [360, 132]: 想 + [376, 132]: 和 + [392, 132]: 对 + [408, 132]: 劳 + [424, 132]: 动 + [440, 132]: 人 + [456, 132]: 民 + [472, 132]: 的 + [488, 132]: 同 + [8, 150]: 情 + [24, 150]: 。 + [40, 150]: 这 + [56, 150]: 将 + [72, 150]: 是 + [88, 150]: 自 + [104, 150]: 由 + [120, 150]: 的 + [136, 150]: 写 + [152, 150]: 作 + [168, 150]: , + [184, 150]: 因 + [200, 150]: 为 + [216, 150]: 它 + [232, 150]: 不 + [248, 150]: 是 + [264, 150]: 为 + [280, 150]: 饱 + [296, 150]: 食 + [312, 150]: 终 + [328, 150]: 日 + [344, 150]: 的 + [360, 150]: 贵 + [376, 150]: 妇 + [392, 150]: 人 + [408, 150]: 服 + [424, 150]: 务 + [440, 150]: , + [456, 150]: 不 + [472, 150]: 是 + [488, 150]: 为 + [8, 169]: 百 + [24, 169]: 无 + [40, 169]: 聊 + [56, 169]: 赖 + [72, 169]: 、 + [88, 169]: 胖 + [104, 169]: 得 + [120, 169]: 发 + [136, 169]: 愁 + [152, 169]: 的 + [168, 169]: ‘ + [173, 169]: 一 + [189, 169]: 万 + [205, 169]: 个 + [221, 169]: 上 + [237, 169]: 层 + [253, 169]: 分 + [269, 169]: 子 + [285, 169]: ’ + [291, 169]: 服 + [307, 169]: 务 + [323, 169]: , + [339, 169]: 而 + [355, 169]: 是 + [371, 169]: 为 + [387, 169]: 千 + [403, 169]: 千 + [419, 169]: 万 + [435, 169]: 万 + [451, 169]: 劳 + [467, 169]: 动 + [483, 169]: 人 + [8, 188]: 民 + [24, 188]: , + [40, 188]: 为 + [56, 188]: 这 + [72, 188]: 些 + [88, 188]: 国 + [104, 188]: 家 + [120, 188]: 的 + [136, 188]: 精 + [152, 188]: 华 + [168, 188]: 、 + [184, 188]: 国 + [200, 188]: 家 + [216, 188]: 的 + [232, 188]: 力 + [248, 188]: 量 + [264, 188]: 、 + [280, 188]: 国 + [296, 188]: 家 + [312, 188]: 的 + [328, 188]: 未 + [344, 188]: 来 + [360, 188]: 服 + [376, 188]: 务 + [392, 188]: 。 + [408, 188]: 这 + [424, 188]: 将 + [440, 188]: 是 + [456, 188]: 自 + [472, 188]: 由 + [488, 188]: 的 + [8, 207]: 写 + [24, 207]: 作 + [40, 207]: , + [56, 207]: 它 + [72, 207]: 要 + [88, 207]: 用 + [104, 207]: 社 + [120, 207]: 会 + [136, 207]: 主 + [152, 207]: 义 + [168, 207]: 无 + [184, 207]: 产 + [200, 207]: 阶 + [216, 207]: 级 + [232, 207]: 的 + [248, 207]: 经 + [264, 207]: 验 + [280, 207]: 和 + [296, 207]: 生 + [312, 207]: 气 + [328, 207]: 勃 + [344, 207]: 勃 + [360, 207]: 的 + [376, 207]: 工 + [392, 207]: 作 + [408, 207]: 去 + [424, 207]: 丰 + [440, 207]: 富 + [456, 207]: 人 + [472, 207]: 类 + [488, 207]: 革 + [8, 226]: 命 + [24, 226]: 思 + [40, 226]: 想 + [56, 226]: 的 + [72, 226]: 最 + [88, 226]: 新 + [104, 226]: 成 + [120, 226]: 就 + [136, 226]: , + [152, 226]: 它 + [168, 226]: 要 + [184, 226]: 使 + [200, 226]: 过 + [216, 226]: 去 + [232, 226]: 的 + [248, 226]: 经 + [264, 226]: 验 + [280, 226]: ( + [296, 226]: 从 + [312, 226]: 原 + [328, 226]: 始 + [344, 226]: 空 + [360, 226]: 想 + [376, 226]: 的 + [392, 226]: 社 + [408, 226]: 会 + [424, 226]: 主 + [440, 226]: 义 + [456, 226]: 发 + [472, 226]: 展 + [488, 226]: 而 + [8, 244]: 成 + [24, 244]: 的 + [40, 244]: 科 + [56, 244]: 学 + [72, 244]: 社 + [88, 244]: 会 + [104, 244]: 主 + [120, 244]: 义 + [136, 244]: ) + [152, 244]: 和 + [168, 244]: 现 + [184, 244]: 在 + [200, 244]: 的 + [216, 244]: 经 + [232, 244]: 验 + [248, 244]: ( + [264, 244]: 工 + [280, 244]: 人 + [296, 244]: 同 + [312, 244]: 志 + [328, 244]: 们 + [344, 244]: 当 + [360, 244]: 前 + [376, 244]: 的 + [392, 244]: 斗 + [408, 244]: 争 + [424, 244]: ) + [440, 244]: 之 + [456, 244]: 间 + [472, 244]: 经 + [488, 244]: 常 + [8, 263]: 发 + [24, 263]: 生 + [40, 263]: 相 + [56, 263]: 互 + [72, 263]: 作 + [88, 263]: 用 + [104, 263]: 。 + [120, 263]: ” + [127, 263]: ( + [143, 263]: 《 + [159, 263]: 列 + [175, 263]: 宁 + [191, 263]: 全 + [207, 263]: 集 + [223, 263]: 》 + [239, 263]: 第 + [255, 263]: 1 + [263, 263]: 2 + [271, 263]: 卷 + [287, 263]: , + [303, 263]: 人 + [319, 263]: 民 + [335, 263]: 出 + [351, 263]: 版 + [367, 263]: 社 + [383, 263]: 1 + [391, 263]: 9 + [399, 263]: 8 + [407, 263]: 7 + [415, 263]: 年 + [431, 263]: 版 + [447, 263]: , + [463, 263]: 第 + [479, 263]: 9 + [487, 263]: 6 + [8, 282]: — + [24, 282]: 9 + [32, 282]: 7 + [40, 282]: 页 + [56, 282]: ) +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 317]: 〔 + [40, 317]: 3 + [48, 317]: 〕 + [68, 317]: 梁 + [84, 317]: 实 + [100, 317]: 秋 + [116, 317]: ( + [132, 317]: 一 + [148, 317]: 九 + [164, 317]: ○ + [174, 317]: 三 + [190, 317]: — + [206, 317]: — + [222, 317]: 一 + [238, 317]: 九 + [254, 317]: 八 + [270, 317]: 七 + [286, 317]: ) + [302, 317]: , + [318, 317]: 北 + [334, 317]: 京 + [350, 317]: 人 + [366, 317]: 。 + [382, 317]: 新 + [398, 317]: 月 + [414, 317]: 社 + [430, 317]: 主 + [446, 317]: 要 + [462, 317]: 成 + [8, 336]: 员 + [24, 336]: 。 + [40, 336]: 先 + [56, 336]: 后 + [72, 336]: 在 + [88, 336]: 复 + [104, 336]: 旦 + [120, 336]: 大 + [136, 336]: 学 + [152, 336]: 、 + [168, 336]: 北 + [184, 336]: 京 + [200, 336]: 大 + [216, 336]: 学 + [232, 336]: 等 + [248, 336]: 校 + [264, 336]: 任 + [280, 336]: 教 + [296, 336]: 。 + [312, 336]: 曾 + [328, 336]: 写 + [344, 336]: 过 + [360, 336]: 一 + [376, 336]: 些 + [392, 336]: 文 + [408, 336]: 艺 + [424, 336]: 评 + [440, 336]: 论 + [456, 336]: , + [472, 336]: 长 + [488, 336]: 时 + [8, 354]: 期 + [24, 354]: 致 + [40, 354]: 力 + [56, 354]: 于 + [72, 354]: 文 + [88, 354]: 学 + [104, 354]: 翻 + [120, 354]: 译 + [136, 354]: 工 + [152, 354]: 作 + [168, 354]: 和 + [184, 354]: 散 + [200, 354]: 文 + [216, 354]: 的 + [232, 354]: 写 + [248, 354]: 作 + [264, 354]: 。 + [280, 354]: 鲁 + [296, 354]: 迅 + [312, 354]: 对 + [328, 354]: 梁 + [344, 354]: 实 + [360, 354]: 秋 + [376, 354]: 的 + [392, 354]: 批 + [408, 354]: 评 + [424, 354]: , + [440, 354]: 见 + [456, 354]: 《 + [472, 354]: 三 + [488, 354]: 闲 + [8, 373]: 集 + [24, 373]: · + [29, 373]: 新 + [45, 373]: 月 + [61, 373]: 社 + [77, 373]: 批 + [93, 373]: 评 + [109, 373]: 家 + [125, 373]: 的 + [141, 373]: 任 + [157, 373]: 务 + [173, 373]: 》 + [189, 373]: 、 + [205, 373]: 《 + [221, 373]: 二 + [237, 373]: 心 + [253, 373]: 集 + [269, 373]: · + [275, 373]: “ + [282, 373]: 硬 + [298, 373]: 译 + [314, 373]: ” + [321, 373]: 与 + [337, 373]: “ + [344, 373]: 文 + [360, 373]: 学 + [376, 373]: 的 + [392, 373]: 阶 + [408, 373]: 级 + [424, 373]: 性 + [440, 373]: ” + [447, 373]: 》 + [463, 373]: 等 + [8, 392]: 文 + [24, 392]: 。 + [40, 392]: ( + [56, 392]: 《 + [72, 392]: 鲁 + [88, 392]: 迅 + [104, 392]: 全 + [120, 392]: 集 + [136, 392]: 》 + [152, 392]: 第 + [168, 392]: 4 + [176, 392]: 卷 + [192, 392]: , + [208, 392]: 人 + [224, 392]: 民 + [240, 392]: 文 + [256, 392]: 学 + [272, 392]: 出 + [288, 392]: 版 + [304, 392]: 社 + [320, 392]: 1 + [328, 392]: 9 + [336, 392]: 8 + [344, 392]: 1 + [352, 392]: 年 + [368, 392]: 版 + [384, 392]: , + [400, 392]: 第 + [416, 392]: 1 + [424, 392]: 5 + [432, 392]: 9 + [440, 392]: 、 + [456, 392]: 1 + [464, 392]: 9 + [472, 392]: 5 + [480, 392]: — + [8, 411]: 2 + [16, 411]: 1 + [24, 411]: 2 + [32, 411]: 页 + [48, 411]: ) +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 446]: 〔 + [40, 446]: 4 + [48, 446]: 〕 + [68, 446]: 周 + [84, 446]: 作 + [100, 446]: 人 + [116, 446]: ( + [132, 446]: 一 + [148, 446]: 八 + [164, 446]: 八 + [180, 446]: 五 + [196, 446]: — + [212, 446]: — + [228, 446]: 一 + [244, 446]: 九 + [260, 446]: 六 + [276, 446]: 七 + [292, 446]: ) + [308, 446]: , + [324, 446]: 浙 + [340, 446]: 江 + [356, 446]: 绍 + [372, 446]: 兴 + [388, 446]: 人 + [404, 446]: 。 + [420, 446]: 曾 + [436, 446]: 在 + [452, 446]: 北 + [468, 446]: 京 + [484, 446]: 大 + [8, 464]: 学 + [24, 464]: 、 + [40, 464]: 燕 + [56, 464]: 京 + [72, 464]: 大 + [88, 464]: 学 + [104, 464]: 等 + [120, 464]: 校 + [136, 464]: 任 + [152, 464]: 教 + [168, 464]: 。 + [184, 464]: 五 + [200, 464]: 四 + [216, 464]: 运 + [232, 464]: 动 + [248, 464]: 时 + [264, 464]: 从 + [280, 464]: 事 + [296, 464]: 新 + [312, 464]: 文 + [328, 464]: 学 + [344, 464]: 写 + [360, 464]: 作 + [376, 464]: 。 + [392, 464]: 他 + [408, 464]: 的 + [424, 464]: 著 + [440, 464]: 述 + [456, 464]: 很 + [472, 464]: 多 + [488, 464]: , + [8, 483]: 有 + [24, 483]: 大 + [40, 483]: 量 + [56, 483]: 的 + [72, 483]: 散 + [88, 483]: 文 + [104, 483]: 集 + [120, 483]: 、 + [136, 483]: 文 + [152, 483]: 学 + [168, 483]: 专 + [184, 483]: 著 + [200, 483]: 和 + [216, 483]: 翻 + [232, 483]: 译 + [248, 483]: 作 + [264, 483]: 品 + [280, 483]: 。 + [296, 483]: 张 + [312, 483]: 资 + [328, 483]: 平 + [344, 483]: ( + [360, 483]: 一 + [376, 483]: 八 + [392, 483]: 九 + [408, 483]: 三 + [424, 483]: — + [440, 483]: — + [456, 483]: 一 + [472, 483]: 九 + [488, 483]: 五 + [8, 502]: 九 + [24, 502]: ) + [40, 502]: , + [56, 502]: 广 + [72, 502]: 东 + [88, 502]: 梅 + [104, 502]: 县 + [120, 502]: 人 + [136, 502]: 。 + [152, 502]: 他 + [168, 502]: 写 + [184, 502]: 过 + [200, 502]: 很 + [216, 502]: 多 + [232, 502]: 小 + [248, 502]: 说 + [264, 502]: , + [280, 502]: 曾 + [296, 502]: 在 + [312, 502]: 暨 + [328, 502]: 南 + [344, 502]: 大 + [360, 502]: 学 + [376, 502]: 、 + [392, 502]: 大 + [408, 502]: 夏 + [424, 502]: 大 + [440, 502]: 学 + [456, 502]: 兼 + [472, 502]: 任 + [488, 502]: 教 + [8, 521]: 职 + [24, 521]: 。 + [40, 521]: 周 + [56, 521]: 作 + [72, 521]: 人 + [88, 521]: 、 + [104, 521]: 张 + [120, 521]: 资 + [136, 521]: 平 + [152, 521]: 于 + [168, 521]: 一 + [184, 521]: 九 + [200, 521]: 三 + [216, 521]: 八 + [232, 521]: 年 + [248, 521]: 和 + [264, 521]: 一 + [280, 521]: 九 + [296, 521]: 三 + [312, 521]: 九 + [328, 521]: 年 + [344, 521]: 先 + [360, 521]: 后 + [376, 521]: 在 + [392, 521]: 北 + [408, 521]: 平 + [424, 521]: 、 + [440, 521]: 上 + [456, 521]: 海 + [472, 521]: 依 + [488, 521]: 附 + [8, 540]: 侵 + [24, 540]: 略 + [40, 540]: 中 + [56, 540]: 国 + [72, 540]: 的 + [88, 540]: 日 + [104, 540]: 本 + [120, 540]: 占 + [136, 540]: 领 + [152, 540]: 者 + [168, 540]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 574]: 〔 + [40, 574]: 5 + [48, 574]: 〕 + [68, 574]: 见 + [84, 574]: 鲁 + [100, 574]: 迅 + [116, 574]: 《 + [132, 574]: 二 + [148, 574]: 心 + [164, 574]: 集 + [180, 574]: · + [185, 574]: 对 + [201, 574]: 于 + [217, 574]: 左 + [233, 574]: 翼 + [249, 574]: 作 + [265, 574]: 家 + [281, 574]: 联 + [297, 574]: 盟 + [313, 574]: 的 + [329, 574]: 意 + [345, 574]: 见 + [361, 574]: 》 + [377, 574]: ( + [393, 574]: 《 + [409, 574]: 鲁 + [425, 574]: 迅 + [441, 574]: 全 + [457, 574]: 集 + [473, 574]: 》 + [489, 574]: 第 + [8, 593]: 4 + [16, 593]: 卷 + [32, 593]: , + [48, 593]: 人 + [64, 593]: 民 + [80, 593]: 文 + [96, 593]: 学 + [112, 593]: 出 + [128, 593]: 版 + [144, 593]: 社 + [160, 593]: 1 + [168, 593]: 9 + [176, 593]: 8 + [184, 593]: 1 + [192, 593]: 年 + [208, 593]: 版 + [224, 593]: , + [240, 593]: 第 + [256, 593]: 2 + [264, 593]: 3 + [272, 593]: 7 + [280, 593]: — + [296, 593]: 2 + [304, 593]: 3 + [312, 593]: 8 + [320, 593]: 页 + [336, 593]: ) + [352, 593]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 628]: 〔 + [40, 628]: 6 + [48, 628]: 〕 + [68, 628]: 参 + [84, 628]: 见 + [100, 628]: 鲁 + [116, 628]: 迅 + [132, 628]: 《 + [148, 628]: 且 + [164, 628]: 介 + [180, 628]: 亭 + [196, 628]: 杂 + [212, 628]: 文 + [228, 628]: 末 + [244, 628]: 编 + [260, 628]: · + [265, 628]: 附 + [281, 628]: 集 + [297, 628]: · + [303, 628]: 死 + [319, 628]: 》 + [335, 628]: ( + [351, 628]: 《 + [367, 628]: 鲁 + [383, 628]: 迅 + [399, 628]: 全 + [415, 628]: 集 + [431, 628]: 》 + [447, 628]: 第 + [463, 628]: 6 + [471, 628]: 卷 + [487, 628]: , + [8, 647]: 人 + [24, 647]: 民 + [40, 647]: 文 + [56, 647]: 学 + [72, 647]: 出 + [88, 647]: 版 + [104, 647]: 社 + [120, 647]: 1 + [128, 647]: 9 + [136, 647]: 8 + [144, 647]: 1 + [152, 647]: 年 + [168, 647]: 版 + [184, 647]: , + [200, 647]: 第 + [216, 647]: 6 + [224, 647]: 1 + [232, 647]: 2 + [240, 647]: 页 + [256, 647]: ) + [272, 647]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 682]: 〔 + [40, 682]: 7 + [48, 682]: 〕 + [68, 682]: “ + [75, 682]: 小 + [91, 682]: 放 + [107, 682]: 牛 + [123, 682]: ” + [130, 682]: 是 + [146, 682]: 中 + [162, 682]: 国 + [178, 682]: 一 + [194, 682]: 出 + [210, 682]: 传 + [226, 682]: 统 + [242, 682]: 的 + [258, 682]: 小 + [274, 682]: 歌 + [290, 682]: 舞 + [306, 682]: 剧 + [322, 682]: 。 + [338, 682]: 全 + [354, 682]: 剧 + [370, 682]: 只 + [386, 682]: 有 + [402, 682]: 两 + [418, 682]: 个 + [434, 682]: 角 + [450, 682]: 色 + [466, 682]: , + [482, 682]: 男 + [8, 700]: 角 + [24, 700]: 是 + [40, 700]: 牧 + [56, 700]: 童 + [72, 700]: , + [88, 700]: 女 + [104, 700]: 角 + [120, 700]: 是 + [136, 700]: 乡 + [152, 700]: 村 + [168, 700]: 小 + [184, 700]: 姑 + [200, 700]: 娘 + [216, 700]: , + [232, 700]: 以 + [248, 700]: 互 + [264, 700]: 相 + [280, 700]: 对 + [296, 700]: 唱 + [312, 700]: 的 + [328, 700]: 方 + [344, 700]: 式 + [360, 700]: 表 + [376, 700]: 现 + [392, 700]: 剧 + [408, 700]: 的 + [424, 700]: 内 + [440, 700]: 容 + [456, 700]: 。 + [472, 700]: 抗 + [488, 700]: 日 + [8, 719]: 战 + [24, 719]: 争 + [40, 719]: 初 + [56, 719]: 期 + [72, 719]: , + [88, 719]: 革 + [104, 719]: 命 + [120, 719]: 的 + [136, 719]: 文 + [152, 719]: 艺 + [168, 719]: 工 + [184, 719]: 作 + [200, 719]: 者 + [216, 719]: 利 + [232, 719]: 用 + [248, 719]: 这 + [264, 719]: 个 + [280, 719]: 歌 + [296, 719]: 舞 + [312, 719]: 剧 + [328, 719]: 的 + [344, 719]: 形 + [360, 719]: 式 + [376, 719]: , + [392, 719]: 变 + [408, 719]: 动 + [424, 719]: 其 + [440, 719]: 原 + [456, 719]: 来 + [472, 719]: 的 + [488, 719]: 词 + [8, 738]: 句 + [24, 738]: , + [40, 738]: 宣 + [56, 738]: 传 + [72, 738]: 抗 + [88, 738]: 日 + [104, 738]: , + [120, 738]: 一 + [136, 738]: 时 + [152, 738]: 颇 + [168, 738]: 为 + [184, 738]: 流 + [200, 738]: 行 + [216, 738]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 773]: 〔 + [40, 773]: 8 + [48, 773]: 〕 + [68, 773]: “ + [75, 773]: 人 + [91, 773]: 、 + [107, 773]: 手 + [123, 773]: 、 + [139, 773]: 口 + [155, 773]: 、 + [171, 773]: 刀 + [187, 773]: 、 + [203, 773]: 牛 + [219, 773]: 、 + [235, 773]: 羊 + [251, 773]: ” + [258, 773]: 是 + [274, 773]: 笔 + [290, 773]: 画 + [306, 773]: 比 + [322, 773]: 较 + [338, 773]: 简 + [354, 773]: 单 + [370, 773]: 的 + [386, 773]: 汉 + [402, 773]: 字 + [418, 773]: , + [434, 773]: 旧 + [450, 773]: 时 + [466, 773]: 一 + [482, 773]: 些 + [8, 792]: 小 + [24, 792]: 学 + [40, 792]: 国 + [56, 792]: 语 + [72, 792]: 读 + [88, 792]: 本 + [104, 792]: 把 + [120, 792]: 这 + [136, 792]: 几 + [152, 792]: 个 + [168, 792]: 字 + [184, 792]: 编 + [200, 792]: 在 + [216, 792]: 第 + [232, 792]: 一 + [248, 792]: 册 + [264, 792]: 的 + [280, 792]: 最 + [296, 792]: 初 + [312, 792]: 几 + [328, 792]: 课 + [344, 792]: 里 + [360, 792]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 826]: 〔 + [40, 826]: 9 + [48, 826]: 〕 + [68, 826]: “ + [75, 826]: 阳 + [91, 826]: 春 + [107, 826]: 白 + [123, 826]: 雪 + [139, 826]: ” + [146, 826]: 和 + [162, 826]: “ + [169, 826]: 下 + [185, 826]: 里 + [201, 826]: 巴 + [217, 826]: 人 + [233, 826]: ” + [240, 826]: , + [256, 826]: 都 + [272, 826]: 是 + [288, 826]: 公 + [304, 826]: 元 + [320, 826]: 前 + [336, 826]: 三 + [352, 826]: 世 + [368, 826]: 纪 + [384, 826]: 楚 + [400, 826]: 国 + [416, 826]: 的 + [432, 826]: 歌 + [448, 826]: 曲 + [464, 826]: 。 + [480, 826]: “ + [488, 826]: 阳 + [8, 845]: 春 + [24, 845]: 白 + [40, 845]: 雪 + [56, 845]: ” + [63, 845]: 是 + [79, 845]: 供 + [95, 845]: 少 + [111, 845]: 数 + [127, 845]: 人 + [143, 845]: 欣 + [159, 845]: 赏 + [175, 845]: 的 + [191, 845]: 较 + [207, 845]: 高 + [223, 845]: 级 + [239, 845]: 的 + [255, 845]: 歌 + [271, 845]: 曲 + [287, 845]: ; + [303, 845]: “ + [310, 845]: 下 + [326, 845]: 里 + [342, 845]: 巴 + [358, 845]: 人 + [374, 845]: ” + [381, 845]: 是 + [397, 845]: 流 + [413, 845]: 传 + [429, 845]: 很 + [445, 845]: 广 + [461, 845]: 的 + [477, 845]: 民 + [8, 864]: 间 + [24, 864]: 歌 + [40, 864]: 曲 + [56, 864]: 。 + [72, 864]: 《 + [88, 864]: 文 + [104, 864]: 选 + [120, 864]: · + [125, 864]: 宋 + [141, 864]: 玉 + [157, 864]: 对 + [173, 864]: 楚 + [189, 864]: 王 + [205, 864]: 问 + [221, 864]: 》 + [237, 864]: 记 + [253, 864]: 载 + [269, 864]: 一 + [285, 864]: 个 + [301, 864]: 故 + [317, 864]: 事 + [333, 864]: , + [349, 864]: 说 + [365, 864]: 有 + [381, 864]: 人 + [397, 864]: 在 + [413, 864]: 楚 + [429, 864]: 都 + [445, 864]: 唱 + [461, 864]: 歌 + [477, 864]: , + [8, 883]: 唱 + [24, 883]: “ + [31, 883]: 阳 + [47, 883]: 春 + [63, 883]: 白 + [79, 883]: 雪 + [95, 883]: ” + [102, 883]: 时 + [118, 883]: , + [134, 883]: “ + [141, 883]: 国 + [157, 883]: 中 + [173, 883]: 属 + [189, 883]: 而 + [205, 883]: 和 + [221, 883]: 者 + [237, 883]: ( + [253, 883]: 跟 + [269, 883]: 着 + [285, 883]: 唱 + [301, 883]: 的 + [317, 883]: ) + [333, 883]: , + [349, 883]: 不 + [365, 883]: 过 + [381, 883]: 数 + [397, 883]: 十 + [413, 883]: 人 + [429, 883]: ” + [436, 883]: ; + [452, 883]: 但 + [468, 883]: 唱 + [484, 883]: “ + [492, 883]: 下 + [8, 902]: 里 + [24, 902]: 巴 + [40, 902]: 人 + [56, 902]: ” + [63, 902]: 时 + [79, 902]: , + [95, 902]: “ + [102, 902]: 国 + [118, 902]: 中 + [134, 902]: 属 + [150, 902]: 而 + [166, 902]: 和 + [182, 902]: 者 + [198, 902]: 数 + [214, 902]: 千 + [230, 902]: 人 + [246, 902]: ” + [253, 902]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 936]: 〔 + [40, 936]: 1 + [48, 936]: 0 + [56, 936]: 〕 + [76, 936]: 见 + [92, 936]: 列 + [108, 936]: 宁 + [124, 936]: 《 + [140, 936]: 党 + [156, 936]: 的 + [172, 936]: 组 + [188, 936]: 织 + [204, 936]: 和 + [220, 936]: 党 + [236, 936]: 的 + [252, 936]: 出 + [268, 936]: 版 + [284, 936]: 物 + [300, 936]: 》 + [316, 936]: 。 + [332, 936]: 列 + [348, 936]: 宁 + [364, 936]: 在 + [380, 936]: 这 + [396, 936]: 篇 + [412, 936]: 论 + [428, 936]: 文 + [444, 936]: 中 + [8, 955]: 说 + [24, 955]: : + [40, 955]: “ + [47, 955]: 写 + [63, 955]: 作 + [79, 955]: 事 + [95, 955]: 业 + [111, 955]: 应 + [127, 955]: 当 + [143, 955]: 成 + [159, 955]: 为 + [175, 955]: 整 + [191, 955]: 个 + [207, 955]: 无 + [223, 955]: 产 + [239, 955]: 阶 + [255, 955]: 级 + [271, 955]: 事 + [287, 955]: 业 + [303, 955]: 的 + [319, 955]: 一 + [335, 955]: 部 + [351, 955]: 分 + [367, 955]: , + [383, 955]: 成 + [399, 955]: 为 + [415, 955]: 由 + [431, 955]: 整 + [447, 955]: 个 + [463, 955]: 工 + [479, 955]: 人 + [8, 974]: 阶 + [24, 974]: 级 + [40, 974]: 的 + [56, 974]: 整 + [72, 974]: 个 + [88, 974]: 觉 + [104, 974]: 悟 + [120, 974]: 的 + [136, 974]: 先 + [152, 974]: 锋 + [168, 974]: 队 + [184, 974]: 所 + [200, 974]: 开 + [216, 974]: 动 + [232, 974]: 的 + [248, 974]: 一 + [264, 974]: 部 + [280, 974]: 巨 + [296, 974]: 大 + [312, 974]: 的 + [328, 974]: 社 + [344, 974]: 会 + [360, 974]: 民 + [376, 974]: 主 + [392, 974]: 主 + [408, 974]: 义 + [424, 974]: 机 + [440, 974]: 器 + [456, 974]: 的 + [472, 974]: ‘ + [477, 974]: 齿 + [8, 993]: 轮 + [24, 993]: 和 + [40, 993]: 螺 + [56, 993]: 丝 + [72, 993]: 钉 + [88, 993]: ’ + [93, 993]: 。 + [109, 993]: ” + [116, 993]: ( + [132, 993]: 《 + [148, 993]: 列 + [164, 993]: 宁 + [180, 993]: 全 + [196, 993]: 集 + [212, 993]: 》 + [228, 993]: 第 + [244, 993]: 1 + [252, 993]: 2 + [260, 993]: 卷 + [276, 993]: , + [292, 993]: 人 + [308, 993]: 民 + [324, 993]: 出 + [340, 993]: 版 + [356, 993]: 社 + [372, 993]: 1 + [380, 993]: 9 + [388, 993]: 8 + [396, 993]: 7 + [404, 993]: 年 + [420, 993]: 版 + [436, 993]: , + [452, 993]: 第 + [468, 993]: 9 + [476, 993]: 3 + [8, 1012]: 页 + [24, 1012]: ) +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 1046]: 〔 + [40, 1046]: 1 + [48, 1046]: 1 + [56, 1046]: 〕 + [76, 1046]: 亭 + [92, 1046]: 子 + [108, 1046]: 间 + [124, 1046]: 是 + [140, 1046]: 上 + [156, 1046]: 海 + [172, 1046]: 里 + [188, 1046]: 弄 + [204, 1046]: 房 + [220, 1046]: 子 + [236, 1046]: 中 + [252, 1046]: 的 + [268, 1046]: 一 + [284, 1046]: 种 + [300, 1046]: 小 + [316, 1046]: 房 + [332, 1046]: 间 + [348, 1046]: , + [364, 1046]: 位 + [380, 1046]: 置 + [396, 1046]: 在 + [412, 1046]: 房 + [428, 1046]: 子 + [444, 1046]: 后 + [460, 1046]: 部 + [476, 1046]: 的 + [492, 1046]: 楼 + [8, 1065]: 梯 + [24, 1065]: 中 + [40, 1065]: 侧 + [56, 1065]: , + [72, 1065]: 狭 + [88, 1065]: 小 + [104, 1065]: 黑 + [120, 1065]: 暗 + [136, 1065]: , + [152, 1065]: 因 + [168, 1065]: 此 + [184, 1065]: 租 + [200, 1065]: 金 + [216, 1065]: 比 + [232, 1065]: 较 + [248, 1065]: 低 + [264, 1065]: 廉 + [280, 1065]: 。 + [296, 1065]: 解 + [312, 1065]: 放 + [328, 1065]: 以 + [344, 1065]: 前 + [360, 1065]: , + [376, 1065]: 贫 + [392, 1065]: 苦 + [408, 1065]: 的 + [424, 1065]: 作 + [440, 1065]: 家 + [456, 1065]: 、 + [472, 1065]: 艺 + [488, 1065]: 术 + [8, 1084]: 家 + [24, 1084]: 、 + [40, 1084]: 知 + [56, 1084]: 识 + [72, 1084]: 分 + [88, 1084]: 子 + [104, 1084]: 和 + [120, 1084]: 机 + [136, 1084]: 关 + [152, 1084]: 小 + [168, 1084]: 职 + [184, 1084]: 员 + [200, 1084]: , + [216, 1084]: 多 + [232, 1084]: 半 + [248, 1084]: 租 + [264, 1084]: 这 + [280, 1084]: 种 + [296, 1084]: 房 + [312, 1084]: 间 + [328, 1084]: 居 + [344, 1084]: 住 + [360, 1084]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 1119]: 〔 + [40, 1119]: 1 + [48, 1119]: 2 + [56, 1119]: 〕 + [76, 1119]: 见 + [92, 1119]: 本 + [108, 1119]: 书 + [124, 1119]: 第 + [140, 1119]: 二 + [156, 1119]: 卷 + [172, 1119]: 《 + [188, 1119]: 和 + [204, 1119]: 中 + [220, 1119]: 央 + [236, 1119]: 社 + [252, 1119]: 、 + [268, 1119]: 扫 + [284, 1119]: 荡 + [300, 1119]: 报 + [316, 1119]: 、 + [332, 1119]: 新 + [348, 1119]: 民 + [364, 1119]: 报 + [380, 1119]: 三 + [396, 1119]: 记 + [412, 1119]: 者 + [428, 1119]: 的 + [444, 1119]: 谈 + [460, 1119]: 话 + [476, 1119]: 》 + [492, 1119]: 注 + [8, 1138]: 〔 + [24, 1138]: 3 + [32, 1138]: 〕 + [48, 1138]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 1172]: 〔 + [40, 1172]: 1 + [48, 1172]: 3 + [56, 1172]: 〕 + [76, 1172]: 法 + [92, 1172]: 捷 + [108, 1172]: 耶 + [124, 1172]: 夫 + [140, 1172]: ( + [156, 1172]: 一 + [172, 1172]: 九 + [188, 1172]: ○ + [198, 1172]: 一 + [214, 1172]: — + [230, 1172]: — + [246, 1172]: 一 + [262, 1172]: 九 + [278, 1172]: 五 + [294, 1172]: 六 + [310, 1172]: ) + [326, 1172]: , + [342, 1172]: 苏 + [358, 1172]: 联 + [374, 1172]: 名 + [390, 1172]: 作 + [406, 1172]: 家 + [422, 1172]: 。 + [438, 1172]: 他 + [454, 1172]: 所 + [470, 1172]: 作 + [486, 1172]: 的 + [8, 1191]: 小 + [24, 1191]: 说 + [40, 1191]: 《 + [56, 1191]: 毁 + [72, 1191]: 灭 + [88, 1191]: 》 + [104, 1191]: 于 + [120, 1191]: 一 + [136, 1191]: 九 + [152, 1191]: 二 + [168, 1191]: 七 + [184, 1191]: 年 + [200, 1191]: 出 + [216, 1191]: 版 + [232, 1191]: , + [248, 1191]: 内 + [264, 1191]: 容 + [280, 1191]: 是 + [296, 1191]: 描 + [312, 1191]: 写 + [328, 1191]: 苏 + [344, 1191]: 联 + [360, 1191]: 国 + [376, 1191]: 内 + [392, 1191]: 战 + [408, 1191]: 争 + [424, 1191]: 时 + [440, 1191]: 期 + [456, 1191]: 由 + [472, 1191]: 苏 + [488, 1191]: 联 + [8, 1210]: 远 + [24, 1210]: 东 + [40, 1210]: 滨 + [56, 1210]: 海 + [72, 1210]: 边 + [88, 1210]: 区 + [104, 1210]: 工 + [120, 1210]: 人 + [136, 1210]: 、 + [152, 1210]: 农 + [168, 1210]: 民 + [184, 1210]: 和 + [200, 1210]: 革 + [216, 1210]: 命 + [232, 1210]: 知 + [248, 1210]: 识 + [264, 1210]: 分 + [280, 1210]: 子 + [296, 1210]: 所 + [312, 1210]: 组 + [328, 1210]: 成 + [344, 1210]: 的 + [360, 1210]: 一 + [376, 1210]: 支 + [392, 1210]: 游 + [408, 1210]: 击 + [424, 1210]: 队 + [440, 1210]: 同 + [456, 1210]: 国 + [472, 1210]: 内 + [488, 1210]: 反 + [8, 1229]: 革 + [24, 1229]: 命 + [40, 1229]: 白 + [56, 1229]: 卫 + [72, 1229]: 军 + [88, 1229]: 以 + [104, 1229]: 及 + [120, 1229]: 日 + [136, 1229]: 本 + [152, 1229]: 武 + [168, 1229]: 装 + [184, 1229]: 干 + [200, 1229]: 涉 + [216, 1229]: 军 + [232, 1229]: 进 + [248, 1229]: 行 + [264, 1229]: 斗 + [280, 1229]: 争 + [296, 1229]: 的 + [312, 1229]: 故 + [328, 1229]: 事 + [344, 1229]: 。 + [360, 1229]: 这 + [376, 1229]: 部 + [392, 1229]: 小 + [408, 1229]: 说 + [424, 1229]: 曾 + [440, 1229]: 由 + [456, 1229]: 鲁 + [472, 1229]: 迅 + [488, 1229]: 译 + [8, 1248]: 为 + [24, 1248]: 汉 + [40, 1248]: 文 + [56, 1248]: 。 +Text: rgb(0,0,0) normal normal 400 16px serif + [24, 1282]: 〔 + [40, 1282]: 1 + [48, 1282]: 4 + [56, 1282]: 〕 + [76, 1282]: 见 + [92, 1282]: 鲁 + [108, 1282]: 迅 + [124, 1282]: 《 + [140, 1282]: 集 + [156, 1282]: 外 + [172, 1282]: 集 + [188, 1282]: · + [193, 1282]: 自 + [209, 1282]: 嘲 + [225, 1282]: 》 + [241, 1282]: ( + [257, 1282]: 《 + [273, 1282]: 鲁 + [289, 1282]: 迅 + [305, 1282]: 全 + [321, 1282]: 集 + [337, 1282]: 》 + [353, 1282]: 第 + [369, 1282]: 7 + [377, 1282]: 卷 + [393, 1282]: , + [409, 1282]: 人 + [425, 1282]: 民 + [441, 1282]: 文 + [457, 1282]: 学 + [473, 1282]: 出 + [489, 1282]: 版 + [8, 1301]: 社 + [24, 1301]: 1 + [32, 1301]: 9 + [40, 1301]: 8 + [48, 1301]: 1 + [56, 1301]: 年 + [72, 1301]: 版 + [88, 1301]: , + [104, 1301]: 第 + [120, 1301]: 1 + [128, 1301]: 4 + [136, 1301]: 7 + [144, 1301]: 页 + [160, 1301]: ) + [176, 1301]: 。 \ No newline at end of file diff --git a/tests/cases/text/fontawesome.html b/tests/reftests/text/fontawesome.html similarity index 100% rename from tests/cases/text/fontawesome.html rename to tests/reftests/text/fontawesome.html diff --git a/tests/reftests/text/fontawesome.txt b/tests/reftests/text/fontawesome.txt new file mode 100644 index 000000000..513ab4365 --- /dev/null +++ b/tests/reftests/text/fontawesome.txt @@ -0,0 +1,88 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 8]: Fontawesome + [101, 8]: icons +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [92, 98]: fa + [104, 98]: - + [110, 98]: 5x +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 35) > Vector(x: 792, y: 35) > Vector(x: 791, y: 36) > Vector(x: 9, y: 36)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 35) > Vector(x: 792, y: 37) > Vector(x: 791, y: 36) > Vector(x: 791, y: 36)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 37) > Vector(x: 8, y: 37) > Vector(x: 9, y: 36) > Vector(x: 791, y: 36)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 37) > Vector(x: 8, y: 35) > Vector(x: 9, y: 36) > Vector(x: 9, y: 36)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [55, 242]: fa + [67, 242]: - + [72, 242]: twitter + [118, 242]: on + [138, 242]: fa + [151, 242]: - + [156, 242]: square + [198, 242]: - + [203, 242]: o +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [55, 285]: fa + [67, 285]: - + [72, 285]: flag + [101, 285]: on + [121, 285]: fa + [134, 285]: - + [139, 285]: circle +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [55, 328]: fa + [67, 328]: - + [72, 328]: terminal + [130, 328]: on + [150, 328]: fa + [162, 328]: - + [168, 328]: square +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [55, 371]: fa + [67, 371]: - + [72, 371]: ban + [100, 371]: on + [120, 371]: fa + [132, 371]: - + [137, 371]: camera +Text: rgb(0,0,0) normal normal 400 80px FontAwesome + [8, 44]:  +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [42, 141]: List + [71, 141]: icons +Text: rgb(0,0,0) normal normal 400 16px FontAwesome + [18, 143]:  +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [42, 160]: can + [69, 160]: be + [87, 160]: used +Text: rgb(0,0,0) normal normal 400 16px FontAwesome + [18, 162]:  +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [42, 179]: as + [59, 179]: bullets +Transform: (24, 186) [0.99, 0.16, -0.16, 0.99, 0, 0] + Text: rgb(0,0,0) normal normal 400 16px FontAwesome + [17, 180]:  +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [42, 198]: in + [59, 198]: lists +Text: rgb(0,0,0) normal normal 400 16px FontAwesome + [18, 199]:  +Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome + [13, 232]:  +Text: rgb(0,0,0) normal normal 400 21.3333px FontAwesome + [19, 242]:  +Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome + [11, 274]:  +Text: rgb(255,255,255) normal normal 400 21.3333px FontAwesome + [19, 285]:  +Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome + [11, 317]:  +Text: rgb(255,255,255) normal normal 400 21.3333px FontAwesome + [19, 328]:  +Text: rgb(0,0,0) normal normal 400 21.3333px FontAwesome + [18, 370]:  +Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome + [11, 360]:  \ No newline at end of file diff --git a/tests/cases/text/linethrough.html b/tests/reftests/text/linethrough.html similarity index 100% rename from tests/cases/text/linethrough.html rename to tests/reftests/text/linethrough.html diff --git a/tests/reftests/text/linethrough.txt b/tests/reftests/text/linethrough.txt new file mode 100644 index 000000000..6ae71a3cd --- /dev/null +++ b/tests/reftests/text/linethrough.txt @@ -0,0 +1,355 @@ +Window: [800, 2528] +Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27)) +Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(0,0,0) line-through + [9, 9]: Testing + [60, 9]: + [64, 9]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56)) +Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(0,0,0) line-through + [9, 31]: Testing + [79, 31]: + [85, 31]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91)) +Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(0,0,0) line-through + [9, 59]: Testing + [98, 59]: + [106, 59]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133)) +Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(0,0,0) line-through + [9, 94]: Testing + [117, 94]: + [126, 94]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182)) +Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(0,0,0) line-through + [9, 136]: Testing + [136, 136]: + [147, 136]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238)) +Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(0,0,0) line-through + [9, 186]: Testing + [155, 186]: + [168, 186]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301)) +Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(0,0,0) line-through + [9, 242]: Testing + [174, 242]: + [188, 242]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370)) +Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(0,0,0) line-through + [9, 305]: Testing + [193, 305]: + [209, 305]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447)) +Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(0,0,0) line-through + [9, 374]: Testing + [212, 374]: + [230, 374]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530)) +Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(0,0,0) line-through + [9, 451]: Testing + [231, 451]: + [250, 451]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621)) +Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(0,0,0) line-through + [9, 535]: Testing + [250, 535]: + [271, 535]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643)) +Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(0,0,0) line-through + [9, 624]: Testing + [66, 624]: + [72, 624]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673)) +Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(0,0,0) line-through + [9, 646]: Testing + [87, 646]: + [95, 646]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710)) +Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(0,0,0) line-through + [9, 676]: Testing + [108, 676]: + [118, 676]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754)) +Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(0,0,0) line-through + [9, 713]: Testing + [130, 713]: + [142, 713]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806)) +Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(0,0,0) line-through + [9, 757]: Testing + [151, 757]: + [165, 757]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865)) +Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(0,0,0) line-through + [9, 809]: Testing + [172, 809]: + [188, 809]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931)) +Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(0,0,0) line-through + [9, 868]: Testing + [194, 868]: + [212, 868]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004)) +Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(0,0,0) line-through + [9, 934]: Testing + [215, 934]: + [235, 934]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085)) +Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(0,0,0) line-through + [9, 1007]: Testing + [236, 1007]: + [259, 1007]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173)) +Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(0,0,0) line-through + [9, 1088]: Testing + [258, 1088]: + [282, 1088]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269)) +Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(0,0,0) line-through + [9, 1177]: Testing + [279, 1177]: + [306, 1177]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291)) +Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(0,0,0) line-through + [9, 1272]: Testing + [61, 1272]: + [66, 1272]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320)) +Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(0,0,0) line-through + [9, 1294]: Testing + [80, 1294]: + [87, 1294]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357)) +Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(0,0,0) line-through + [9, 1324]: Testing + [100, 1324]: + [108, 1324]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401)) +Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(0,0,0) line-through + [9, 1360]: Testing + [119, 1360]: + [130, 1360]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453)) +Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(0,0,0) line-through + [9, 1404]: Testing + [138, 1404]: + [151, 1404]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511)) +Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(0,0,0) line-through + [9, 1456]: Testing + [158, 1456]: + [172, 1456]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577)) +Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(0,0,0) line-through + [9, 1514]: Testing + [177, 1514]: + [193, 1514]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650)) +Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(0,0,0) line-through + [9, 1580]: Testing + [196, 1580]: + [214, 1580]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730)) +Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(0,0,0) line-through + [9, 1653]: Testing + [216, 1653]: + [236, 1653]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818)) +Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(0,0,0) line-through + [9, 1733]: Testing + [235, 1733]: + [257, 1733]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912)) +Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(0,0,0) line-through + [9, 1821]: Testing + [254, 1821]: + [278, 1821]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933)) +Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(0,0,0) line-through + [9, 1915]: Testing + [76, 1915]: + [86, 1915]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961)) +Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(0,0,0) line-through + [9, 1936]: Testing + [102, 1936]: + [115, 1936]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996)) +Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(0,0,0) line-through + [9, 1965]: Testing + [127, 1965]: + [144, 1965]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038)) +Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(0,0,0) line-through + [9, 1999]: Testing + [152, 1999]: + [172, 1999]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086)) +Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(0,0,0) line-through + [9, 2041]: Testing + [177, 2041]: + [201, 2041]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141)) +Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(0,0,0) line-through + [9, 2089]: Testing + [202, 2089]: + [230, 2089]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203)) +Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(0,0,0) line-through + [9, 2145]: Testing + [228, 2145]: + [259, 2145]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272)) +Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(0,0,0) line-through + [9, 2206]: Testing + [253, 2206]: + [288, 2206]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348)) +Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(0,0,0) line-through + [9, 2275]: Testing + [278, 2275]: + [316, 2275]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430)) +Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(0,0,0) line-through + [9, 2351]: Testing + [303, 2351]: + [345, 2351]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519)) +Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(0,0,0) line-through + [9, 2433]: Testing + [328, 2433]: + [374, 2433]: texts \ No newline at end of file diff --git a/tests/cases/text/multiple.html b/tests/reftests/text/multiple.html similarity index 100% rename from tests/cases/text/multiple.html rename to tests/reftests/text/multiple.html diff --git a/tests/reftests/text/multiple.txt b/tests/reftests/text/multiple.txt new file mode 100644 index 000000000..676d096de --- /dev/null +++ b/tests/reftests/text/multiple.txt @@ -0,0 +1,355 @@ +Window: [800, 2528] +Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27)) +Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(255,0,0) underline, overline, line-through + [9, 9]: Testing + [60, 9]: + [64, 9]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56)) +Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(255,0,0) underline, overline, line-through + [9, 31]: Testing + [79, 31]: + [85, 31]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91)) +Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(255,0,0) underline, overline, line-through + [9, 59]: Testing + [98, 59]: + [106, 59]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133)) +Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(255,0,0) underline, overline, line-through + [9, 94]: Testing + [117, 94]: + [126, 94]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182)) +Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(255,0,0) underline, overline, line-through + [9, 136]: Testing + [136, 136]: + [147, 136]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238)) +Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(255,0,0) underline, overline, line-through + [9, 186]: Testing + [155, 186]: + [168, 186]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301)) +Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(255,0,0) underline, overline, line-through + [9, 242]: Testing + [174, 242]: + [188, 242]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370)) +Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(255,0,0) underline, overline, line-through + [9, 305]: Testing + [193, 305]: + [209, 305]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447)) +Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(255,0,0) underline, overline, line-through + [9, 374]: Testing + [212, 374]: + [230, 374]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530)) +Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(255,0,0) underline, overline, line-through + [9, 451]: Testing + [231, 451]: + [250, 451]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621)) +Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(255,0,0) underline, overline, line-through + [9, 535]: Testing + [250, 535]: + [271, 535]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643)) +Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 624]: Testing + [66, 624]: + [72, 624]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673)) +Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 646]: Testing + [87, 646]: + [95, 646]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710)) +Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 676]: Testing + [108, 676]: + [118, 676]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754)) +Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 713]: Testing + [130, 713]: + [142, 713]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806)) +Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 757]: Testing + [151, 757]: + [165, 757]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865)) +Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 809]: Testing + [172, 809]: + [188, 809]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931)) +Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 868]: Testing + [194, 868]: + [212, 868]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004)) +Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 934]: Testing + [215, 934]: + [235, 934]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085)) +Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 1007]: Testing + [236, 1007]: + [259, 1007]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173)) +Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 1088]: Testing + [258, 1088]: + [282, 1088]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269)) +Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(255,0,0) underline, overline, line-through + [9, 1177]: Testing + [279, 1177]: + [306, 1177]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291)) +Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1272]: Testing + [61, 1272]: + [66, 1272]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320)) +Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1294]: Testing + [80, 1294]: + [87, 1294]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357)) +Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1324]: Testing + [100, 1324]: + [108, 1324]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401)) +Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1360]: Testing + [119, 1360]: + [130, 1360]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453)) +Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1404]: Testing + [138, 1404]: + [151, 1404]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511)) +Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1456]: Testing + [158, 1456]: + [172, 1456]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577)) +Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1514]: Testing + [177, 1514]: + [193, 1514]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650)) +Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1580]: Testing + [196, 1580]: + [214, 1580]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730)) +Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1653]: Testing + [216, 1653]: + [236, 1653]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818)) +Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1733]: Testing + [235, 1733]: + [257, 1733]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912)) +Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(255,0,0) underline, overline, line-through + [9, 1821]: Testing + [254, 1821]: + [278, 1821]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933)) +Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 1915]: Testing + [76, 1915]: + [86, 1915]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961)) +Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 1936]: Testing + [102, 1936]: + [115, 1936]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996)) +Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 1965]: Testing + [127, 1965]: + [144, 1965]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038)) +Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 1999]: Testing + [152, 1999]: + [172, 1999]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086)) +Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2041]: Testing + [177, 2041]: + [201, 2041]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141)) +Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2089]: Testing + [202, 2089]: + [230, 2089]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203)) +Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2145]: Testing + [228, 2145]: + [259, 2145]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272)) +Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2206]: Testing + [253, 2206]: + [288, 2206]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348)) +Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2275]: Testing + [278, 2275]: + [316, 2275]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430)) +Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2351]: Testing + [303, 2351]: + [345, 2351]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519)) +Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(255,0,0) underline, overline, line-through + [9, 2433]: Testing + [328, 2433]: + [374, 2433]: texts \ No newline at end of file diff --git a/tests/cases/text/shadow.html b/tests/reftests/text/shadow.html similarity index 100% rename from tests/cases/text/shadow.html rename to tests/reftests/text/shadow.html diff --git a/tests/reftests/text/shadow.txt b/tests/reftests/text/shadow.txt new file mode 100644 index 000000000..6aeef47dc --- /dev/null +++ b/tests/reftests/text/shadow.txt @@ -0,0 +1,88 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 8]: Some + [48, 8]: text +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [271, 8]: followed + [332, 8]: by + [352, 8]: more + [388, 8]: text + [416, 8]: without + [469, 8]: shadow. +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [653, 8]: and + [680, 8]: some + [718, 8]: more + [754, 8]: text + [8, 27]: without + [61, 27]: shadow +Text: rgb(255,255,255) normal normal 400 24px Georgia Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 24px) + [8, 180]: Sed + [53, 180]: ut + [80, 180]: perspiciatis + [208, 180]: unde + [268, 180]: omnis + [339, 180]: iste + [382, 180]: natus + [446, 180]: error + [506, 180]: sit + [538, 180]: voluptatem + [8, 207]: accusantium + [148, 207]: doloremque + [282, 207]: laudantium, + [418, 207]: totam + [486, 207]: rem + [534, 207]: aperiam, + [634, 207]: eaque + [702, 207]: ipsa + [8, 234]: quae + [65, 234]: ab + [96, 234]: illo + [136, 234]: inventore. +Text: rgb(0,0,0) normal normal 400 16px Times New Roman Shadows: (rgb(0,0,0) 0px -2px 0px) + [8, 286]: Sed + [36, 286]: ut + [52, 286]: perspiciatis + [129, 286]: unde + [164, 286]: omnis + [208, 286]: iste + [234, 286]: natus + [272, 286]: error + [307, 286]: sit + [326, 286]: voluptatem + [402, 286]: accusantium + [486, 286]: doloremque + [566, 286]: laudantium, + [646, 286]: totam + [686, 286]: rem + [715, 286]: aperiam, + [8, 305]: eaque + [49, 305]: ipsa + [79, 305]: quae + [113, 305]: ab + [132, 305]: illo + [158, 305]: inventore. +Text: rgb(0,0,0) normal normal 400 16px Times New Roman Shadows: (rgb(136,136,136) 1px 1px 3px) + [76, 8]: followed + [137, 8]: by + [157, 8]: text + [185, 8]: with + [218, 8]: shadow +Text: rgb(0,0,0) normal normal 700 16px Times New Roman Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 16px) + [525, 8]: Multi + [567, 8]: text + [597, 8]: shadow +Text: rgba(0,0,0,0) normal normal 400 48px Times New Roman Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) + [8, 46]: testing + [148, 46]: with + [245, 46]: transparent +Text: rgba(0,255,0,0.5) normal normal 700 48px Times New Roman Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) solid rgba(0,255,0,0.5) underline + [470, 46]: testing + [606, 46]: + [618, 46]: with + [709, 46]: + [8, 102]: low + [80, 102]: + [92, 102]: opacity \ No newline at end of file diff --git a/tests/cases/text/text.html b/tests/reftests/text/text.html similarity index 100% rename from tests/cases/text/text.html rename to tests/reftests/text/text.html diff --git a/tests/reftests/text/text.txt b/tests/reftests/text/text.txt new file mode 100644 index 000000000..b671a6f9e --- /dev/null +++ b/tests/reftests/text/text.txt @@ -0,0 +1,266 @@ +Window: [800, 1231] +Rectangle: [0, 0, 800, 1231] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 700 32px Times New Roman + [8, 22]:

      + [86, 22]: text + [138, 22]: - + [148, 22]: decoration +Text: rgb(0,0,0) normal normal 700 24px Times New Roman + [8, 889]:

      + [67, 889]: text + [105, 889]: - + [113, 889]: transform +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 936]: text + [72, 936]: - + [77, 936]: transform:none; +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 955]: Text + [76, 955]: - + [82, 955]: Transform: + [157, 955]: Capitalize; + [230, 955]: (Including + [301, 955]: Foreign + [355, 955]: Characters + [427, 955]: Such + [463, 955]: As + [485, 955]: Öaäå) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 974]: TEXT + [88, 974]: - + [93, 974]: TRANSFORM:UPPERCASE; +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 992]: text + [72, 992]: - + [77, 992]: transform:lowercase; +Text: rgb(0,0,0) normal normal 700 18.72px Times New Roman + [8, 1030]:

      + [54, 1030]: misc + [95, 1030]: text + [130, 1030]: alignments +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 1070]: word + [81, 1070]: - + [86, 1070]: spacing:5px; + [177, 1070]: (as + [205, 1070]: each + [243, 1070]: letter + [285, 1070]: is + [304, 1070]: rendered + [370, 1070]: individually, + [459, 1070]: the + [487, 1070]: bounds + [542, 1070]: will + [576, 1070]: always + [630, 1070]: be + [654, 1070]: correct) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 1097]: line + [72, 1097]: - + [77, 1097]: height:35px; +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 1132]: (same + [90, 1132]: goes + [124, 1132]: for + [146, 1132]: line + [170, 1132]: - + [176, 1132]: height) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [48, 1159]: l + [58, 1159]: e + [70, 1159]: t + [79, 1159]: t + [88, 1159]: e + [100, 1159]: r + [110, 1159]: - + [121, 1159]: s + [132, 1159]: p + [145, 1159]: a + [157, 1159]: c + [169, 1159]: i + [179, 1159]: n + [192, 1159]: g + [205, 1159]: : + [214, 1159]: 5 + [227, 1159]: p + [240, 1159]: x + [253, 1159]: ; +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [162, 1178]: text + [186, 1178]: - + [192, 1178]: align:right;width:300px; +Text: rgb(0,0,0) normal small-caps 400 16px Times New Roman + [48, 1196]: font + [79, 1196]: - + [84, 1196]: variant:small + [180, 1196]: - + [186, 1196]: caps; +Text: rgb(0,0,0) normal normal 700 24px Arial + [8, 100]: Arial +Text: rgb(0,0,0) normal normal 400 14px Arial + [48, 147]: text + [70, 147]: - + [75, 147]: decoration:none; +Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) underline + [48, 163]: text + [70, 163]: - + [75, 163]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) overline + [48, 179]: text + [70, 179]: - + [75, 179]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) line-through + [48, 195]: text + [70, 195]: - + [75, 195]: decoration:line + [166, 195]: - + [171, 195]: through; +Text: rgb(0,0,0) normal normal 400 18px Arial + [48, 229]: text + [77, 229]: - + [83, 229]: decoration:none; +Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) underline + [48, 250]: text + [77, 250]: - + [83, 250]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) overline + [48, 270]: text + [77, 270]: - + [83, 270]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) line-through + [48, 291]: text + [77, 291]: - + [83, 291]: decoration:line + [200, 291]: - + [206, 291]: through; +Text: rgb(0,0,0) normal normal 400 24px Arial + [48, 336]: text + [87, 336]: - + [95, 336]: decoration:none; +Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) underline + [48, 364]: text + [87, 364]: - + [95, 364]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) overline + [48, 392]: text + [87, 392]: - + [95, 392]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) line-through + [48, 419]: text + [87, 419]: - + [95, 419]: decoration:line + [251, 419]: - + [259, 419]: through; +Text: rgb(0,0,0) normal normal 700 24px Verdana + [347, 99]: Verdana +Text: rgb(0,0,0) normal normal 400 14px Verdana + [387, 148]: text + [414, 148]: - + [420, 148]: decoration:none; +Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) underline + [387, 165]: text + [414, 165]: - + [420, 165]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) overline + [387, 182]: text + [414, 182]: - + [420, 182]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) line-through + [387, 199]: text + [414, 199]: - + [420, 199]: decoration:line + [526, 199]: - + [532, 199]: through; +Text: rgb(0,0,0) normal normal 400 18px Verdana + [387, 234]: text + [422, 234]: - + [430, 234]: decoration:none; +Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) underline + [387, 255]: text + [422, 255]: - + [430, 255]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) overline + [387, 277]: text + [422, 277]: - + [430, 277]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) line-through + [387, 298]: text + [422, 298]: - + [430, 298]: decoration:line + [565, 298]: - + [573, 298]: through; +Text: rgb(0,0,0) normal normal 400 24px Verdana + [387, 344]: text + [434, 344]: - + [445, 344]: decoration:none; +Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) underline + [387, 373]: text + [434, 373]: - + [445, 373]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) overline + [387, 402]: text + [434, 402]: - + [445, 402]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) line-through + [387, 432]: text + [434, 432]: - + [445, 432]: decoration:line + [624, 432]: - + [636, 432]: through; +Text: rgb(0,0,0) normal normal 700 24px Tahoma + [8, 505]: Tahoma +Text: rgb(0,0,0) normal normal 400 14px Tahoma + [48, 553]: text + [72, 553]: - + [77, 553]: decoration:none; +Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) underline + [48, 570]: text + [72, 570]: - + [77, 570]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) overline + [48, 587]: text + [72, 587]: - + [77, 587]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) line-through + [48, 604]: text + [72, 604]: - + [77, 604]: decoration:line + [168, 604]: - + [173, 604]: through; +Text: rgb(0,0,0) normal normal 400 18px Tahoma + [48, 639]: text + [78, 639]: - + [85, 639]: decoration:none; +Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) underline + [48, 660]: text + [78, 660]: - + [85, 660]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) overline + [48, 682]: text + [78, 682]: - + [85, 682]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) line-through + [48, 703]: text + [78, 703]: - + [85, 703]: decoration:line + [202, 703]: - + [209, 703]: through; +Text: rgb(0,0,0) normal normal 400 24px Tahoma + [48, 749]: text + [88, 749]: - + [97, 749]: decoration:none; +Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) underline + [48, 778]: text + [88, 778]: - + [97, 778]: decoration:underline; +Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) overline + [48, 807]: text + [88, 807]: - + [97, 807]: decoration:overline; +Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) line-through + [48, 835]: text + [88, 835]: - + [97, 835]: decoration:line + [254, 835]: - + [263, 835]: through; \ No newline at end of file diff --git a/tests/cases/text/underline-lineheight.html b/tests/reftests/text/underline-lineheight.html similarity index 100% rename from tests/cases/text/underline-lineheight.html rename to tests/reftests/text/underline-lineheight.html diff --git a/tests/reftests/text/underline-lineheight.txt b/tests/reftests/text/underline-lineheight.txt new file mode 100644 index 000000000..f71f1d528 --- /dev/null +++ b/tests/reftests/text/underline-lineheight.txt @@ -0,0 +1,355 @@ +Window: [800, 1921] +Rectangle: [0, 0, 800, 1921] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 50) > Vector(x: 791, y: 49) > Vector(x: 791, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 50) > Vector(x: 8, y: 50) > Vector(x: 9, y: 49) > Vector(x: 791, y: 49)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 50) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 49)) +Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(0,0,0) underline + [9, 20]: Testing + [60, 20]: + [64, 20]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 51) > Vector(x: 792, y: 51) > Vector(x: 791, y: 52) > Vector(x: 9, y: 52)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 51) > Vector(x: 792, y: 93) > Vector(x: 791, y: 92) > Vector(x: 791, y: 52)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 8, y: 93) > Vector(x: 9, y: 92) > Vector(x: 791, y: 92)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 8, y: 51) > Vector(x: 9, y: 52) > Vector(x: 9, y: 92)) +Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(0,0,0) underline + [9, 60]: Testing + [79, 60]: + [85, 60]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 94) > Vector(x: 792, y: 94) > Vector(x: 791, y: 95) > Vector(x: 9, y: 95)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 94) > Vector(x: 792, y: 136) > Vector(x: 791, y: 135) > Vector(x: 791, y: 95)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 136) > Vector(x: 8, y: 136) > Vector(x: 9, y: 135) > Vector(x: 791, y: 135)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 136) > Vector(x: 8, y: 94) > Vector(x: 9, y: 95) > Vector(x: 9, y: 135)) +Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(0,0,0) underline + [9, 100]: Testing + [98, 100]: + [106, 100]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 137) > Vector(x: 792, y: 137) > Vector(x: 791, y: 138) > Vector(x: 9, y: 138)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 137) > Vector(x: 792, y: 179) > Vector(x: 791, y: 178) > Vector(x: 791, y: 138)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 179) > Vector(x: 8, y: 179) > Vector(x: 9, y: 178) > Vector(x: 791, y: 178)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 179) > Vector(x: 8, y: 137) > Vector(x: 9, y: 138) > Vector(x: 9, y: 178)) +Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(0,0,0) underline + [9, 139]: Testing + [117, 139]: + [126, 139]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 180) > Vector(x: 792, y: 180) > Vector(x: 791, y: 181) > Vector(x: 9, y: 181)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 180) > Vector(x: 792, y: 222) > Vector(x: 791, y: 221) > Vector(x: 791, y: 181)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 222) > Vector(x: 8, y: 222) > Vector(x: 9, y: 221) > Vector(x: 791, y: 221)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 222) > Vector(x: 8, y: 180) > Vector(x: 9, y: 181) > Vector(x: 9, y: 221)) +Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(0,0,0) underline + [9, 179]: Testing + [136, 179]: + [147, 179]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 223) > Vector(x: 792, y: 223) > Vector(x: 791, y: 224) > Vector(x: 9, y: 224)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 223) > Vector(x: 792, y: 265) > Vector(x: 791, y: 264) > Vector(x: 791, y: 224)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 265) > Vector(x: 8, y: 265) > Vector(x: 9, y: 264) > Vector(x: 791, y: 264)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 265) > Vector(x: 8, y: 223) > Vector(x: 9, y: 224) > Vector(x: 9, y: 264)) +Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(0,0,0) underline + [9, 219]: Testing + [155, 219]: + [168, 219]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 266) > Vector(x: 792, y: 266) > Vector(x: 791, y: 267) > Vector(x: 9, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 266) > Vector(x: 792, y: 308) > Vector(x: 791, y: 307) > Vector(x: 791, y: 267)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 308) > Vector(x: 8, y: 308) > Vector(x: 9, y: 307) > Vector(x: 791, y: 307)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 308) > Vector(x: 8, y: 266) > Vector(x: 9, y: 267) > Vector(x: 9, y: 307)) +Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(0,0,0) underline + [9, 258]: Testing + [174, 258]: + [188, 258]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 309) > Vector(x: 792, y: 309) > Vector(x: 791, y: 310) > Vector(x: 9, y: 310)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 309) > Vector(x: 792, y: 351) > Vector(x: 791, y: 350) > Vector(x: 791, y: 310)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 351) > Vector(x: 8, y: 351) > Vector(x: 9, y: 350) > Vector(x: 791, y: 350)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 351) > Vector(x: 8, y: 309) > Vector(x: 9, y: 310) > Vector(x: 9, y: 350)) +Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(0,0,0) underline + [9, 298]: Testing + [193, 298]: + [209, 298]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 352) > Vector(x: 792, y: 352) > Vector(x: 791, y: 353) > Vector(x: 9, y: 353)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 352) > Vector(x: 792, y: 394) > Vector(x: 791, y: 393) > Vector(x: 791, y: 353)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 394) > Vector(x: 8, y: 394) > Vector(x: 9, y: 393) > Vector(x: 791, y: 393)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 394) > Vector(x: 8, y: 352) > Vector(x: 9, y: 353) > Vector(x: 9, y: 393)) +Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(0,0,0) underline + [9, 337]: Testing + [212, 337]: + [230, 337]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 395) > Vector(x: 792, y: 395) > Vector(x: 791, y: 396) > Vector(x: 9, y: 396)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 395) > Vector(x: 792, y: 437) > Vector(x: 791, y: 436) > Vector(x: 791, y: 396)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 437) > Vector(x: 8, y: 437) > Vector(x: 9, y: 436) > Vector(x: 791, y: 436)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 437) > Vector(x: 8, y: 395) > Vector(x: 9, y: 396) > Vector(x: 9, y: 436)) +Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(0,0,0) underline + [9, 377]: Testing + [231, 377]: + [250, 377]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 438) > Vector(x: 792, y: 438) > Vector(x: 791, y: 439) > Vector(x: 9, y: 439)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 438) > Vector(x: 792, y: 480) > Vector(x: 791, y: 479) > Vector(x: 791, y: 439)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 480) > Vector(x: 8, y: 480) > Vector(x: 9, y: 479) > Vector(x: 791, y: 479)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 480) > Vector(x: 8, y: 438) > Vector(x: 9, y: 439) > Vector(x: 9, y: 479)) +Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(0,0,0) underline + [9, 417]: Testing + [250, 417]: + [271, 417]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 481) > Vector(x: 792, y: 481) > Vector(x: 791, y: 482) > Vector(x: 9, y: 482)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 481) > Vector(x: 792, y: 523) > Vector(x: 791, y: 522) > Vector(x: 791, y: 482)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 523) > Vector(x: 8, y: 523) > Vector(x: 9, y: 522) > Vector(x: 791, y: 522)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 523) > Vector(x: 8, y: 481) > Vector(x: 9, y: 482) > Vector(x: 9, y: 522)) +Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(0,0,0) underline + [9, 493]: Testing + [66, 493]: + [72, 493]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 524) > Vector(x: 792, y: 524) > Vector(x: 791, y: 525) > Vector(x: 9, y: 525)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 524) > Vector(x: 792, y: 566) > Vector(x: 791, y: 565) > Vector(x: 791, y: 525)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 566) > Vector(x: 8, y: 566) > Vector(x: 9, y: 565) > Vector(x: 791, y: 565)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 566) > Vector(x: 8, y: 524) > Vector(x: 9, y: 525) > Vector(x: 9, y: 565)) +Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(0,0,0) underline + [9, 532]: Testing + [87, 532]: + [95, 532]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 567) > Vector(x: 792, y: 567) > Vector(x: 791, y: 568) > Vector(x: 9, y: 568)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 567) > Vector(x: 792, y: 609) > Vector(x: 791, y: 608) > Vector(x: 791, y: 568)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 609) > Vector(x: 8, y: 609) > Vector(x: 9, y: 608) > Vector(x: 791, y: 608)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 609) > Vector(x: 8, y: 567) > Vector(x: 9, y: 568) > Vector(x: 9, y: 608)) +Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(0,0,0) underline + [9, 571]: Testing + [108, 571]: + [118, 571]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 610) > Vector(x: 792, y: 610) > Vector(x: 791, y: 611) > Vector(x: 9, y: 611)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 610) > Vector(x: 792, y: 652) > Vector(x: 791, y: 651) > Vector(x: 791, y: 611)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 652) > Vector(x: 8, y: 652) > Vector(x: 9, y: 651) > Vector(x: 791, y: 651)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 652) > Vector(x: 8, y: 610) > Vector(x: 9, y: 611) > Vector(x: 9, y: 651)) +Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(0,0,0) underline + [9, 610]: Testing + [130, 610]: + [142, 610]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 653) > Vector(x: 792, y: 653) > Vector(x: 791, y: 654) > Vector(x: 9, y: 654)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 653) > Vector(x: 792, y: 695) > Vector(x: 791, y: 694) > Vector(x: 791, y: 654)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 695) > Vector(x: 8, y: 695) > Vector(x: 9, y: 694) > Vector(x: 791, y: 694)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 695) > Vector(x: 8, y: 653) > Vector(x: 9, y: 654) > Vector(x: 9, y: 694)) +Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(0,0,0) underline + [9, 650]: Testing + [151, 650]: + [165, 650]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 696) > Vector(x: 792, y: 696) > Vector(x: 791, y: 697) > Vector(x: 9, y: 697)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 696) > Vector(x: 792, y: 738) > Vector(x: 791, y: 737) > Vector(x: 791, y: 697)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 738) > Vector(x: 8, y: 738) > Vector(x: 9, y: 737) > Vector(x: 791, y: 737)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 738) > Vector(x: 8, y: 696) > Vector(x: 9, y: 697) > Vector(x: 9, y: 737)) +Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(0,0,0) underline + [9, 689]: Testing + [172, 689]: + [188, 689]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 739) > Vector(x: 792, y: 739) > Vector(x: 791, y: 740) > Vector(x: 9, y: 740)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 739) > Vector(x: 792, y: 781) > Vector(x: 791, y: 780) > Vector(x: 791, y: 740)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 781) > Vector(x: 8, y: 781) > Vector(x: 9, y: 780) > Vector(x: 791, y: 780)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 781) > Vector(x: 8, y: 739) > Vector(x: 9, y: 740) > Vector(x: 9, y: 780)) +Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(0,0,0) underline + [9, 729]: Testing + [194, 729]: + [212, 729]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 782) > Vector(x: 792, y: 782) > Vector(x: 791, y: 783) > Vector(x: 9, y: 783)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 782) > Vector(x: 792, y: 824) > Vector(x: 791, y: 823) > Vector(x: 791, y: 783)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 824) > Vector(x: 8, y: 824) > Vector(x: 9, y: 823) > Vector(x: 791, y: 823)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 824) > Vector(x: 8, y: 782) > Vector(x: 9, y: 783) > Vector(x: 9, y: 823)) +Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(0,0,0) underline + [9, 768]: Testing + [215, 768]: + [235, 768]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 825) > Vector(x: 792, y: 825) > Vector(x: 791, y: 826) > Vector(x: 9, y: 826)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 825) > Vector(x: 792, y: 867) > Vector(x: 791, y: 866) > Vector(x: 791, y: 826)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 8, y: 867) > Vector(x: 9, y: 866) > Vector(x: 791, y: 866)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 8, y: 825) > Vector(x: 9, y: 826) > Vector(x: 9, y: 866)) +Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(0,0,0) underline + [9, 807]: Testing + [236, 807]: + [259, 807]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 868) > Vector(x: 792, y: 868) > Vector(x: 791, y: 869) > Vector(x: 9, y: 869)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 868) > Vector(x: 792, y: 910) > Vector(x: 791, y: 909) > Vector(x: 791, y: 869)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 910) > Vector(x: 8, y: 910) > Vector(x: 9, y: 909) > Vector(x: 791, y: 909)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 910) > Vector(x: 8, y: 868) > Vector(x: 9, y: 869) > Vector(x: 9, y: 909)) +Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(0,0,0) underline + [9, 846]: Testing + [258, 846]: + [282, 846]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 911) > Vector(x: 792, y: 911) > Vector(x: 791, y: 912) > Vector(x: 9, y: 912)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 911) > Vector(x: 792, y: 953) > Vector(x: 791, y: 952) > Vector(x: 791, y: 912)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 953) > Vector(x: 8, y: 953) > Vector(x: 9, y: 952) > Vector(x: 791, y: 952)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 953) > Vector(x: 8, y: 911) > Vector(x: 9, y: 912) > Vector(x: 9, y: 952)) +Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(0,0,0) underline + [9, 886]: Testing + [279, 886]: + [306, 886]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 954) > Vector(x: 792, y: 954) > Vector(x: 791, y: 955) > Vector(x: 9, y: 955)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 954) > Vector(x: 792, y: 996) > Vector(x: 791, y: 995) > Vector(x: 791, y: 955)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 996) > Vector(x: 8, y: 996) > Vector(x: 9, y: 995) > Vector(x: 791, y: 995)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 996) > Vector(x: 8, y: 954) > Vector(x: 9, y: 955) > Vector(x: 9, y: 995)) +Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(0,0,0) underline + [9, 966]: Testing + [61, 966]: + [66, 966]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 997) > Vector(x: 792, y: 997) > Vector(x: 791, y: 998) > Vector(x: 9, y: 998)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 997) > Vector(x: 792, y: 1039) > Vector(x: 791, y: 1038) > Vector(x: 791, y: 998)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1039) > Vector(x: 8, y: 1039) > Vector(x: 9, y: 1038) > Vector(x: 791, y: 1038)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1039) > Vector(x: 8, y: 997) > Vector(x: 9, y: 998) > Vector(x: 9, y: 1038)) +Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(0,0,0) underline + [9, 1005]: Testing + [80, 1005]: + [87, 1005]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1040) > Vector(x: 792, y: 1040) > Vector(x: 791, y: 1041) > Vector(x: 9, y: 1041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1040) > Vector(x: 792, y: 1082) > Vector(x: 791, y: 1081) > Vector(x: 791, y: 1041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1082) > Vector(x: 8, y: 1082) > Vector(x: 9, y: 1081) > Vector(x: 791, y: 1081)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1082) > Vector(x: 8, y: 1040) > Vector(x: 9, y: 1041) > Vector(x: 9, y: 1081)) +Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(0,0,0) underline + [9, 1044]: Testing + [100, 1044]: + [108, 1044]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1083) > Vector(x: 792, y: 1083) > Vector(x: 791, y: 1084) > Vector(x: 9, y: 1084)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1083) > Vector(x: 792, y: 1125) > Vector(x: 791, y: 1124) > Vector(x: 791, y: 1084)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1125) > Vector(x: 8, y: 1125) > Vector(x: 9, y: 1124) > Vector(x: 791, y: 1124)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1125) > Vector(x: 8, y: 1083) > Vector(x: 9, y: 1084) > Vector(x: 9, y: 1124)) +Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(0,0,0) underline + [9, 1083]: Testing + [119, 1083]: + [130, 1083]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1126) > Vector(x: 792, y: 1126) > Vector(x: 791, y: 1127) > Vector(x: 9, y: 1127)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1126) > Vector(x: 792, y: 1168) > Vector(x: 791, y: 1167) > Vector(x: 791, y: 1127)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1168) > Vector(x: 8, y: 1168) > Vector(x: 9, y: 1167) > Vector(x: 791, y: 1167)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1168) > Vector(x: 8, y: 1126) > Vector(x: 9, y: 1127) > Vector(x: 9, y: 1167)) +Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(0,0,0) underline + [9, 1123]: Testing + [138, 1123]: + [151, 1123]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1169) > Vector(x: 792, y: 1169) > Vector(x: 791, y: 1170) > Vector(x: 9, y: 1170)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1169) > Vector(x: 792, y: 1211) > Vector(x: 791, y: 1210) > Vector(x: 791, y: 1170)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1211) > Vector(x: 8, y: 1211) > Vector(x: 9, y: 1210) > Vector(x: 791, y: 1210)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1211) > Vector(x: 8, y: 1169) > Vector(x: 9, y: 1170) > Vector(x: 9, y: 1210)) +Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(0,0,0) underline + [9, 1162]: Testing + [158, 1162]: + [172, 1162]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1212) > Vector(x: 792, y: 1212) > Vector(x: 791, y: 1213) > Vector(x: 9, y: 1213)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1212) > Vector(x: 792, y: 1254) > Vector(x: 791, y: 1253) > Vector(x: 791, y: 1213)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1254) > Vector(x: 8, y: 1254) > Vector(x: 9, y: 1253) > Vector(x: 791, y: 1253)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1254) > Vector(x: 8, y: 1212) > Vector(x: 9, y: 1213) > Vector(x: 9, y: 1253)) +Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(0,0,0) underline + [9, 1202]: Testing + [177, 1202]: + [193, 1202]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1255) > Vector(x: 792, y: 1255) > Vector(x: 791, y: 1256) > Vector(x: 9, y: 1256)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1255) > Vector(x: 792, y: 1297) > Vector(x: 791, y: 1296) > Vector(x: 791, y: 1256)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1297) > Vector(x: 8, y: 1297) > Vector(x: 9, y: 1296) > Vector(x: 791, y: 1296)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1297) > Vector(x: 8, y: 1255) > Vector(x: 9, y: 1256) > Vector(x: 9, y: 1296)) +Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(0,0,0) underline + [9, 1241]: Testing + [196, 1241]: + [214, 1241]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1298) > Vector(x: 792, y: 1298) > Vector(x: 791, y: 1299) > Vector(x: 9, y: 1299)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1298) > Vector(x: 792, y: 1340) > Vector(x: 791, y: 1339) > Vector(x: 791, y: 1299)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1340) > Vector(x: 8, y: 1340) > Vector(x: 9, y: 1339) > Vector(x: 791, y: 1339)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1340) > Vector(x: 8, y: 1298) > Vector(x: 9, y: 1299) > Vector(x: 9, y: 1339)) +Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(0,0,0) underline + [9, 1280]: Testing + [216, 1280]: + [236, 1280]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1341) > Vector(x: 792, y: 1341) > Vector(x: 791, y: 1342) > Vector(x: 9, y: 1342)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1341) > Vector(x: 792, y: 1383) > Vector(x: 791, y: 1382) > Vector(x: 791, y: 1342)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1383) > Vector(x: 8, y: 1383) > Vector(x: 9, y: 1382) > Vector(x: 791, y: 1382)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1383) > Vector(x: 8, y: 1341) > Vector(x: 9, y: 1342) > Vector(x: 9, y: 1382)) +Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(0,0,0) underline + [9, 1320]: Testing + [235, 1320]: + [257, 1320]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1384) > Vector(x: 792, y: 1384) > Vector(x: 791, y: 1385) > Vector(x: 9, y: 1385)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1384) > Vector(x: 792, y: 1426) > Vector(x: 791, y: 1425) > Vector(x: 791, y: 1385)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1426) > Vector(x: 8, y: 1426) > Vector(x: 9, y: 1425) > Vector(x: 791, y: 1425)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1426) > Vector(x: 8, y: 1384) > Vector(x: 9, y: 1385) > Vector(x: 9, y: 1425)) +Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(0,0,0) underline + [9, 1359]: Testing + [254, 1359]: + [278, 1359]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1427) > Vector(x: 792, y: 1427) > Vector(x: 791, y: 1428) > Vector(x: 9, y: 1428)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1427) > Vector(x: 792, y: 1469) > Vector(x: 791, y: 1468) > Vector(x: 791, y: 1428)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1469) > Vector(x: 8, y: 1469) > Vector(x: 9, y: 1468) > Vector(x: 791, y: 1468)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1469) > Vector(x: 8, y: 1427) > Vector(x: 9, y: 1428) > Vector(x: 9, y: 1468)) +Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(0,0,0) underline + [9, 1439]: Testing + [76, 1439]: + [86, 1439]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1470) > Vector(x: 792, y: 1470) > Vector(x: 791, y: 1471) > Vector(x: 9, y: 1471)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1470) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1471)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1470) > Vector(x: 9, y: 1471) > Vector(x: 9, y: 1511)) +Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(0,0,0) underline + [9, 1478]: Testing + [102, 1478]: + [115, 1478]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1555) > Vector(x: 791, y: 1554) > Vector(x: 791, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1555) > Vector(x: 8, y: 1555) > Vector(x: 9, y: 1554) > Vector(x: 791, y: 1554)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1555) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1554)) +Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(0,0,0) underline + [9, 1518]: Testing + [127, 1518]: + [144, 1518]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1556) > Vector(x: 792, y: 1556) > Vector(x: 791, y: 1557) > Vector(x: 9, y: 1557)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1556) > Vector(x: 792, y: 1598) > Vector(x: 791, y: 1597) > Vector(x: 791, y: 1557)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1598) > Vector(x: 8, y: 1598) > Vector(x: 9, y: 1597) > Vector(x: 791, y: 1597)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1598) > Vector(x: 8, y: 1556) > Vector(x: 9, y: 1557) > Vector(x: 9, y: 1597)) +Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(0,0,0) underline + [9, 1558]: Testing + [152, 1558]: + [172, 1558]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1599) > Vector(x: 792, y: 1599) > Vector(x: 791, y: 1600) > Vector(x: 9, y: 1600)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1599) > Vector(x: 792, y: 1641) > Vector(x: 791, y: 1640) > Vector(x: 791, y: 1600)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1641) > Vector(x: 8, y: 1641) > Vector(x: 9, y: 1640) > Vector(x: 791, y: 1640)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1641) > Vector(x: 8, y: 1599) > Vector(x: 9, y: 1600) > Vector(x: 9, y: 1640)) +Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(0,0,0) underline + [9, 1597]: Testing + [177, 1597]: + [201, 1597]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1642) > Vector(x: 792, y: 1642) > Vector(x: 791, y: 1643) > Vector(x: 9, y: 1643)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1642) > Vector(x: 792, y: 1684) > Vector(x: 791, y: 1683) > Vector(x: 791, y: 1643)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1684) > Vector(x: 8, y: 1684) > Vector(x: 9, y: 1683) > Vector(x: 791, y: 1683)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1684) > Vector(x: 8, y: 1642) > Vector(x: 9, y: 1643) > Vector(x: 9, y: 1683)) +Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(0,0,0) underline + [9, 1637]: Testing + [202, 1637]: + [230, 1637]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1685) > Vector(x: 792, y: 1685) > Vector(x: 791, y: 1686) > Vector(x: 9, y: 1686)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1685) > Vector(x: 792, y: 1727) > Vector(x: 791, y: 1726) > Vector(x: 791, y: 1686)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1727) > Vector(x: 8, y: 1727) > Vector(x: 9, y: 1726) > Vector(x: 791, y: 1726)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1727) > Vector(x: 8, y: 1685) > Vector(x: 9, y: 1686) > Vector(x: 9, y: 1726)) +Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(0,0,0) underline + [9, 1677]: Testing + [228, 1677]: + [259, 1677]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1728) > Vector(x: 792, y: 1728) > Vector(x: 791, y: 1729) > Vector(x: 9, y: 1729)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1728) > Vector(x: 792, y: 1770) > Vector(x: 791, y: 1769) > Vector(x: 791, y: 1729)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1770) > Vector(x: 8, y: 1770) > Vector(x: 9, y: 1769) > Vector(x: 791, y: 1769)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1770) > Vector(x: 8, y: 1728) > Vector(x: 9, y: 1729) > Vector(x: 9, y: 1769)) +Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(0,0,0) underline + [9, 1716]: Testing + [253, 1716]: + [288, 1716]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1771) > Vector(x: 792, y: 1771) > Vector(x: 791, y: 1772) > Vector(x: 9, y: 1772)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1771) > Vector(x: 792, y: 1813) > Vector(x: 791, y: 1812) > Vector(x: 791, y: 1772)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1813) > Vector(x: 8, y: 1813) > Vector(x: 9, y: 1812) > Vector(x: 791, y: 1812)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1813) > Vector(x: 8, y: 1771) > Vector(x: 9, y: 1772) > Vector(x: 9, y: 1812)) +Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(0,0,0) underline + [9, 1756]: Testing + [278, 1756]: + [316, 1756]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1814) > Vector(x: 792, y: 1814) > Vector(x: 791, y: 1815) > Vector(x: 9, y: 1815)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1814) > Vector(x: 792, y: 1856) > Vector(x: 791, y: 1855) > Vector(x: 791, y: 1815)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1856) > Vector(x: 8, y: 1856) > Vector(x: 9, y: 1855) > Vector(x: 791, y: 1855)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1856) > Vector(x: 8, y: 1814) > Vector(x: 9, y: 1815) > Vector(x: 9, y: 1855)) +Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(0,0,0) underline + [9, 1795]: Testing + [303, 1795]: + [345, 1795]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1857) > Vector(x: 792, y: 1857) > Vector(x: 791, y: 1858) > Vector(x: 9, y: 1858)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1857) > Vector(x: 792, y: 1899) > Vector(x: 791, y: 1898) > Vector(x: 791, y: 1858)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1899) > Vector(x: 8, y: 1899) > Vector(x: 9, y: 1898) > Vector(x: 791, y: 1898)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1899) > Vector(x: 8, y: 1857) > Vector(x: 9, y: 1858) > Vector(x: 9, y: 1898)) +Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(0,0,0) underline + [9, 1835]: Testing + [328, 1835]: + [374, 1835]: texts \ No newline at end of file diff --git a/tests/cases/text/underline.html b/tests/reftests/text/underline.html similarity index 100% rename from tests/cases/text/underline.html rename to tests/reftests/text/underline.html diff --git a/tests/reftests/text/underline.txt b/tests/reftests/text/underline.txt new file mode 100644 index 000000000..e2053db69 --- /dev/null +++ b/tests/reftests/text/underline.txt @@ -0,0 +1,355 @@ +Window: [800, 2528] +Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27)) +Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(0,0,0) underline + [9, 9]: Testing + [60, 9]: + [64, 9]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56)) +Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(0,0,0) underline + [9, 31]: Testing + [79, 31]: + [85, 31]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91)) +Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(0,0,0) underline + [9, 59]: Testing + [98, 59]: + [106, 59]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133)) +Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(0,0,0) underline + [9, 94]: Testing + [117, 94]: + [126, 94]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182)) +Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(0,0,0) underline + [9, 136]: Testing + [136, 136]: + [147, 136]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238)) +Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(0,0,0) underline + [9, 186]: Testing + [155, 186]: + [168, 186]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301)) +Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(0,0,0) underline + [9, 242]: Testing + [174, 242]: + [188, 242]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370)) +Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(0,0,0) underline + [9, 305]: Testing + [193, 305]: + [209, 305]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447)) +Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(0,0,0) underline + [9, 374]: Testing + [212, 374]: + [230, 374]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530)) +Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(0,0,0) underline + [9, 451]: Testing + [231, 451]: + [250, 451]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621)) +Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(0,0,0) underline + [9, 535]: Testing + [250, 535]: + [271, 535]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643)) +Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(0,0,0) underline + [9, 624]: Testing + [66, 624]: + [72, 624]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673)) +Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(0,0,0) underline + [9, 646]: Testing + [87, 646]: + [95, 646]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710)) +Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(0,0,0) underline + [9, 676]: Testing + [108, 676]: + [118, 676]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754)) +Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(0,0,0) underline + [9, 713]: Testing + [130, 713]: + [142, 713]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806)) +Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(0,0,0) underline + [9, 757]: Testing + [151, 757]: + [165, 757]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865)) +Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(0,0,0) underline + [9, 809]: Testing + [172, 809]: + [188, 809]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931)) +Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(0,0,0) underline + [9, 868]: Testing + [194, 868]: + [212, 868]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004)) +Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(0,0,0) underline + [9, 934]: Testing + [215, 934]: + [235, 934]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085)) +Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(0,0,0) underline + [9, 1007]: Testing + [236, 1007]: + [259, 1007]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173)) +Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(0,0,0) underline + [9, 1088]: Testing + [258, 1088]: + [282, 1088]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269)) +Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(0,0,0) underline + [9, 1177]: Testing + [279, 1177]: + [306, 1177]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291)) +Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(0,0,0) underline + [9, 1272]: Testing + [61, 1272]: + [66, 1272]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320)) +Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(0,0,0) underline + [9, 1294]: Testing + [80, 1294]: + [87, 1294]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357)) +Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(0,0,0) underline + [9, 1324]: Testing + [100, 1324]: + [108, 1324]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401)) +Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(0,0,0) underline + [9, 1360]: Testing + [119, 1360]: + [130, 1360]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453)) +Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(0,0,0) underline + [9, 1404]: Testing + [138, 1404]: + [151, 1404]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511)) +Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(0,0,0) underline + [9, 1456]: Testing + [158, 1456]: + [172, 1456]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577)) +Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(0,0,0) underline + [9, 1514]: Testing + [177, 1514]: + [193, 1514]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650)) +Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(0,0,0) underline + [9, 1580]: Testing + [196, 1580]: + [214, 1580]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730)) +Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(0,0,0) underline + [9, 1653]: Testing + [216, 1653]: + [236, 1653]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818)) +Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(0,0,0) underline + [9, 1733]: Testing + [235, 1733]: + [257, 1733]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912)) +Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(0,0,0) underline + [9, 1821]: Testing + [254, 1821]: + [278, 1821]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933)) +Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(0,0,0) underline + [9, 1915]: Testing + [76, 1915]: + [86, 1915]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961)) +Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(0,0,0) underline + [9, 1936]: Testing + [102, 1936]: + [115, 1936]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996)) +Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(0,0,0) underline + [9, 1965]: Testing + [127, 1965]: + [144, 1965]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038)) +Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(0,0,0) underline + [9, 1999]: Testing + [152, 1999]: + [172, 1999]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086)) +Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(0,0,0) underline + [9, 2041]: Testing + [177, 2041]: + [201, 2041]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141)) +Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(0,0,0) underline + [9, 2089]: Testing + [202, 2089]: + [230, 2089]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203)) +Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(0,0,0) underline + [9, 2145]: Testing + [228, 2145]: + [259, 2145]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272)) +Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(0,0,0) underline + [9, 2206]: Testing + [253, 2206]: + [288, 2206]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348)) +Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(0,0,0) underline + [9, 2275]: Testing + [278, 2275]: + [316, 2275]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430)) +Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(0,0,0) underline + [9, 2351]: Testing + [303, 2351]: + [345, 2351]: texts +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519)) +Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(0,0,0) underline + [9, 2433]: Testing + [328, 2433]: + [374, 2433]: texts \ No newline at end of file diff --git a/tests/cases/transform/nested.html b/tests/reftests/transform/nested.html similarity index 100% rename from tests/cases/transform/nested.html rename to tests/reftests/transform/nested.html diff --git a/tests/reftests/transform/nested.txt b/tests/reftests/transform/nested.txt new file mode 100644 index 000000000..0aca0f48f --- /dev/null +++ b/tests/reftests/transform/nested.txt @@ -0,0 +1,42 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 108) > Vector(x: 649, y: 108) > Vector(x: 649, y: 157) > Vector(x: 8, y: 157)) + Fill: rgb(205,92,92) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 124]: First + [41, 124]: level + [76, 124]: content +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [568, 124]: , + [576, 124]: ending + [624, 124]: first +Clip: Path (Vector(x: 653, y: 123) > Vector(x: 749, y: 123) > Vector(x: 749, y: 142) > Vector(x: 653, y: 142)) + Fill: rgb(188,143,143) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [653, 124]: something + [724, 124]: else +Transform: (348, 132) [0.99, 0.13, -0.13, 0.99, 0, 0] + Clip: Path (Vector(x: 128, y: 108) > Vector(x: 568, y: 108) > Vector(x: 568, y: 157) > Vector(x: 128, y: 157)) + Fill: rgb(143,188,143) + Shape: rgb(255,0,0) Path (Vector(x: 128, y: 108) > Vector(x: 568, y: 108) > Vector(x: 553, y: 123) > Vector(x: 143, y: 123)) + Shape: rgb(255,0,0) Path (Vector(x: 568, y: 108) > Vector(x: 568, y: 157) > Vector(x: 553, y: 142) > Vector(x: 553, y: 123)) + Shape: rgb(255,0,0) Path (Vector(x: 568, y: 157) > Vector(x: 128, y: 157) > Vector(x: 143, y: 142) > Vector(x: 553, y: 142)) + Shape: rgb(255,0,0) Path (Vector(x: 128, y: 157) > Vector(x: 128, y: 108) > Vector(x: 143, y: 123) > Vector(x: 143, y: 142)) + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [143, 123]: with + [175, 123]: second + [224, 123]: level + [258, 123]: content + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [453, 123]: , + [461, 123]: ending + [509, 123]: second + Transform: (381, 132) [0.33, -0.94, 0.94, 0.33, 0, 0] + Clip: Path (Vector(x: 310, y: 123) > Vector(x: 453, y: 123) > Vector(x: 453, y: 142) > Vector(x: 310, y: 142)) + Fill: rgb(95,158,160) + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [310, 123]: and + [337, 123]: third + [371, 123]: level + [406, 123]: content \ No newline at end of file diff --git a/tests/cases/transform/rotate.html b/tests/reftests/transform/rotate.html similarity index 100% rename from tests/cases/transform/rotate.html rename to tests/reftests/transform/rotate.html diff --git a/tests/reftests/transform/rotate.txt b/tests/reftests/transform/rotate.txt new file mode 100644 index 000000000..bfd410b12 --- /dev/null +++ b/tests/reftests/transform/rotate.txt @@ -0,0 +1,12 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Transform: (208, 110) [0.71, -0.71, 0.71, 0.71, 0, 0] + Clip: Path (Vector(x: 108, y: 8) > Vector(x: 308, y: 8) > Vector(x: 308, y: 208) > Vector(x: 108, y: 208)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Transform: (667, 110) [0, 1, -1, 0, 0, 0] + Clip: Path (Vector(x: 642, y: 8) > Vector(x: 692, y: 8) > Vector(x: 692, y: 208) > Vector(x: 642, y: 208)) + Draw image: Image ("/tests/assets/image2.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Transform: (158, 360) [0.71, 0.71, -0.71, 0.71, 0, 0] + Clip: Path (Vector(x: 108, y: 258) > Vector(x: 208, y: 258) > Vector(x: 208, y: 458) > Vector(x: 108, y: 458)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) \ No newline at end of file diff --git a/tests/cases/transform/translate.html b/tests/reftests/transform/translate.html similarity index 100% rename from tests/cases/transform/translate.html rename to tests/reftests/transform/translate.html diff --git a/tests/reftests/transform/translate.txt b/tests/reftests/transform/translate.txt new file mode 100644 index 000000000..1e93d1118 --- /dev/null +++ b/tests/reftests/transform/translate.txt @@ -0,0 +1,37 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 108) > Vector(x: 699, y: 108) > Vector(x: 699, y: 207) > Vector(x: 8, y: 207)) + Fill: rgb(205,92,92) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [18, 148]: First + [51, 148]: level + [86, 148]: content +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [608, 148]: , + [616, 148]: ending + [664, 148]: first +Transform: (373, 157) [1, 0, 0, 1, 125, 0] + Clip: Path (Vector(x: 138, y: 118) > Vector(x: 608, y: 118) > Vector(x: 608, y: 197) > Vector(x: 138, y: 197)) + Fill: rgb(143,188,143) + Shape: rgb(255,0,0) Path (Vector(x: 138, y: 118) > Vector(x: 608, y: 118) > Vector(x: 598, y: 128) > Vector(x: 148, y: 128)) + Shape: rgb(255,0,0) Path (Vector(x: 608, y: 118) > Vector(x: 608, y: 197) > Vector(x: 598, y: 187) > Vector(x: 598, y: 128)) + Shape: rgb(255,0,0) Path (Vector(x: 608, y: 197) > Vector(x: 138, y: 197) > Vector(x: 148, y: 187) > Vector(x: 598, y: 187)) + Shape: rgb(255,0,0) Path (Vector(x: 138, y: 197) > Vector(x: 138, y: 118) > Vector(x: 148, y: 128) > Vector(x: 148, y: 187)) + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [158, 148]: with + [190, 148]: second + [238, 148]: level + [274, 148]: content + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [488, 148]: , + [496, 148]: ending + [544, 148]: second + Transform: (425, 188) [1, 0, 0, 1, 100, -25] + Clip: Path (Vector(x: 325, y: 138) > Vector(x: 488, y: 138) > Vector(x: 488, y: 177) > Vector(x: 325, y: 177)) + Fill: rgb(95,158,160) + Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [335, 148]: and + [362, 148]: third + [396, 148]: level + [431, 148]: content \ No newline at end of file diff --git a/tests/cases/visibility.html b/tests/reftests/visibility.html similarity index 100% rename from tests/cases/visibility.html rename to tests/reftests/visibility.html diff --git a/tests/reftests/visibility.txt b/tests/reftests/visibility.txt new file mode 100644 index 000000000..17bfa2fa5 --- /dev/null +++ b/tests/reftests/visibility.txt @@ -0,0 +1,25 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 790, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 178) > Vector(x: 790, y: 176) > Vector(x: 790, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 178) > Vector(x: 8, y: 178) > Vector(x: 10, y: 176) > Vector(x: 790, y: 176)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 178) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 176)) +Text: rgb(0,0,0) normal normal 700 32px Times New Roman + [10, 32]: Display:none + [198, 32]: and + [257, 32]: visible:hidden + [457, 32]: tests +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 89) > Vector(x: 790, y: 89) > Vector(x: 788, y: 91) > Vector(x: 12, y: 91)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 89) > Vector(x: 790, y: 112) > Vector(x: 788, y: 110) > Vector(x: 788, y: 91)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 112) > Vector(x: 10, y: 112) > Vector(x: 12, y: 110) > Vector(x: 788, y: 110)) +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 112) > Vector(x: 10, y: 89) > Vector(x: 12, y: 91) > Vector(x: 12, y: 110)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [12, 92]: This + [44, 92]: should + [91, 92]: be + [110, 92]: visible +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 143) > Vector(x: 790, y: 143) > Vector(x: 789, y: 144) > Vector(x: 11, y: 144)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 143) > Vector(x: 790, y: 145) > Vector(x: 789, y: 144) > Vector(x: 789, y: 144)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 145) > Vector(x: 10, y: 145) > Vector(x: 11, y: 144) > Vector(x: 789, y: 144)) +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 145) > Vector(x: 10, y: 143) > Vector(x: 11, y: 144) > Vector(x: 11, y: 144)) \ No newline at end of file diff --git a/tests/cases/zindex/z-index1.html b/tests/reftests/zindex/z-index1.html similarity index 100% rename from tests/cases/zindex/z-index1.html rename to tests/reftests/zindex/z-index1.html diff --git a/tests/reftests/zindex/z-index1.txt b/tests/reftests/zindex/z-index1.txt new file mode 100644 index 000000000..95656b4a9 --- /dev/null +++ b/tests/reftests/zindex/z-index1.txt @@ -0,0 +1,75 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 12px Arial + [8, 22]: No + [27, 22]: z + [33, 22]: - + [37, 22]: indexed + [82, 22]: content +Text: rgb(0,0,0) normal normal 400 12px Arial + [8, 213]: Some + [43, 213]: more + [73, 213]: non + [93, 213]: - + [97, 213]: zindexed + [149, 213]: content +Clip: Path (Vector(x: 8, y: 35) > Vector(x: 792, y: 35) > Vector(x: 792, y: 117) > Vector(x: 8, y: 117)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 35) > Vector(x: 792, y: 35) > Vector(x: 791, y: 36) > Vector(x: 9, y: 36)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 35) > Vector(x: 792, y: 117) > Vector(x: 791, y: 116) > Vector(x: 791, y: 36)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 117) > Vector(x: 8, y: 117) > Vector(x: 9, y: 116) > Vector(x: 791, y: 116)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 117) > Vector(x: 8, y: 35) > Vector(x: 9, y: 36) > Vector(x: 9, y: 116)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 64]: position: + [62, 64]: relative; +Text: rgb(0,0,0) normal normal 700 12px Arial + [14, 50]: DIV + [37, 50]: #1 +Clip: Path (Vector(x: 8, y: 131) > Vector(x: 792, y: 131) > Vector(x: 792, y: 213) > Vector(x: 8, y: 213)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 131) > Vector(x: 792, y: 131) > Vector(x: 791, y: 132) > Vector(x: 9, y: 132)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 131) > Vector(x: 792, y: 213) > Vector(x: 791, y: 212) > Vector(x: 791, y: 132)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 213) > Vector(x: 8, y: 213) > Vector(x: 9, y: 212) > Vector(x: 791, y: 212)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 213) > Vector(x: 8, y: 131) > Vector(x: 9, y: 132) > Vector(x: 9, y: 212)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 159]: position: + [62, 159]: relative; +Text: rgb(0,0,0) normal normal 700 12px Arial + [14, 146]: DIV + [37, 146]: #3 +Opacity: 0.8 +Clip: Path (Vector(x: 179, y: 56) > Vector(x: 331, y: 56) > Vector(x: 331, y: 258) > Vector(x: 179, y: 258)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 179, y: 56) > Vector(x: 331, y: 56) > Vector(x: 330, y: 57) > Vector(x: 180, y: 57)) +Shape: rgb(153,0,0) Path (Vector(x: 331, y: 56) > Vector(x: 331, y: 258) > Vector(x: 330, y: 257) > Vector(x: 330, y: 57)) +Shape: rgb(153,0,0) Path (Vector(x: 331, y: 258) > Vector(x: 179, y: 258) > Vector(x: 180, y: 257) > Vector(x: 330, y: 257)) +Shape: rgb(153,0,0) Path (Vector(x: 179, y: 258) > Vector(x: 179, y: 56) > Vector(x: 180, y: 57) > Vector(x: 180, y: 257)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [205, 85]: position: + [253, 85]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [227, 98]: z + [233, 98]: - + [237, 98]: index: + [273, 98]: 1; +Text: rgb(0,0,0) normal normal 700 12px Arial + [235, 71]: DIV + [258, 71]: #2 +Clip: Path (Vector(x: 59, y: 197) > Vector(x: 271, y: 197) > Vector(x: 271, y: 269) > Vector(x: 59, y: 269)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 59, y: 197) > Vector(x: 271, y: 197) > Vector(x: 270, y: 198) > Vector(x: 60, y: 198)) +Shape: rgb(0,0,153) Path (Vector(x: 271, y: 197) > Vector(x: 271, y: 269) > Vector(x: 270, y: 268) > Vector(x: 270, y: 198)) +Shape: rgb(0,0,153) Path (Vector(x: 271, y: 269) > Vector(x: 59, y: 269) > Vector(x: 60, y: 268) > Vector(x: 270, y: 268)) +Shape: rgb(0,0,153) Path (Vector(x: 59, y: 269) > Vector(x: 59, y: 197) > Vector(x: 60, y: 198) > Vector(x: 60, y: 268)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [70, 225]: position: + [118, 225]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [70, 239]: z + [76, 239]: - + [80, 239]: index: + [115, 239]: 2; +Text: rgb(0,0,0) normal normal 700 12px Arial + [70, 212]: DIV + [93, 212]: #4 \ No newline at end of file diff --git a/tests/cases/zindex/z-index10.html b/tests/reftests/zindex/z-index10.html similarity index 100% rename from tests/cases/zindex/z-index10.html rename to tests/reftests/zindex/z-index10.html diff --git a/tests/reftests/zindex/z-index10.txt b/tests/reftests/zindex/z-index10.txt new file mode 100644 index 000000000..c3a21dfa1 --- /dev/null +++ b/tests/reftests/zindex/z-index10.txt @@ -0,0 +1,114 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Opacity: 0.7 +Clip: Path (Vector(x: 20, y: 292) > Vector(x: 780, y: 292) > Vector(x: 780, y: 374) > Vector(x: 20, y: 374)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 20, y: 292) > Vector(x: 780, y: 292) > Vector(x: 779, y: 293) > Vector(x: 21, y: 293)) +Shape: rgb(102,153,102) Path (Vector(x: 780, y: 292) > Vector(x: 780, y: 374) > Vector(x: 779, y: 373) > Vector(x: 779, y: 293)) +Shape: rgb(102,153,102) Path (Vector(x: 780, y: 374) > Vector(x: 20, y: 374) > Vector(x: 21, y: 373) > Vector(x: 779, y: 373)) +Shape: rgb(102,153,102) Path (Vector(x: 20, y: 374) > Vector(x: 20, y: 292) > Vector(x: 21, y: 293) > Vector(x: 21, y: 373)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [31, 306]: Division + [81, 306]: Element + [131, 306]: #2 +Text: rgb(0,0,0) normal normal 400 12px monospace + [31, 326]: position: + [97, 326]: relative; +Text: rgb(0,0,0) normal normal 400 12px monospace + [31, 346]: z + [37, 346]: - + [44, 346]: index: + [90, 346]: 2; +Opacity: 1 +Clip: Path (Vector(x: 180, y: 40) > Vector(x: 552, y: 40) > Vector(x: 552, y: 356) > Vector(x: 180, y: 356)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 180, y: 40) > Vector(x: 552, y: 40) > Vector(x: 551, y: 41) > Vector(x: 181, y: 41)) +Shape: rgb(153,0,0) Path (Vector(x: 552, y: 40) > Vector(x: 552, y: 356) > Vector(x: 551, y: 355) > Vector(x: 551, y: 41)) +Shape: rgb(153,0,0) Path (Vector(x: 552, y: 356) > Vector(x: 180, y: 356) > Vector(x: 181, y: 355) > Vector(x: 551, y: 355)) +Shape: rgb(153,0,0) Path (Vector(x: 180, y: 356) > Vector(x: 180, y: 40) > Vector(x: 181, y: 41) > Vector(x: 181, y: 355)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [201, 191]: Division + [251, 191]: Element + [301, 191]: #3 +Text: rgb(0,0,0) normal normal 400 12px monospace + [201, 211]: position: + [267, 211]: absolute; +Text: rgb(0,0,0) normal normal 400 12px monospace + [201, 231]: z + [207, 231]: - + [214, 231]: index: + [260, 231]: 4; +Opacity: 0.7 +Clip: Path (Vector(x: 201, y: 263) > Vector(x: 531, y: 263) > Vector(x: 531, y: 335) > Vector(x: 201, y: 335)) + Fill: rgb(255,255,204) +Shape: rgb(153,153,102) Path (Vector(x: 201, y: 263) > Vector(x: 531, y: 263) > Vector(x: 530, y: 264) > Vector(x: 202, y: 264)) +Shape: rgb(153,153,102) Path (Vector(x: 531, y: 263) > Vector(x: 531, y: 335) > Vector(x: 530, y: 334) > Vector(x: 530, y: 264)) +Shape: rgb(153,153,102) Path (Vector(x: 531, y: 335) > Vector(x: 201, y: 335) > Vector(x: 202, y: 334) > Vector(x: 530, y: 334)) +Shape: rgb(153,153,102) Path (Vector(x: 201, y: 335) > Vector(x: 201, y: 263) > Vector(x: 202, y: 264) > Vector(x: 202, y: 334)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [212, 272]: Division + [262, 272]: Element + [312, 272]: #5 +Text: rgb(0,0,0) normal normal 400 12px monospace + [212, 292]: position: + [278, 292]: relative; +Text: rgb(0,0,0) normal normal 400 12px monospace + [212, 312]: z + [218, 312]: - + [225, 312]: index: + [271, 312]: 1; +Clip: Path (Vector(x: 361, y: 61) > Vector(x: 513, y: 61) > Vector(x: 513, y: 313) > Vector(x: 361, y: 313)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 361, y: 61) > Vector(x: 513, y: 61) > Vector(x: 512, y: 62) > Vector(x: 362, y: 62)) +Shape: rgb(0,0,153) Path (Vector(x: 513, y: 61) > Vector(x: 513, y: 313) > Vector(x: 512, y: 312) > Vector(x: 512, y: 62)) +Shape: rgb(0,0,153) Path (Vector(x: 513, y: 313) > Vector(x: 361, y: 313) > Vector(x: 362, y: 312) > Vector(x: 512, y: 312)) +Shape: rgb(0,0,153) Path (Vector(x: 361, y: 313) > Vector(x: 361, y: 61) > Vector(x: 362, y: 62) > Vector(x: 362, y: 312)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [380, 190]: Division + [430, 190]: Element + [480, 190]: #6 +Text: rgb(0,0,0) normal normal 400 12px monospace + [374, 210]: position: + [440, 210]: absolute; +Text: rgb(0,0,0) normal normal 400 12px monospace + [401, 230]: z + [407, 230]: - + [414, 230]: index: + [460, 230]: 3; +Clip: Path (Vector(x: 201, y: 81) > Vector(x: 531, y: 81) > Vector(x: 531, y: 173) > Vector(x: 201, y: 173)) + Fill: rgb(255,255,204) +Shape: rgb(153,153,102) Path (Vector(x: 201, y: 81) > Vector(x: 531, y: 81) > Vector(x: 530, y: 82) > Vector(x: 202, y: 82)) +Shape: rgb(153,153,102) Path (Vector(x: 531, y: 81) > Vector(x: 531, y: 173) > Vector(x: 530, y: 172) > Vector(x: 530, y: 82)) +Shape: rgb(153,153,102) Path (Vector(x: 531, y: 173) > Vector(x: 201, y: 173) > Vector(x: 202, y: 172) > Vector(x: 530, y: 172)) +Shape: rgb(153,153,102) Path (Vector(x: 201, y: 173) > Vector(x: 201, y: 81) > Vector(x: 202, y: 82) > Vector(x: 202, y: 172)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [212, 110]: Division + [262, 110]: Element + [312, 110]: #4 +Text: rgb(0,0,0) normal normal 400 12px monospace + [212, 130]: position: + [278, 130]: relative; +Text: rgb(0,0,0) normal normal 400 12px monospace + [212, 150]: z + [218, 150]: - + [225, 150]: index: + [271, 150]: 6; +Clip: Path (Vector(x: 20, y: 20) > Vector(x: 780, y: 20) > Vector(x: 780, y: 102) > Vector(x: 20, y: 102)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 20, y: 20) > Vector(x: 780, y: 20) > Vector(x: 779, y: 21) > Vector(x: 21, y: 21)) +Shape: rgb(102,153,102) Path (Vector(x: 780, y: 20) > Vector(x: 780, y: 102) > Vector(x: 779, y: 101) > Vector(x: 779, y: 21)) +Shape: rgb(102,153,102) Path (Vector(x: 780, y: 102) > Vector(x: 20, y: 102) > Vector(x: 21, y: 101) > Vector(x: 779, y: 101)) +Shape: rgb(102,153,102) Path (Vector(x: 20, y: 102) > Vector(x: 20, y: 20) > Vector(x: 21, y: 21) > Vector(x: 21, y: 101)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [31, 34]: Division + [81, 34]: Element + [131, 34]: #1 +Text: rgb(0,0,0) normal normal 400 12px monospace + [31, 54]: position: + [97, 54]: relative; +Text: rgb(0,0,0) normal normal 400 12px monospace + [31, 74]: z + [37, 74]: - + [44, 74]: index: + [90, 74]: 5; \ No newline at end of file diff --git a/tests/cases/zindex/z-index11.html b/tests/reftests/zindex/z-index11.html similarity index 100% rename from tests/cases/zindex/z-index11.html rename to tests/reftests/zindex/z-index11.html diff --git a/tests/reftests/zindex/z-index11.txt b/tests/reftests/zindex/z-index11.txt new file mode 100644 index 000000000..2e237a37c --- /dev/null +++ b/tests/reftests/zindex/z-index11.txt @@ -0,0 +1,28 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 28, y: 28) > Vector(x: 772, y: 28) > Vector(x: 772, y: 245) > Vector(x: 28, y: 245)) + Fill: rgb(155,255,248) +Text: rgb(0,0,0) normal normal 700 24px Arial + [38, 50]: Div + [82, 50]: Element + [182, 50]: #1 +Clip: Path (Vector(x: 38, y: 110) > Vector(x: 321, y: 110) > Vector(x: 321, y: 235) > Vector(x: 38, y: 235)) + Fill: rgb(124,182,89) +Text: rgb(0,0,0) normal normal 700 24px Arial + [38, 123]: Div + [82, 123]: Element + [182, 123]: #2 +Text: rgb(0,0,0) normal normal 700 24px Arial + [38, 175]: Div + [82, 175]: Element + [182, 175]: #3 +Text: rgb(0,0,0) normal normal 400 12px monospace + [38, 217]: float: + [84, 217]: left; +Text: rgb(0,0,0) normal normal 400 12px monospace + [38, 93]: position: + [104, 93]: relative; +Text: rgb(0,0,0) normal normal 400 12px monospace + [209, 165]: position: + [275, 165]: static; \ No newline at end of file diff --git a/tests/cases/zindex/z-index12.html b/tests/reftests/zindex/z-index12.html similarity index 100% rename from tests/cases/zindex/z-index12.html rename to tests/reftests/zindex/z-index12.html diff --git a/tests/reftests/zindex/z-index12.txt b/tests/reftests/zindex/z-index12.txt new file mode 100644 index 000000000..a2c79455b --- /dev/null +++ b/tests/reftests/zindex/z-index12.txt @@ -0,0 +1,15 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 28, y: 28) > Vector(x: 199, y: 28) > Vector(x: 199, y: 80) > Vector(x: 28, y: 80)) + Fill: rgb(124,182,89) +Clip: Path (Vector(x: 28, y: 28) > Vector(x: 199, y: 28) > Vector(x: 199, y: 80) > Vector(x: 28, y: 80)) + Fill: rgb(182,159,26) +Text: rgb(0,0,0) normal normal 700 24px Arial + [28, 40]: Div + [72, 40]: Element + [172, 40]: #3 +Text: rgb(0,0,0) normal normal 700 24px Arial + [28, 40]: Div + [72, 40]: Element + [172, 40]: #2 \ No newline at end of file diff --git a/tests/cases/zindex/z-index13.html b/tests/reftests/zindex/z-index13.html similarity index 100% rename from tests/cases/zindex/z-index13.html rename to tests/reftests/zindex/z-index13.html diff --git a/tests/reftests/zindex/z-index13.txt b/tests/reftests/zindex/z-index13.txt new file mode 100644 index 000000000..e28eabc73 --- /dev/null +++ b/tests/reftests/zindex/z-index13.txt @@ -0,0 +1,9 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 208, y: 8) > Vector(x: 208, y: 208) > Vector(x: 8, y: 208)) + Fill: rgb(0,255,255) +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 108, y: 8) > Vector(x: 108, y: 108) > Vector(x: 8, y: 108)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 8]: outer \ No newline at end of file diff --git a/tests/cases/zindex/z-index14.html b/tests/reftests/zindex/z-index14.html similarity index 100% rename from tests/cases/zindex/z-index14.html rename to tests/reftests/zindex/z-index14.html diff --git a/tests/reftests/zindex/z-index14.txt b/tests/reftests/zindex/z-index14.txt new file mode 100644 index 000000000..783031b7c --- /dev/null +++ b/tests/reftests/zindex/z-index14.txt @@ -0,0 +1,9 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(0,128,0) +Opacity: 1 +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 19) > Vector(x: 0, y: 19)) + Fill: rgb(0,128,0) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Vector(x: 0, y: 200)) + Fill: rgb(0,255,255) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [0, 0]: body \ No newline at end of file diff --git a/tests/cases/zindex/z-index15.html b/tests/reftests/zindex/z-index15.html similarity index 100% rename from tests/cases/zindex/z-index15.html rename to tests/reftests/zindex/z-index15.html diff --git a/tests/reftests/zindex/z-index15.txt b/tests/reftests/zindex/z-index15.txt new file mode 100644 index 000000000..a95d5886b --- /dev/null +++ b/tests/reftests/zindex/z-index15.txt @@ -0,0 +1,9 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(128,128,128) +Opacity: 1 +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Vector(x: 0, y: 200)) + Fill: rgb(0,255,255) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 19) > Vector(x: 0, y: 19)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [0, 0]: body \ No newline at end of file diff --git a/tests/cases/zindex/z-index16.html b/tests/reftests/zindex/z-index16.html similarity index 100% rename from tests/cases/zindex/z-index16.html rename to tests/reftests/zindex/z-index16.html diff --git a/tests/reftests/zindex/z-index16.txt b/tests/reftests/zindex/z-index16.txt new file mode 100644 index 000000000..8138f4342 --- /dev/null +++ b/tests/reftests/zindex/z-index16.txt @@ -0,0 +1,31 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 16]: This + [40, 16]: text + [68, 16]: will + [97, 16]: be + [116, 16]: beneath + [170, 16]: everything. +Clip: Path (Vector(x: 192, y: 192) > Vector(x: 480, y: 192) > Vector(x: 480, y: 480) > Vector(x: 192, y: 480)) + Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [192, 192]: This + [224, 192]: text + [252, 192]: will + [281, 192]: underlay + [341, 192]: text1, + [381, 192]: but + [406, 192]: overlay + [458, 192]: the + [192, 211]: butterfly + [251, 211]: image +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [192, 192]: This + [224, 192]: text + [252, 192]: will + [281, 192]: overlay + [333, 192]: the + [357, 192]: butterfly + [416, 192]: image. \ No newline at end of file diff --git a/tests/cases/zindex/z-index17.html b/tests/reftests/zindex/z-index17.html similarity index 100% rename from tests/cases/zindex/z-index17.html rename to tests/reftests/zindex/z-index17.html diff --git a/tests/reftests/zindex/z-index17.txt b/tests/reftests/zindex/z-index17.txt new file mode 100644 index 000000000..2079deed0 --- /dev/null +++ b/tests/reftests/zindex/z-index17.txt @@ -0,0 +1,13 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgb(238,130,238) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > Vector(x: 8, y: 8)) + Fill: rgb(238,130,238) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 100) > Vector(x: 0, y: 100)) + Fill: rgb(85,107,47) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [0, 0]: fixed + [37, 0]: z + [44, 0]: - + [49, 0]: index + [89, 0]: 10 \ No newline at end of file diff --git a/tests/cases/zindex/z-index18.html b/tests/reftests/zindex/z-index18.html similarity index 100% rename from tests/cases/zindex/z-index18.html rename to tests/reftests/zindex/z-index18.html diff --git a/tests/reftests/zindex/z-index18.txt b/tests/reftests/zindex/z-index18.txt new file mode 100644 index 000000000..82400c59b --- /dev/null +++ b/tests/reftests/zindex/z-index18.txt @@ -0,0 +1,47 @@ +Window: [864, 600] +Rectangle: [0, 0, 864, 600] rgb(238,130,238) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 308) > Vector(x: 8, y: 308)) + Fill: rgb(238,130,238) +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 8]: a +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) + Fill: rgb(0,128,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [8, 8]: b +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: c +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: d +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: e +Clip: Path (Vector(x: 24, y: 18) > Vector(x: 824, y: 18) > Vector(x: 824, y: 318) > Vector(x: 24, y: 318)) + Fill: rgb(255,0,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: f +Clip: Path (Vector(x: 24, y: 18) > Vector(x: 424, y: 18) > Vector(x: 424, y: 318) > Vector(x: 24, y: 318)) + Fill: rgb(0,0,255) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: g +Clip: Path (Vector(x: 24, y: 18) > Vector(x: 224, y: 18) > Vector(x: 224, y: 218) > Vector(x: 24, y: 218)) + Fill: rgb(255,165,0) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: h +Clip: Path (Vector(x: -24, y: 18) > Vector(x: 776, y: 18) > Vector(x: 776, y: 118) > Vector(x: -24, y: 118)) + Fill: rgb(128,0,128) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [-24, 18]: i +Clip: Path (Vector(x: 24, y: 68) > Vector(x: 824, y: 68) > Vector(x: 824, y: 168) > Vector(x: 24, y: 168)) + Fill: rgb(255,192,203) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 68]: j +Clip: Path (Vector(x: 64, y: 98) > Vector(x: 864, y: 98) > Vector(x: 864, y: 198) > Vector(x: 64, y: 198)) + Fill: rgb(0,0,128) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [64, 98]: k +Clip: Path (Vector(x: 24, y: 18) > Vector(x: 124, y: 18) > Vector(x: 124, y: 118) > Vector(x: 24, y: 118)) + Fill: rgb(165,42,42) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [24, 18]: l \ No newline at end of file diff --git a/tests/cases/zindex/z-index2.html b/tests/reftests/zindex/z-index2.html similarity index 100% rename from tests/cases/zindex/z-index2.html rename to tests/reftests/zindex/z-index2.html diff --git a/tests/reftests/zindex/z-index2.txt b/tests/reftests/zindex/z-index2.txt new file mode 100644 index 000000000..73448c084 --- /dev/null +++ b/tests/reftests/zindex/z-index2.txt @@ -0,0 +1,89 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 257) > Vector(x: 792, y: 257) > Vector(x: 792, y: 299) > Vector(x: 8, y: 299)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 8, y: 257) > Vector(x: 792, y: 257) > Vector(x: 791, y: 258) > Vector(x: 9, y: 258)) +Shape: rgb(0,0,153) Path (Vector(x: 792, y: 257) > Vector(x: 792, y: 299) > Vector(x: 791, y: 298) > Vector(x: 791, y: 258)) +Shape: rgb(0,0,153) Path (Vector(x: 792, y: 299) > Vector(x: 8, y: 299) > Vector(x: 9, y: 298) > Vector(x: 791, y: 298)) +Shape: rgb(0,0,153) Path (Vector(x: 8, y: 299) > Vector(x: 8, y: 257) > Vector(x: 9, y: 258) > Vector(x: 9, y: 298)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [19, 271]: DIV + [42, 271]: #6 +Text: rgb(0,0,0) normal normal 400 12px Arial + [19, 285]: position:static; +Clip: Path (Vector(x: 8, y: 27) > Vector(x: 792, y: 27) > Vector(x: 792, y: 109) > Vector(x: 8, y: 109)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 27) > Vector(x: 792, y: 27) > Vector(x: 791, y: 28) > Vector(x: 9, y: 28)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 27) > Vector(x: 792, y: 109) > Vector(x: 791, y: 108) > Vector(x: 791, y: 28)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 109) > Vector(x: 8, y: 109) > Vector(x: 9, y: 108) > Vector(x: 791, y: 108)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 109) > Vector(x: 8, y: 27) > Vector(x: 9, y: 28) > Vector(x: 9, y: 108)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 55]: position: + [62, 55]: relative; +Text: rgb(0,0,0) normal normal 700 12px Arial + [14, 42]: DIV + [37, 42]: #1 +Clip: Path (Vector(x: 8, y: 220) > Vector(x: 792, y: 220) > Vector(x: 792, y: 272) > Vector(x: 8, y: 272)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 220) > Vector(x: 792, y: 220) > Vector(x: 791, y: 221) > Vector(x: 9, y: 221)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 220) > Vector(x: 792, y: 272) > Vector(x: 791, y: 271) > Vector(x: 791, y: 221)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 272) > Vector(x: 8, y: 272) > Vector(x: 9, y: 271) > Vector(x: 791, y: 271)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 272) > Vector(x: 8, y: 220) > Vector(x: 9, y: 221) > Vector(x: 9, y: 271)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 234]: DIV + [37, 234]: #5 +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 248]: position:relative; +Clip: Path (Vector(x: 8, y: 128) > Vector(x: 792, y: 128) > Vector(x: 792, y: 210) > Vector(x: 8, y: 210)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 128) > Vector(x: 792, y: 128) > Vector(x: 791, y: 129) > Vector(x: 9, y: 129)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 128) > Vector(x: 792, y: 210) > Vector(x: 791, y: 209) > Vector(x: 791, y: 129)) +Shape: rgb(102,153,102) Path (Vector(x: 792, y: 210) > Vector(x: 8, y: 210) > Vector(x: 9, y: 209) > Vector(x: 791, y: 209)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 210) > Vector(x: 8, y: 128) > Vector(x: 9, y: 129) > Vector(x: 9, y: 209)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 156]: position: + [62, 156]: relative; +Text: rgb(0,0,0) normal normal 400 12px Arial + [14, 170]: z + [20, 170]: - + [24, 170]: index: + [59, 170]: 1; +Text: rgb(0,0,0) normal normal 700 12px Arial + [14, 142]: DIV + [37, 142]: #3 +Opacity: 0.8 +Clip: Path (Vector(x: 59, y: 194) > Vector(x: 271, y: 194) > Vector(x: 271, y: 266) > Vector(x: 59, y: 266)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 59, y: 194) > Vector(x: 271, y: 194) > Vector(x: 270, y: 195) > Vector(x: 60, y: 195)) +Shape: rgb(0,0,153) Path (Vector(x: 271, y: 194) > Vector(x: 271, y: 266) > Vector(x: 270, y: 265) > Vector(x: 270, y: 195)) +Shape: rgb(0,0,153) Path (Vector(x: 271, y: 266) > Vector(x: 59, y: 266) > Vector(x: 60, y: 265) > Vector(x: 270, y: 265)) +Shape: rgb(0,0,153) Path (Vector(x: 59, y: 266) > Vector(x: 59, y: 194) > Vector(x: 60, y: 195) > Vector(x: 60, y: 265)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [70, 222]: position: + [118, 222]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [70, 236]: z + [76, 236]: - + [80, 236]: index: + [115, 236]: 10; +Text: rgb(0,0,0) normal normal 700 12px Arial + [70, 208]: DIV + [93, 208]: #4 +Clip: Path (Vector(x: 179, y: 48) > Vector(x: 331, y: 48) > Vector(x: 331, y: 250) > Vector(x: 179, y: 250)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 179, y: 48) > Vector(x: 331, y: 48) > Vector(x: 330, y: 49) > Vector(x: 180, y: 49)) +Shape: rgb(153,0,0) Path (Vector(x: 331, y: 48) > Vector(x: 331, y: 250) > Vector(x: 330, y: 249) > Vector(x: 330, y: 49)) +Shape: rgb(153,0,0) Path (Vector(x: 331, y: 250) > Vector(x: 179, y: 250) > Vector(x: 180, y: 249) > Vector(x: 330, y: 249)) +Shape: rgb(153,0,0) Path (Vector(x: 179, y: 250) > Vector(x: 179, y: 48) > Vector(x: 180, y: 49) > Vector(x: 180, y: 249)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [205, 76]: position: + [253, 76]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [227, 90]: z + [233, 90]: - + [237, 90]: index: + [273, 90]: 2; +Text: rgb(0,0,0) normal normal 700 12px Arial + [235, 63]: DIV + [258, 63]: #2 \ No newline at end of file diff --git a/tests/cases/zindex/z-index3.html b/tests/reftests/zindex/z-index3.html similarity index 100% rename from tests/cases/zindex/z-index3.html rename to tests/reftests/zindex/z-index3.html diff --git a/tests/reftests/zindex/z-index3.txt b/tests/reftests/zindex/z-index3.txt new file mode 100644 index 000000000..39fe56386 --- /dev/null +++ b/tests/reftests/zindex/z-index3.txt @@ -0,0 +1,167 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 101) > Vector(x: 267, y: 101) > Vector(x: 267, y: 175) > Vector(x: 8, y: 175)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 101) > Vector(x: 267, y: 101) > Vector(x: 265, y: 103) > Vector(x: 10, y: 103)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 101) > Vector(x: 267, y: 175) > Vector(x: 265, y: 173) > Vector(x: 265, y: 103)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 175) > Vector(x: 8, y: 175) > Vector(x: 10, y: 173) > Vector(x: 265, y: 173)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 175) > Vector(x: 8, y: 101) > Vector(x: 10, y: 103) > Vector(x: 10, y: 173)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [15, 103]: LEVEL + [57, 103]: #1 +Clip: Path (Vector(x: 8, y: 27) > Vector(x: 267, y: 27) > Vector(x: 267, y: 101) > Vector(x: 8, y: 101)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 27) > Vector(x: 267, y: 27) > Vector(x: 265, y: 29) > Vector(x: 10, y: 29)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 27) > Vector(x: 267, y: 101) > Vector(x: 265, y: 99) > Vector(x: 265, y: 29)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 101) > Vector(x: 8, y: 101) > Vector(x: 10, y: 99) > Vector(x: 265, y: 99)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 101) > Vector(x: 8, y: 27) > Vector(x: 10, y: 29) > Vector(x: 10, y: 99)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [15, 29]: LEVEL + [57, 29]: #1 +Clip: Path (Vector(x: 8, y: 175) > Vector(x: 267, y: 175) > Vector(x: 267, y: 249) > Vector(x: 8, y: 249)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 175) > Vector(x: 267, y: 175) > Vector(x: 265, y: 177) > Vector(x: 10, y: 177)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 175) > Vector(x: 267, y: 249) > Vector(x: 265, y: 247) > Vector(x: 265, y: 177)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 249) > Vector(x: 8, y: 249) > Vector(x: 10, y: 247) > Vector(x: 265, y: 247)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 249) > Vector(x: 8, y: 175) > Vector(x: 10, y: 177) > Vector(x: 10, y: 247)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [15, 177]: LEVEL + [57, 177]: #1 +Clip: Path (Vector(x: 8, y: 249) > Vector(x: 267, y: 249) > Vector(x: 267, y: 323) > Vector(x: 8, y: 323)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 249) > Vector(x: 267, y: 249) > Vector(x: 265, y: 251) > Vector(x: 10, y: 251)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 249) > Vector(x: 267, y: 323) > Vector(x: 265, y: 321) > Vector(x: 265, y: 251)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 323) > Vector(x: 8, y: 323) > Vector(x: 10, y: 321) > Vector(x: 265, y: 321)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 323) > Vector(x: 8, y: 249) > Vector(x: 10, y: 251) > Vector(x: 10, y: 321)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [15, 251]: LEVEL + [57, 251]: #1 +Opacity: 0.9 +Clip: Path (Vector(x: 85, y: 59) > Vector(x: 294, y: 59) > Vector(x: 294, y: 123) > Vector(x: 85, y: 123)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 85, y: 59) > Vector(x: 294, y: 59) > Vector(x: 292, y: 61) > Vector(x: 87, y: 61)) +Shape: rgb(153,0,0) Path (Vector(x: 294, y: 59) > Vector(x: 294, y: 123) > Vector(x: 292, y: 121) > Vector(x: 292, y: 61)) +Shape: rgb(153,0,0) Path (Vector(x: 294, y: 123) > Vector(x: 85, y: 123) > Vector(x: 87, y: 121) > Vector(x: 292, y: 121)) +Shape: rgb(153,0,0) Path (Vector(x: 85, y: 123) > Vector(x: 85, y: 59) > Vector(x: 87, y: 61) > Vector(x: 87, y: 121)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [92, 88]: z + [98, 88]: - + [102, 88]: index: + [137, 88]: 1; +Text: rgb(0,0,0) normal normal 700 12px Arial + [92, 74]: LEVEL + [134, 74]: #2 +Clip: Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 197, y: 186)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 304, y: 171) > Vector(x: 199, y: 171)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 304, y: 184) > Vector(x: 304, y: 171)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 197, y: 186) > Vector(x: 199, y: 184) > Vector(x: 304, y: 184)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 197, y: 169) > Vector(x: 199, y: 171) > Vector(x: 199, y: 184)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 171]: LEVEL + [246, 171]: #3 +Clip: Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector(x: 306, y: 98) > Vector(x: 197, y: 98)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector(x: 304, y: 83) > Vector(x: 199, y: 83)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 81) > Vector(x: 306, y: 98) > Vector(x: 304, y: 96) > Vector(x: 304, y: 83)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 197, y: 98) > Vector(x: 199, y: 96) > Vector(x: 304, y: 96)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 197, y: 81) > Vector(x: 199, y: 83) > Vector(x: 199, y: 96)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 83]: LEVEL + [246, 83]: #3 +Clip: Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vector(x: 306, y: 134) > Vector(x: 197, y: 134)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vector(x: 304, y: 118) > Vector(x: 199, y: 118)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 306, y: 134) > Vector(x: 304, y: 132) > Vector(x: 304, y: 118)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 134) > Vector(x: 197, y: 134) > Vector(x: 199, y: 132) > Vector(x: 304, y: 132)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 134) > Vector(x: 197, y: 116) > Vector(x: 199, y: 118) > Vector(x: 199, y: 132)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 118]: LEVEL + [246, 118]: #3 +Clip: Path (Vector(x: 197, y: 134) > Vector(x: 306, y: 134) > Vector(x: 306, y: 151) > Vector(x: 197, y: 151)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 134) > Vector(x: 306, y: 134) > Vector(x: 304, y: 136) > Vector(x: 199, y: 136)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 134) > Vector(x: 306, y: 151) > Vector(x: 304, y: 149) > Vector(x: 304, y: 136)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 151) > Vector(x: 197, y: 151) > Vector(x: 199, y: 149) > Vector(x: 304, y: 149)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 151) > Vector(x: 197, y: 134) > Vector(x: 199, y: 136) > Vector(x: 199, y: 149)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 136]: LEVEL + [246, 136]: #3 +Clip: Path (Vector(x: 197, y: 151) > Vector(x: 306, y: 151) > Vector(x: 306, y: 169) > Vector(x: 197, y: 169)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 151) > Vector(x: 306, y: 151) > Vector(x: 304, y: 153) > Vector(x: 199, y: 153)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 151) > Vector(x: 306, y: 169) > Vector(x: 304, y: 167) > Vector(x: 304, y: 153)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 197, y: 169) > Vector(x: 199, y: 167) > Vector(x: 304, y: 167)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 197, y: 151) > Vector(x: 199, y: 153) > Vector(x: 199, y: 167)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 153]: LEVEL + [246, 153]: #3 +Clip: Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 197, y: 116)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 304, y: 100) > Vector(x: 199, y: 100)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 304, y: 114) > Vector(x: 304, y: 100)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 197, y: 116) > Vector(x: 199, y: 114) > Vector(x: 304, y: 114)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 197, y: 98) > Vector(x: 199, y: 100) > Vector(x: 199, y: 114)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 100]: LEVEL + [246, 100]: #3 +Clip: Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vector(x: 306, y: 204) > Vector(x: 197, y: 204)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vector(x: 304, y: 188) > Vector(x: 199, y: 188)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 306, y: 204) > Vector(x: 304, y: 202) > Vector(x: 304, y: 188)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 204) > Vector(x: 197, y: 204) > Vector(x: 199, y: 202) > Vector(x: 304, y: 202)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 204) > Vector(x: 197, y: 186) > Vector(x: 199, y: 188) > Vector(x: 199, y: 202)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 188]: LEVEL + [246, 188]: #3 +Clip: Path (Vector(x: 197, y: 204) > Vector(x: 306, y: 204) > Vector(x: 306, y: 222) > Vector(x: 197, y: 222)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 204) > Vector(x: 306, y: 204) > Vector(x: 304, y: 206) > Vector(x: 199, y: 206)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 204) > Vector(x: 306, y: 222) > Vector(x: 304, y: 220) > Vector(x: 304, y: 206)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 222) > Vector(x: 197, y: 222) > Vector(x: 199, y: 220) > Vector(x: 304, y: 220)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 222) > Vector(x: 197, y: 204) > Vector(x: 199, y: 206) > Vector(x: 199, y: 220)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 206]: LEVEL + [246, 206]: #3 +Clip: Path (Vector(x: 197, y: 222) > Vector(x: 306, y: 222) > Vector(x: 306, y: 239) > Vector(x: 197, y: 239)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 222) > Vector(x: 306, y: 222) > Vector(x: 304, y: 224) > Vector(x: 199, y: 224)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 222) > Vector(x: 306, y: 239) > Vector(x: 304, y: 237) > Vector(x: 304, y: 224)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 239) > Vector(x: 197, y: 239) > Vector(x: 199, y: 237) > Vector(x: 304, y: 237)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 239) > Vector(x: 197, y: 222) > Vector(x: 199, y: 224) > Vector(x: 199, y: 237)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 224]: LEVEL + [246, 224]: #3 +Clip: Path (Vector(x: 197, y: 239) > Vector(x: 306, y: 239) > Vector(x: 306, y: 257) > Vector(x: 197, y: 257)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 239) > Vector(x: 306, y: 239) > Vector(x: 304, y: 241) > Vector(x: 199, y: 241)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 239) > Vector(x: 306, y: 257) > Vector(x: 304, y: 255) > Vector(x: 304, y: 241)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 257) > Vector(x: 197, y: 257) > Vector(x: 199, y: 255) > Vector(x: 304, y: 255)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 257) > Vector(x: 197, y: 239) > Vector(x: 199, y: 241) > Vector(x: 199, y: 255)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 241]: LEVEL + [246, 241]: #3 +Clip: Path (Vector(x: 197, y: 257) > Vector(x: 306, y: 257) > Vector(x: 306, y: 274) > Vector(x: 197, y: 274)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 257) > Vector(x: 306, y: 257) > Vector(x: 304, y: 259) > Vector(x: 199, y: 259)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 257) > Vector(x: 306, y: 274) > Vector(x: 304, y: 272) > Vector(x: 304, y: 259)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 274) > Vector(x: 197, y: 274) > Vector(x: 199, y: 272) > Vector(x: 304, y: 272)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 274) > Vector(x: 197, y: 257) > Vector(x: 199, y: 259) > Vector(x: 199, y: 272)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 259]: LEVEL + [246, 259]: #3 +Clip: Path (Vector(x: 85, y: 123) > Vector(x: 294, y: 123) > Vector(x: 294, y: 187) > Vector(x: 85, y: 187)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 85, y: 123) > Vector(x: 294, y: 123) > Vector(x: 292, y: 125) > Vector(x: 87, y: 125)) +Shape: rgb(153,0,0) Path (Vector(x: 294, y: 123) > Vector(x: 294, y: 187) > Vector(x: 292, y: 185) > Vector(x: 292, y: 125)) +Shape: rgb(153,0,0) Path (Vector(x: 294, y: 187) > Vector(x: 85, y: 187) > Vector(x: 87, y: 185) > Vector(x: 292, y: 185)) +Shape: rgb(153,0,0) Path (Vector(x: 85, y: 187) > Vector(x: 85, y: 123) > Vector(x: 87, y: 125) > Vector(x: 87, y: 185)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [92, 152]: z + [98, 152]: - + [102, 152]: index: + [137, 152]: 1; +Text: rgb(0,0,0) normal normal 700 12px Arial + [92, 138]: LEVEL + [134, 138]: #2 \ No newline at end of file diff --git a/tests/cases/zindex/z-index4.html b/tests/reftests/zindex/z-index4.html similarity index 100% rename from tests/cases/zindex/z-index4.html rename to tests/reftests/zindex/z-index4.html diff --git a/tests/reftests/zindex/z-index4.txt b/tests/reftests/zindex/z-index4.txt new file mode 100644 index 000000000..893c7f1cd --- /dev/null +++ b/tests/reftests/zindex/z-index4.txt @@ -0,0 +1,23 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 0) > Vector(x: 258, y: 0) > Vector(x: 258, y: 600) > Vector(x: 8, y: 600)) + Fill: rgb(255,221,221) +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 8, y: 82)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector(x: 265, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 10]: LEVEL + [70, 10]: #1 +Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 265, y: 84) > Vector(x: 10, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 84]: LEVEL + [70, 84]: #1 \ No newline at end of file diff --git a/tests/cases/zindex/z-index5.html b/tests/reftests/zindex/z-index5.html similarity index 100% rename from tests/cases/zindex/z-index5.html rename to tests/reftests/zindex/z-index5.html diff --git a/tests/reftests/zindex/z-index5.txt b/tests/reftests/zindex/z-index5.txt new file mode 100644 index 000000000..62a1caaa9 --- /dev/null +++ b/tests/reftests/zindex/z-index5.txt @@ -0,0 +1,23 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 8, y: 82)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector(x: 265, y: 10) > Vector(x: 10, y: 10)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 10]: LEVEL + [70, 10]: #1 +Clip: Path (Vector(x: 8, y: 0) > Vector(x: 258, y: 0) > Vector(x: 258, y: 600) > Vector(x: 8, y: 600)) + Fill: rgb(255,221,221) +Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 265, y: 84) > Vector(x: 10, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 84]: LEVEL + [70, 84]: #1 \ No newline at end of file diff --git a/tests/cases/zindex/z-index6.html b/tests/reftests/zindex/z-index6.html similarity index 100% rename from tests/cases/zindex/z-index6.html rename to tests/reftests/zindex/z-index6.html diff --git a/tests/reftests/zindex/z-index6.txt b/tests/reftests/zindex/z-index6.txt new file mode 100644 index 000000000..cf8146e8f --- /dev/null +++ b/tests/reftests/zindex/z-index6.txt @@ -0,0 +1,34 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 28, y: 113) > Vector(x: 287, y: 113) > Vector(x: 287, y: 187) > Vector(x: 28, y: 187)) + Fill: rgb(255,221,221) +Shape: rgb(102,153,102) Path (Vector(x: 28, y: 113) > Vector(x: 287, y: 113) > Vector(x: 285, y: 115) > Vector(x: 30, y: 115)) +Shape: rgb(102,153,102) Path (Vector(x: 287, y: 113) > Vector(x: 287, y: 187) > Vector(x: 285, y: 185) > Vector(x: 285, y: 115)) +Shape: rgb(102,153,102) Path (Vector(x: 287, y: 187) > Vector(x: 28, y: 187) > Vector(x: 30, y: 185) > Vector(x: 285, y: 185)) +Shape: rgb(102,153,102) Path (Vector(x: 28, y: 187) > Vector(x: 28, y: 113) > Vector(x: 30, y: 115) > Vector(x: 30, y: 185)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [35, 115]: z + [42, 115]: - + [48, 115]: index:0 +Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 265, y: 84) > Vector(x: 10, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 84]: default + [64, 84]: z + [70, 84]: - + [76, 84]: index +Clip: Path (Vector(x: 8, y: 156) > Vector(x: 267, y: 156) > Vector(x: 267, y: 230) > Vector(x: 8, y: 230)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 267, y: 156) > Vector(x: 265, y: 158) > Vector(x: 10, y: 158)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 267, y: 230) > Vector(x: 265, y: 228) > Vector(x: 265, y: 158)) +Shape: rgb(102,153,102) Path (Vector(x: 267, y: 230) > Vector(x: 8, y: 230) > Vector(x: 10, y: 228) > Vector(x: 265, y: 228)) +Shape: rgb(102,153,102) Path (Vector(x: 8, y: 230) > Vector(x: 8, y: 156) > Vector(x: 10, y: 158) > Vector(x: 10, y: 228)) +Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [15, 158]: z + [22, 158]: - + [28, 158]: index:1 \ No newline at end of file diff --git a/tests/cases/zindex/z-index7.html b/tests/reftests/zindex/z-index7.html similarity index 100% rename from tests/cases/zindex/z-index7.html rename to tests/reftests/zindex/z-index7.html diff --git a/tests/reftests/zindex/z-index7.txt b/tests/reftests/zindex/z-index7.txt new file mode 100644 index 000000000..ece60bcc6 --- /dev/null +++ b/tests/reftests/zindex/z-index7.txt @@ -0,0 +1,64 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 58, y: 322)) + Fill: rgb(255,255,204) +Shape: rgb(153,153,102) Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > Vector(x: 741, y: 251) > Vector(x: 59, y: 251)) +Shape: rgb(153,153,102) Path (Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 741, y: 321) > Vector(x: 741, y: 251)) +Shape: rgb(153,153,102) Path (Vector(x: 742, y: 322) > Vector(x: 58, y: 322) > Vector(x: 59, y: 321) > Vector(x: 741, y: 321)) +Shape: rgb(153,153,102) Path (Vector(x: 58, y: 322) > Vector(x: 58, y: 250) > Vector(x: 59, y: 251) > Vector(x: 59, y: 321)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [363, 278]: no + [380, 278]: positioning +Text: rgb(0,0,0) normal normal 700 12px Arial + [380, 264]: DIV + [403, 264]: #5 +Opacity: 0.7 +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 10, y: 362)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector(x: 161, y: 11) > Vector(x: 11, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 161, y: 361) > Vector(x: 161, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 162, y: 362) > Vector(x: 10, y: 362) > Vector(x: 11, y: 361) > Vector(x: 161, y: 361)) +Shape: rgb(153,0,0) Path (Vector(x: 10, y: 362) > Vector(x: 10, y: 10) > Vector(x: 11, y: 11) > Vector(x: 11, y: 361)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [38, 38]: position: + [86, 38]: absolute; +Text: rgb(0,0,0) normal normal 700 12px Arial + [66, 25]: DIV + [89, 25]: #1 +Clip: Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 58, y: 178)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 741, y: 77) > Vector(x: 59, y: 77)) +Shape: rgb(102,153,102) Path (Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 741, y: 177) > Vector(x: 741, y: 77)) +Shape: rgb(102,153,102) Path (Vector(x: 742, y: 178) > Vector(x: 58, y: 178) > Vector(x: 59, y: 177) > Vector(x: 741, y: 177)) +Shape: rgb(102,153,102) Path (Vector(x: 58, y: 178) > Vector(x: 58, y: 76) > Vector(x: 59, y: 77) > Vector(x: 59, y: 177)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [355, 104]: position: + [403, 104]: relative; +Text: rgb(0,0,0) normal normal 700 12px Arial + [380, 90]: DIV + [403, 90]: #2 +Clip: Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 78, y: 265)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 761, y: 164) > Vector(x: 79, y: 164)) +Shape: rgb(102,153,102) Path (Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 761, y: 264) > Vector(x: 761, y: 164)) +Shape: rgb(102,153,102) Path (Vector(x: 762, y: 265) > Vector(x: 78, y: 265) > Vector(x: 79, y: 264) > Vector(x: 761, y: 264)) +Shape: rgb(102,153,102) Path (Vector(x: 78, y: 265) > Vector(x: 78, y: 163) > Vector(x: 79, y: 164) > Vector(x: 79, y: 264)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [375, 191]: position: + [423, 191]: relative; +Text: rgb(0,0,0) normal normal 700 12px Arial + [400, 177]: DIV + [423, 177]: #3 +Clip: Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 638, y: 362)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 789, y: 11) > Vector(x: 639, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 789, y: 361) > Vector(x: 789, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 790, y: 362) > Vector(x: 638, y: 362) > Vector(x: 639, y: 361) > Vector(x: 789, y: 361)) +Shape: rgb(153,0,0) Path (Vector(x: 638, y: 362) > Vector(x: 638, y: 10) > Vector(x: 639, y: 11) > Vector(x: 639, y: 361)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [666, 38]: position: + [714, 38]: absolute; +Text: rgb(0,0,0) normal normal 700 12px Arial + [694, 25]: DIV + [717, 25]: #4 \ No newline at end of file diff --git a/tests/cases/zindex/z-index8.html b/tests/reftests/zindex/z-index8.html similarity index 100% rename from tests/cases/zindex/z-index8.html rename to tests/reftests/zindex/z-index8.html diff --git a/tests/reftests/zindex/z-index8.txt b/tests/reftests/zindex/z-index8.txt new file mode 100644 index 000000000..49e37bff0 --- /dev/null +++ b/tests/reftests/zindex/z-index8.txt @@ -0,0 +1,64 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Clip: Path (Vector(x: 18, y: 64) > Vector(x: 782, y: 64) > Vector(x: 782, y: 166) > Vector(x: 18, y: 166)) + Fill: rgb(255,255,204) +Shape: rgb(153,153,102) Path (Vector(x: 18, y: 64) > Vector(x: 782, y: 64) > Vector(x: 781, y: 65) > Vector(x: 19, y: 65)) +Shape: rgb(153,153,102) Path (Vector(x: 782, y: 64) > Vector(x: 782, y: 166) > Vector(x: 781, y: 165) > Vector(x: 781, y: 65)) +Shape: rgb(153,153,102) Path (Vector(x: 782, y: 166) > Vector(x: 18, y: 166) > Vector(x: 19, y: 165) > Vector(x: 781, y: 165)) +Shape: rgb(153,153,102) Path (Vector(x: 18, y: 166) > Vector(x: 18, y: 64) > Vector(x: 19, y: 65) > Vector(x: 19, y: 165)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [190, 93]: no + [207, 93]: positioning +Text: rgb(0,0,0) normal normal 700 12px Arial + [190, 79]: DIV + [213, 79]: #4 +Opacity: 0.7 +Clip: Path (Vector(x: 508, y: 10) > Vector(x: 660, y: 10) > Vector(x: 660, y: 212) > Vector(x: 508, y: 212)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 508, y: 10) > Vector(x: 660, y: 10) > Vector(x: 659, y: 11) > Vector(x: 509, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 660, y: 10) > Vector(x: 660, y: 212) > Vector(x: 659, y: 211) > Vector(x: 659, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 660, y: 212) > Vector(x: 508, y: 212) > Vector(x: 509, y: 211) > Vector(x: 659, y: 211)) +Shape: rgb(153,0,0) Path (Vector(x: 508, y: 212) > Vector(x: 508, y: 10) > Vector(x: 509, y: 11) > Vector(x: 509, y: 211)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [536, 38]: position: + [584, 38]: absolute; +Text: rgb(0,0,0) normal normal 700 12px Arial + [564, 25]: DIV + [587, 25]: #1 +Clip: Path (Vector(x: 28, y: 46) > Vector(x: 180, y: 46) > Vector(x: 180, y: 248) > Vector(x: 28, y: 248)) + Fill: rgb(204,255,204) +Shape: rgb(0,153,0) Path (Vector(x: 28, y: 46) > Vector(x: 180, y: 46) > Vector(x: 179, y: 47) > Vector(x: 29, y: 47)) +Shape: rgb(0,153,0) Path (Vector(x: 180, y: 46) > Vector(x: 180, y: 248) > Vector(x: 179, y: 247) > Vector(x: 179, y: 47)) +Shape: rgb(0,153,0) Path (Vector(x: 180, y: 248) > Vector(x: 28, y: 248) > Vector(x: 29, y: 247) > Vector(x: 179, y: 247)) +Shape: rgb(0,153,0) Path (Vector(x: 28, y: 248) > Vector(x: 28, y: 46) > Vector(x: 29, y: 47) > Vector(x: 29, y: 247)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [80, 74]: float: + [109, 74]: left; +Text: rgb(0,0,0) normal normal 700 12px Arial + [84, 60]: DIV + [107, 60]: #2 +Clip: Path (Vector(x: 620, y: 46) > Vector(x: 772, y: 46) > Vector(x: 772, y: 248) > Vector(x: 620, y: 248)) + Fill: rgb(204,255,204) +Shape: rgb(0,153,0) Path (Vector(x: 620, y: 46) > Vector(x: 772, y: 46) > Vector(x: 771, y: 47) > Vector(x: 621, y: 47)) +Shape: rgb(0,153,0) Path (Vector(x: 772, y: 46) > Vector(x: 772, y: 248) > Vector(x: 771, y: 247) > Vector(x: 771, y: 47)) +Shape: rgb(0,153,0) Path (Vector(x: 772, y: 248) > Vector(x: 620, y: 248) > Vector(x: 621, y: 247) > Vector(x: 771, y: 247)) +Shape: rgb(0,153,0) Path (Vector(x: 620, y: 248) > Vector(x: 620, y: 46) > Vector(x: 621, y: 47) > Vector(x: 621, y: 247)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [668, 74]: float: + [697, 74]: right; +Text: rgb(0,0,0) normal normal 700 12px Arial + [676, 60]: DIV + [699, 60]: #3 +Clip: Path (Vector(x: 100, y: 130) > Vector(x: 252, y: 130) > Vector(x: 252, y: 232) > Vector(x: 100, y: 232)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 100, y: 130) > Vector(x: 252, y: 130) > Vector(x: 251, y: 131) > Vector(x: 101, y: 131)) +Shape: rgb(153,0,0) Path (Vector(x: 252, y: 130) > Vector(x: 252, y: 232) > Vector(x: 251, y: 231) > Vector(x: 251, y: 131)) +Shape: rgb(153,0,0) Path (Vector(x: 252, y: 232) > Vector(x: 100, y: 232) > Vector(x: 101, y: 231) > Vector(x: 251, y: 231)) +Shape: rgb(153,0,0) Path (Vector(x: 100, y: 232) > Vector(x: 100, y: 130) > Vector(x: 101, y: 131) > Vector(x: 101, y: 231)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [128, 158]: position: + [176, 158]: absolute; +Text: rgb(0,0,0) normal normal 700 12px Arial + [156, 145]: DIV + [179, 145]: #5 \ No newline at end of file diff --git a/tests/cases/zindex/z-index9.html b/tests/reftests/zindex/z-index9.html similarity index 100% rename from tests/cases/zindex/z-index9.html rename to tests/reftests/zindex/z-index9.html diff --git a/tests/reftests/zindex/z-index9.txt b/tests/reftests/zindex/z-index9.txt new file mode 100644 index 000000000..0571bfbef --- /dev/null +++ b/tests/reftests/zindex/z-index9.txt @@ -0,0 +1,89 @@ +Window: [800, 600] +Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) +Opacity: 1 +Opacity: 0.7 +Clip: Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 58, y: 322)) + Fill: rgb(255,255,204) +Shape: rgb(153,153,102) Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > Vector(x: 741, y: 251) > Vector(x: 59, y: 251)) +Shape: rgb(153,153,102) Path (Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 741, y: 321) > Vector(x: 741, y: 251)) +Shape: rgb(153,153,102) Path (Vector(x: 742, y: 322) > Vector(x: 58, y: 322) > Vector(x: 59, y: 321) > Vector(x: 741, y: 321)) +Shape: rgb(153,153,102) Path (Vector(x: 58, y: 322) > Vector(x: 58, y: 250) > Vector(x: 59, y: 251) > Vector(x: 59, y: 321)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [361, 278]: no + [378, 278]: positioning +Text: rgb(0,0,0) normal normal 400 12px Arial + [372, 292]: z + [378, 292]: - + [382, 292]: index: + [418, 292]: 8; +Text: rgb(0,0,0) normal normal 700 12px Arial + [380, 264]: DIV + [403, 264]: #5 +Clip: Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 638, y: 362)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 789, y: 11) > Vector(x: 639, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 789, y: 361) > Vector(x: 789, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 790, y: 362) > Vector(x: 638, y: 362) > Vector(x: 639, y: 361) > Vector(x: 789, y: 361)) +Shape: rgb(153,0,0) Path (Vector(x: 638, y: 362) > Vector(x: 638, y: 10) > Vector(x: 639, y: 11) > Vector(x: 639, y: 361)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [664, 38]: position: + [712, 38]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [686, 52]: z + [692, 52]: - + [696, 52]: index: + [732, 52]: 1; +Text: rgb(0,0,0) normal normal 700 12px Arial + [694, 25]: DIV + [717, 25]: #4 +Clip: Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 78, y: 265)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 761, y: 164) > Vector(x: 79, y: 164)) +Shape: rgb(102,153,102) Path (Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 761, y: 264) > Vector(x: 761, y: 164)) +Shape: rgb(102,153,102) Path (Vector(x: 762, y: 265) > Vector(x: 78, y: 265) > Vector(x: 79, y: 264) > Vector(x: 761, y: 264)) +Shape: rgb(102,153,102) Path (Vector(x: 78, y: 265) > Vector(x: 78, y: 163) > Vector(x: 79, y: 164) > Vector(x: 79, y: 264)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [373, 191]: position: + [421, 191]: relative; +Text: rgb(0,0,0) normal normal 400 12px Arial + [392, 205]: z + [398, 205]: - + [402, 205]: index: + [438, 205]: 2; +Text: rgb(0,0,0) normal normal 700 12px Arial + [400, 177]: DIV + [423, 177]: #3 +Clip: Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 58, y: 178)) + Fill: rgb(204,255,204) +Shape: rgb(102,153,102) Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 741, y: 77) > Vector(x: 59, y: 77)) +Shape: rgb(102,153,102) Path (Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 741, y: 177) > Vector(x: 741, y: 77)) +Shape: rgb(102,153,102) Path (Vector(x: 742, y: 178) > Vector(x: 58, y: 178) > Vector(x: 59, y: 177) > Vector(x: 741, y: 177)) +Shape: rgb(102,153,102) Path (Vector(x: 58, y: 178) > Vector(x: 58, y: 76) > Vector(x: 59, y: 77) > Vector(x: 59, y: 177)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [353, 104]: position: + [401, 104]: relative; +Text: rgb(0,0,0) normal normal 400 12px Arial + [372, 118]: z + [378, 118]: - + [382, 118]: index: + [418, 118]: 3; +Text: rgb(0,0,0) normal normal 700 12px Arial + [380, 90]: DIV + [403, 90]: #2 +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 10, y: 362)) + Fill: rgb(255,221,221) +Shape: rgb(153,0,0) Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector(x: 161, y: 11) > Vector(x: 11, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 161, y: 361) > Vector(x: 161, y: 11)) +Shape: rgb(153,0,0) Path (Vector(x: 162, y: 362) > Vector(x: 10, y: 362) > Vector(x: 11, y: 361) > Vector(x: 161, y: 361)) +Shape: rgb(153,0,0) Path (Vector(x: 10, y: 362) > Vector(x: 10, y: 10) > Vector(x: 11, y: 11) > Vector(x: 11, y: 361)) +Text: rgb(0,0,0) normal normal 400 12px Arial + [36, 38]: position: + [84, 38]: absolute; +Text: rgb(0,0,0) normal normal 400 12px Arial + [58, 52]: z + [64, 52]: - + [68, 52]: index: + [104, 52]: 5; +Text: rgb(0,0,0) normal normal 700 12px Arial + [66, 25]: DIV + [89, 25]: #1 \ No newline at end of file diff --git a/tests/sauceconnect.js b/tests/sauceconnect.js deleted file mode 100644 index 900068988..000000000 --- a/tests/sauceconnect.js +++ /dev/null @@ -1,13 +0,0 @@ -const sauceConnectLauncher = require('sauce-connect-launcher'); - -sauceConnectLauncher({ - username: process.env.SAUCE_USERNAME, - accessKey: process.env.SAUCE_ACCESS_KEY, - logger: console.log -}, err => { - if (err) { - console.error(err.message); - return; - } - console.log('Sauce Connect ready'); -}); diff --git a/tests/selenium.js b/tests/selenium.js deleted file mode 100644 index cc4440adb..000000000 --- a/tests/selenium.js +++ /dev/null @@ -1,114 +0,0 @@ -(function(){ - "use strict;"; - var wd = require('wd'), - http = require("http"), - https = require("https"), - url = require("url"), - path = require("path"), - base64_arraybuffer = require('base64-arraybuffer'), - PNG = require('pngjs').PNG, - Promise = require('bluebird'), - _ = require('lodash'), - humanizeDuration = require("humanize-duration"), - fs = require("fs"); - - var utils = require('./utils'); - var colors = utils.colors; - - Promise.promisifyAll(fs); - - var port = 8080; - - function getPixelArray(base64) { - return new Promise(function(resolve, reject) { - const arraybuffer = base64_arraybuffer.decode(base64); - new PNG().parse(arraybuffer, (error, data) => { - if (error) { - reject(error); - } else { - resolve(data.data); - } - }); - }); - } - - function calculateDifference(h2cPixels, screenPixels) { - var len = h2cPixels.length, index = 0, diff = 0; - for (; index < len; index++) { - if (screenPixels[index] - h2cPixels[index] !== 0) { - diff++; - } - } - return (100 - (Math.round((diff/h2cPixels.length) * 10000) / 100)); - } - - function captureScreenshots(browser) { - return function() { - return Promise.props({ - dataUrl: browser.waitForElementByCss(".html2canvas", 15000).then(function(node) { - return browser.execute("return arguments[0].toDataURL('image/png').substring(22)", [node]); - }), - screenshot: browser.takeScreenshot() - }); - }; - } - - function analyzeResults(test) { - return function(result) { - return Promise.all([getPixelArray(result.dataUrl), getPixelArray(result.screenshot)]).spread(calculateDifference).then(function(accuracy) { - return { - testCase: test, - accuracy: accuracy, - dataUrl: result.dataUrl, - screenshot: result.screenshot - }; - }); - }; - } - - function runTestWithRetries(browser, test, retries) { - retries = retries || 0; - return runTest(browser, test) - .timeout(60000) - .catch(Promise.TimeoutError, function() { - if (retries < 3) { - console.log(colors.violet, "Retry", (retries + 1), test); - return runTestWithRetries(browser, test, retries + 1); - } else { - throw new Error("Couldn't run test after 3 retries"); - } - }); - } - - function runTest(browser, test) { - return Promise.resolve(browser - .then(utils.loadTestPage(browser, test, port)) - .then(captureScreenshots(browser)) - .then(analyzeResults(test))); - } - - exports.tests = function(browsers, singleTest) { - var path = "tests/cases"; - return (singleTest ? Promise.resolve([singleTest]) : utils.getTests(path)).then(function(tests) { - return Promise.map(browsers, function(settings) { - var browser = utils.initBrowser(settings); - var name = [settings.browserName, settings.version, settings.platform].join("-"); - var count = 0; - return Promise.using(browser, function() { - return Promise.map(tests, function(test, index, total) { - console.log(colors.green, "STARTING", "(" + (++count) + "/" + total + ")", name, test, colors.clear); - var start = Date.now(); - return runTestWithRetries(browser, test).then(function(result) { - console.log(colors.green, "COMPLETE", humanizeDuration(Date.now() - start), "(" + count + "/" + total + ")", name, result.testCase.substring(path.length), result.accuracy.toFixed(2) + "%", colors.clear); - }); - }, {concurrency: 1}) - .settle() - .catch(function(error) { - console.log(colors.red, "ERROR", name, error.message); - throw error; - }); - }); - }, {concurrency: 3}); - }); - }; -})(); diff --git a/tests/test.js b/tests/test.js index 78ef21c0d..86fc8aaf5 100644 --- a/tests/test.js +++ b/tests/test.js @@ -1,15 +1,30 @@ var h2cSelector, h2cOptions; +var CI = window.location.search.indexOf('selenium') !== -1; +var AUTORUN = window.location.search.indexOf('run=false') === -1; +var REFTEST = window.location.search.indexOf('reftest') !== -1; + (function(document, window) { function appendScript(src) { - document.write(''); + document.write( + '' + ); } - ['/tests/assets/jquery-1.6.2', '/dist/html2canvas'].forEach(appendScript); + (typeof Promise === 'undefined' ? ['/node_modules/promise-polyfill/promise.min'] : []) + .concat([ + '/node_modules/jquery/dist/jquery.min', + '/dist/html2canvas', + '/dist/RefTestRenderer' + ]) + .forEach(appendScript); window.onload = function() { - (function( $ ){ + var targets = REFTEST + ? [new html2canvas.CanvasRenderer(), new RefTestRenderer()] + : new html2canvas.CanvasRenderer(); + (function($) { $.fn.html2canvas = function(options) { - if (options && options.profile && window.console && window.console.profile && window.location.search !== "?selenium2") { + if (options && options.profile && window.console && window.console.profile && !CI) { window.console.profile(); } var date = new Date(), @@ -19,79 +34,100 @@ var h2cSelector, h2cOptions; options = options || {}; var promise = html2canvas(this[0], options); promise['catch'](function(err) { - console.log("html2canvas threw an error", err); + console.log('html2canvas threw an error', err); }); - promise.then(function(canvas) { + promise.then(function(output) { + var canvas = Array.isArray(targets) ? output[0] : output; + if (Array.isArray(targets)) { + console.log(output[1]); + } var $canvas = $(canvas), finishTime = new Date(); if (options && options.profile && window.console && window.console.profileEnd) { window.console.profileEnd(); } - $canvas.addClass("html2canvas") + $canvas + .addClass('html2canvas') .css({ position: 'absolute', left: 0, top: 0 - }).appendTo(document.body); - - if (window.location.search !== "?selenium") { + }) + .appendTo(document.body); + if (!CI) { $canvas.siblings().toggle(); - $(window).click(function(){ + $(window).click(function() { var scrollTop = $(window).scrollTop(); $canvas.toggle().siblings().toggle(); - $(document.documentElement).css('background', $canvas.is(':visible') ? "none" : ""); - $(document.body).css('background', $canvas.is(':visible') ? "none" : ""); - throwMessage("Canvas Render " + ($canvas.is(':visible') ? "visible" : "hidden")); + $(document.documentElement).css( + 'background', + $canvas.is(':visible') ? 'none' : '' + ); + $(document.body).css( + 'background', + $canvas.is(':visible') ? 'none' : '' + ); + throwMessage( + 'Canvas Render ' + ($canvas.is(':visible') ? 'visible' : 'hidden') + ); $(window).scrollTop(scrollTop); }); - $(document.documentElement).css('background', $canvas.is(':visible') ? "none" : ""); - $(document.body).css('background', $canvas.is(':visible') ? "none" : ""); - throwMessage('Screenshot created in '+ ((finishTime.getTime()-timer)) + " ms
      ",4000); + $(document.documentElement).css( + 'background', + $canvas.is(':visible') ? 'none' : '' + ); + $(document.body).css('background', $canvas.is(':visible') ? 'none' : ''); + throwMessage( + 'Screenshot created in ' + (finishTime.getTime() - timer) + ' ms
      ', + 4000 + ); } else { $canvas.css('display', 'none'); } // test if canvas is read-able try { $canvas[0].toDataURL(); - } catch(e) { - if ($canvas[0].nodeName.toLowerCase() === "canvas") { + } catch (e) { + if ($canvas[0].nodeName.toLowerCase() === 'canvas') { // TODO, maybe add a bit less offensive way to present this, but still something that can easily be noticed - window.alert("Canvas is tainted, unable to read data"); + window.alert('Canvas is tainted, unable to read data'); } } }); - function throwMessage(msg,duration){ + function throwMessage(msg, duration) { window.clearTimeout(timeoutTimer); - timeoutTimer = window.setTimeout(function(){ - $message.fadeOut(function(){ + timeoutTimer = window.setTimeout(function() { + $message.fadeOut(function() { $message.remove(); $message = null; }); - },duration || 2000); - if ($message) - $message.remove(); - $message = $('
      ').html(msg).css({ - margin:0, - padding:10, - background: "#000", - opacity:0.7, - position:"fixed", - top:10, - right:10, - fontFamily: 'Tahoma', - color:'#fff', - fontSize:12, - borderRadius:12, - width:'auto', - height:'auto', - textAlign:'center', - textDecoration:'none', - display:'none' - }).appendTo(document.body).fadeIn(); - console.log(msg); + }, duration || 2000); + if ($message) $message.remove(); + $message = $('
      ') + .html(msg) + .css({ + margin: 0, + padding: 10, + background: '#000', + opacity: 0.7, + position: 'fixed', + top: 10, + right: 10, + fontFamily: 'Tahoma', + color: '#fff', + fontSize: 12, + borderRadius: 12, + width: 'auto', + height: 'auto', + textAlign: 'center', + textDecoration: 'none', + display: 'none' + }) + .appendTo(document.body) + .fadeIn(); } }; })(jQuery); @@ -103,17 +139,24 @@ var h2cSelector, h2cOptions; } window.run = function() { - $(h2cSelector).html2canvas($.extend({ - logging: true, - profile: true, - proxy: "http://localhost:8082", - useCORS: false, - removeContainer: false - }, h2cOptions)); + $(h2cSelector).html2canvas( + $.extend( + { + logging: true, + profile: true, + proxy: 'http://localhost:8082', + useCORS: false, + removeContainer: false, + target: targets + }, + h2cOptions, + REFTEST ? {windowWidth: 800, windowHeight: 600} : {} + ) + ); }; - if (typeof(dontRun) === "undefined") { + if (typeof dontRun === 'undefined' && AUTORUN) { setTimeout(window.run, 100); } }; -}(document, window)); +})(document, window); diff --git a/tests/testrunner.html b/tests/testrunner.html new file mode 100644 index 000000000..1d9a12bc3 --- /dev/null +++ b/tests/testrunner.html @@ -0,0 +1,19 @@ + + + + + + Test runner + + +
      + + + + + + diff --git a/tests/testrunner.js b/tests/testrunner.js new file mode 100644 index 000000000..3fb82bfa6 --- /dev/null +++ b/tests/testrunner.js @@ -0,0 +1,287 @@ +import {expect} from 'chai'; +import parseRefTest from '../scripts/parse-reftest'; +import reftests from './reftests'; + +const DOWNLOAD_REFTESTS = true; + +const downloadResult = (filename, data) => { + const downloadUrl = URL.createObjectURL(new Blob([data], {type: 'text/plain'})); + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = filename; + + setTimeout(() => { + a.click(); + URL.revokeObjectURL(downloadUrl); + document.body.removeChild(a); + }, 100); + + document.body.appendChild(a); +}; + +const assertPath = (result, expected, desc) => { + expect(result.length).to.equal(expected.length, `${desc} path length`); + + expected.forEach((e, i) => { + const r = result[i]; + expect(r.type).to.equal(e.type, `${desc} type`); + if (Array.isArray(r)) { + assertPath(r, e, desc); + } else { + switch (r.type) { + case 'Circle': + expect(r.x).to.be.closeTo(e.x, 10, `${desc} Circle #${i + 1} x`); + expect(r.y).to.be.closeTo(e.y, 10, `${desc} Circle #${i + 1} y`); + expect(r.r).to.equal(e.r, `${desc} Circle #${i + 1} r`); + break; + case 'Vector': + expect(r.x).to.be.closeTo(e.x, 10, `${desc} vector #${i + 1} x`); + expect(r.y).to.be.closeTo(e.y, 10, `${desc} vector #${i + 1} y`); + break; + case 'BezierCurve': + expect(r.x0).to.be.closeTo(e.x0, 10, `${desc} beziercurve #${i + 1} x0`); + expect(r.y0).to.be.closeTo(e.y0, 10, `${desc} beziercurve #${i + 1} y0`); + expect(r.x1).to.be.closeTo(e.x1, 10, `${desc} beziercurve #${i + 1} x1`); + expect(r.y1).to.be.closeTo(e.y1, 10, `${desc} beziercurve #${i + 1} y1`); + expect(r.cx0).to.be.closeTo(e.cx0, 10, `${desc} beziercurve #${i + 1} cx0`); + expect(r.cy0).to.be.closeTo(e.cy0, 10, `${desc} beziercurve #${i + 1} cy0`); + expect(r.cx1).to.be.closeTo(e.cx1, 10, `${desc} beziercurve #${i + 1} cx1`); + expect(r.cy1).to.be.closeTo(e.cy1, 10, `${desc} beziercurve #${i + 1} cy1`); + break; + default: + throw new Error(`Unknown path type ${r.type}`); + } + } + }); +}; + +(() => { + const testRunnerUrl = location.href; + const hasHistoryApi = + typeof window.history !== 'undefined' && typeof window.history.replaceState !== 'undefined'; + + if (typeof reftests === 'undefined') { + it('Test harness prerequisite check', () => { + throw new Error( + 'No reftests list defined, run "npm run create-reftest-list" to create it' + ); + }); + } else { + Object.keys(reftests).forEach(url => { + describe(url, function() { + this.timeout(30000); + var windowWidth = 800; + var windowHeight = 600; + var testContainer = document.createElement('iframe'); + var REFTEST = reftests[url]; + testContainer.width = windowWidth; + testContainer.height = windowHeight; + testContainer.style.visibility = 'hidden'; + testContainer.style.position = 'fixed'; + testContainer.style.left = '10000px'; + + before(done => { + testContainer.onload = () => done(); + + testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); + if (hasHistoryApi) { + // Chrome does not resolve relative background urls correctly inside of a nested iframe + history.replaceState(null, '', url); + } + + document.body.appendChild(testContainer); + }); + after(() => { + if (hasHistoryApi) { + history.replaceState(null, '', testRunnerUrl); + } + document.body.removeChild(testContainer); + }); + it('Should render untainted canvas', () => { + return testContainer.contentWindow + .html2canvas(testContainer.contentWindow.document.documentElement, { + removeContainer: true, + target: [ + new testContainer.contentWindow.html2canvas.CanvasRenderer(), + new testContainer.contentWindow.RefTestRenderer() + ] + }) + .then(([canvas, result]) => { + try { + canvas + .getContext('2d') + .getImageData(0, 0, canvas.width, canvas.height); + } catch (e) { + return Promise.reject('Canvas is tainted'); + } + + const delta = 10; + + if (REFTEST) { + const RESULTS = parseRefTest(result); + REFTEST.forEach(({action, line, ...args}, i) => { + const RESULT = RESULTS[i]; + expect(RESULT.action).to.equal(action, `Line ${line}`); + + const desc = `Line ${line} ${action}`; + + switch (action) { + case 'Window': + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.be.closeTo( + args.height, + delta, + `${desc} height` + ); + break; + + case 'Rectangle': + expect(RESULT.x).to.equal(args.x, `${desc} x`); + expect(RESULT.y).to.equal(args.y, `${desc} y`); + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.be.closeTo( + args.height, + delta, + `${desc} height` + ); + break; + + case 'Fill': + expect(RESULT.color).to.equal( + args.color, + `${desc} color` + ); + break; + + case 'Opacity': + expect(RESULT.opacity).to.equal( + args.opacity, + `${desc} opacity` + ); + break; + + case 'Text': + expect(RESULT.font).to.equal(args.font, `${desc} font`); + break; + + case 'T': + expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); + expect(RESULT.text).to.equal(args.text, `${desc} text`); + break; + + case 'Transform': + expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.matrix).to.equal( + args.matrix, + `${desc} matrix` + ); + break; + + case 'Repeat': + expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.equal( + args.height, + `${desc} height` + ); + expect(RESULT.imageSrc).to.equal( + args.imageSrc, + `${desc} imageSrc` + ); + assertPath(RESULT.path, args.path, desc); + break; + + case 'Gradient': + expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.x0).to.be.closeTo( + args.x0, + 5, + `${desc} x0` + ); + expect(RESULT.y0).to.be.closeTo( + args.y0, + 5, + `${desc} y0` + ); + expect(RESULT.x1).to.be.closeTo( + args.x1, + 5, + `${desc} x1` + ); + expect(RESULT.y1).to.be.closeTo( + args.y1, + 5, + `${desc} y1` + ); + expect(RESULT.stops).to.equal( + args.stops, + `${desc} stops` + ); + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.equal( + args.height, + `${desc} height` + ); + + break; + + case 'Draw image': + expect(RESULT.imageSrc).to.equal( + args.imageSrc, + `${desc} stops` + ); + expect(RESULT.sx).to.equal(args.sx, `${desc} sx`); + expect(RESULT.sy).to.equal(args.sy, `${desc} sy`); + expect(RESULT.dx).to.equal(args.dx, `${desc} dx`); + expect(RESULT.dy).to.equal(args.dy, `${desc} dy`); + expect(RESULT.sw).to.equal(args.sw, `${desc} sw`); + expect(RESULT.sh).to.equal(args.sh, `${desc} sh`); + expect(RESULT.dw).to.equal(args.dw, `${desc} dw`); + expect(RESULT.dh).to.equal(args.dh, `${desc} dh`); + break; + + case 'Clip': + assertPath(RESULT.path, args.path, desc); + break; + + case 'Shape': + expect(RESULT.color).to.equal( + args.color, + `${desc} color` + ); + assertPath(RESULT.path, args.path, desc); + break; + + default: + console.log(RESULT); + throw new Error(`Unrecognized action ${action}`); + } + }); + } else if (DOWNLOAD_REFTESTS) { + downloadResult( + url.slice(url.lastIndexOf('/') + 1).replace(/\.html$/i, '.txt'), + result + ); + } + }); + }); + }); + }); + } +})(); diff --git a/tests/utils.js b/tests/utils.js deleted file mode 100644 index db1e3e5a6..000000000 --- a/tests/utils.js +++ /dev/null @@ -1,66 +0,0 @@ -var fs = require('fs'); -var wd = require('wd'); -var path = require('path'); -var Promise = require('bluebird'); -var _ = require('lodash'); - -Promise.promisifyAll(fs); - -var colors = { - red: "\x1b[1;31m", - blue: "\x1b[1;36m", - violet: "\x1b[0;35m", - green: "\x1b[0;32m", - clear: "\x1b[0m" -}; - -function isHtmlFile(filename) { - return path.extname(filename) === '.html'; -} - -function getTests(path) { - return fs.readdirAsync(path).map(function(name) { - var filename = path + "/" + name; - return fs.statAsync(filename).then(function(stat) { - return stat.isDirectory() ? getTests(filename) : filename; - }); - }).then(function(t) { - return _.flatten(t).filter(isHtmlFile); - }); -} - -function initBrowser(settings) { - var browser = wd.remote({ - hostname: 'localhost', - port: 4445, - user: process.env.SAUCE_USERNAME, - pwd: process.env.SAUCE_ACCESS_KEY - }, 'promiseChain'); - - if (process.env.TRAVIS_JOB_NUMBER) { - settings["tunnel-identifier"] = process.env.TRAVIS_JOB_NUMBER; - settings["name"] = process.env.TRAVIS_COMMIT.substring(0, 10); - settings["build"] = process.env.TRAVIS_BUILD_NUMBER; - } else { - settings["name"] = "Manual run"; - } - - return browser.resolve(Promise).init(settings).then(function(b) { - return Promise.resolve(b).disposer(function() { - return browser.quit(); - }); - }); -} - -function loadTestPage(browser, test, port) { - return function(settings) { - return browser.get("http://localhost:" + port + "/" + test + "?selenium").then(function() { - return settings; - }); - }; -} - -module.exports.colors = colors; -module.exports.getTests = getTests; -module.exports.initBrowser = initBrowser; -module.exports.loadTestPage = loadTestPage; diff --git a/webpack.config.js b/webpack.config.js index 6012d98cb..6bac38125 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -45,5 +45,15 @@ module.exports = [ }, module: modules, plugins + }, + { + entry: './tests/testrunner.js', + output: { + filename: './build/testrunner.js', + library: 'testrunner', + libraryTarget: 'umd' + }, + module: modules, + plugins } ]; From ed92d2354cf31034c4ec42518e5ecabe82634a3b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 9 Aug 2017 11:10:40 +0800 Subject: [PATCH 047/377] Fix build --- package.json | 2 +- scripts/parse-reftest.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index e7898e099..4aff99824 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "webpack": "3.4.1" }, "scripts": { - "build": "rimraf dist/ && npm run build:npm && npm run build:browser", + "build": "rimraf dist/ && node scripts/create-reftest-list && npm run build:npm && npm run build:browser", "build:npm": "babel src/ -d dist/npm/", "build:browser": "webpack", "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", diff --git a/scripts/parse-reftest.js b/scripts/parse-reftest.js index e1a3d3f11..9f0a50380 100644 --- a/scripts/parse-reftest.js +++ b/scripts/parse-reftest.js @@ -1,5 +1,5 @@ -const ACTION = /^\s*(\w+ ?\w*):\s+(.+)$/; -const TEXT = /^\s*\[(-?\d+), (-?\d+)\]:\s+(.+)$/; +const ACTION = /^\s*(\w+ ?\w*):\s+(.+)/; +const TEXT = /^\s*\[(-?\d+), (-?\d+)\]:\s+(.+)/; const WINDOW_SIZE = /^\[(-?\d+), (-?\d+)\]$/; const RECTANGLE = /^\[(-?\d+), (-?\d+), (-?\d+), (-?\d+)\]\s+(.+)$/; const REPEAT = /^Image\s+\("(.+)"\)\s+\[(-?\d+), (-?\d+)\]\s+Size\s+\((-?\d+), (-?\d+)\)\s+(.+)$/; From 77393074ba18be56d38b9ae8153d2998de0f3f4b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 9 Aug 2017 11:52:42 +0800 Subject: [PATCH 048/377] Use tree order when z-index is the same --- src/NodeContainer.js | 4 +- src/NodeParser.js | 15 ++- src/Renderer.js | 3 +- tests/reftests/border/radius.txt | 4 +- tests/reftests/text/fontawesome.html | 5 + tests/reftests/text/fontawesome.txt | 142 ++++++++++---------- tests/reftests/text/shadow.html | 5 +- tests/reftests/text/shadow.txt | 166 ++++++++++++------------ tests/reftests/transform/nested.html | 5 +- tests/reftests/transform/nested.txt | 70 +++++----- tests/reftests/transform/rotate.html | 6 +- tests/reftests/transform/translate.html | 5 +- tests/reftests/transform/translate.txt | 60 ++++----- tests/reftests/visibility.html | 5 +- tests/reftests/visibility.txt | 36 ++--- tests/reftests/zindex/z-index13.html | 3 + tests/reftests/zindex/z-index13.txt | 2 +- tests/reftests/zindex/z-index14.html | 1 + tests/reftests/zindex/z-index14.txt | 4 +- tests/reftests/zindex/z-index15.html | 3 + tests/reftests/zindex/z-index15.txt | 4 +- tests/reftests/zindex/z-index16.html | 3 + tests/reftests/zindex/z-index16.txt | 46 +++---- tests/reftests/zindex/z-index17.html | 3 + tests/reftests/zindex/z-index17.txt | 10 +- tests/reftests/zindex/z-index18.html | 3 + tests/reftests/zindex/z-index18.txt | 24 ++-- tests/reftests/zindex/z-index3.txt | 32 ++--- tests/reftests/zindex/z-index4.html | 6 +- tests/reftests/zindex/z-index4.txt | 8 +- tests/reftests/zindex/z-index5.html | 3 + tests/reftests/zindex/z-index5.txt | 8 +- tests/reftests/zindex/z-index6.html | 3 + tests/reftests/zindex/z-index6.txt | 16 +-- tests/test.js | 4 +- tests/testrunner.js | 12 +- 36 files changed, 392 insertions(+), 337 deletions(-) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index c8cad460f..940891349 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -80,9 +80,11 @@ export default class NodeContainer { bounds: Bounds; curvedBounds: BoundCurves; image: ?string; + index: number; - constructor(node: HTMLElement, parent: ?NodeContainer, imageLoader: ImageLoader) { + constructor(node: HTMLElement, parent: ?NodeContainer, imageLoader: ImageLoader, index: number) { this.parent = parent; + this.index = index; this.childNodes = []; const defaultView = node.ownerDocument.defaultView; const style = defaultView.getComputedStyle(node, null); diff --git a/src/NodeParser.js b/src/NodeParser.js index 97ae91450..167d17b92 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -17,11 +17,13 @@ export const NodeParser = ( logger.log(`Starting node parsing`); } - const container = new NodeContainer(node, null, imageLoader); + let index = 0; + + const container = new NodeContainer(node, null, imageLoader, index++); const stack = new StackingContext(container, null, true); createPseudoHideStyles(node.ownerDocument); - parseNodeTree(node, container, stack, imageLoader); + parseNodeTree(node, container, stack, imageLoader, index); if (__DEV__) { logger.log(`Finished parsing node tree`); @@ -41,7 +43,8 @@ const parseNodeTree = ( node: HTMLElement, parent: NodeContainer, stack: StackingContext, - imageLoader: ImageLoader + imageLoader: ImageLoader, + index: number ): void => { for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; @@ -57,7 +60,7 @@ const parseNodeTree = ( if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { inlinePseudoElement(childNode, PSEUDO_BEFORE); inlinePseudoElement(childNode, PSEUDO_AFTER); - const container = new NodeContainer(childNode, parent, imageLoader); + const container = new NodeContainer(childNode, parent, imageLoader, index++); if (container.isVisible()) { if (childNode.tagName === 'INPUT') { // $FlowFixMe @@ -89,12 +92,12 @@ const parseNodeTree = ( ); parentStack.contexts.push(childStack); if (SHOULD_TRAVERSE_CHILDREN) { - parseNodeTree(childNode, container, childStack, imageLoader); + parseNodeTree(childNode, container, childStack, imageLoader, index); } } else { stack.children.push(container); if (SHOULD_TRAVERSE_CHILDREN) { - parseNodeTree(childNode, container, stack, imageLoader); + parseNodeTree(childNode, container, stack, imageLoader, index); } } } diff --git a/src/Renderer.js b/src/Renderer.js index 2b277a2ea..112134141 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -395,5 +395,6 @@ const sortByZIndex = (a: StackingContext, b: StackingContext): number => { } else if (a.container.style.zIndex.order < b.container.style.zIndex.order) { return -1; } - return 0; + + return a.container.index > b.container.index ? 1 : -1; }; diff --git a/tests/reftests/border/radius.txt b/tests/reftests/border/radius.txt index 1c06e17d3..b134366d0 100644 --- a/tests/reftests/border/radius.txt +++ b/tests/reftests/border/radius.txt @@ -30,7 +30,7 @@ Shape: rgb(0,128,0) Path (BezierCurve(x0: 401, y0: 635, x1: 408, y1: 653, cx0: 4 Shape: rgb(0,0,0) Path (BezierCurve(x0: 401, y0: 881, x1: 383, y1: 888, cx0: 396, cy0: 885, cx1: 390, cy1: 888) > BezierCurve(x0: 133, y0: 888, x1: 115, y1: 881, cx0: 126, cy0: 888, cx1: 120, cy1: 885) > BezierCurve(x0: 158, y0: 845, x1: 158, y1: 838, cx0: 158, cy0: 841, cx1: 158, cy1: 838) > BezierCurve(x0: 358, y0: 838, x1: 358, y1: 845, cx0: 358, cy0: 838, cx1: 358, cy1: 841)) Clip: Path (BezierCurve(x0: 522, y0: 738, x1: 623, y1: 637, cx0: 522, cy0: 682, cx1: 567, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 724, y1: 738, cx0: 679, cy0: 637, cx1: 724, cy1: 682) > BezierCurve(x0: 724, y0: 738, x1: 623, y1: 839, cx0: 724, cy0: 794, cx1: 679, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 522, y1: 738, cx0: 567, cy0: 839, cx1: 522, cy1: 794)) Fill: rgb(111,66,140) -Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 666, x1: 623, y1: 637, cx0: 570, cy0: 648, cx1: 595, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 695, y1: 666, cx0: 651, cy0: 637, cx1: 676, cy1: 648) > BezierCurve(x0: 694, y0: 667, x1: 623, y1: 638, cx0: 676, cy0: 649, cx1: 651, cy1: 638) > BezierCurve(x0: 623, y0: 638, x1: 552, y1: 667, cx0: 596, cy0: 638, cx1: 570, cy1: 649)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 666, x1: 623, y1: 637, cx0: 570, cy0: 648, cx1: 595, cy1: 637) > BezierCurve(x0: 623, y0: 637, x1: 695, y1: 666, cx0: 651, cy0: 637, cx1: 676, cy1: 648) > BezierCurve(x0: 694, y0: 667, x1: 623, y1: 638, cx0: 676, cy0: 649, cx1: 651, cy1: 638) > BezierCurve(x0: 623, y0: 638, x1: 552, y1: 667, cx0: 596, cy0: 638, cx1: 571, cy1: 649)) Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 666, x1: 724, y1: 738, cx0: 713, cy0: 685, cx1: 724, cy1: 710) > BezierCurve(x0: 724, y0: 738, x1: 695, y1: 810, cx0: 724, cy0: 766, cx1: 713, cy1: 791) > BezierCurve(x0: 694, y0: 809, x1: 723, y1: 738, cx0: 712, cy0: 791, cx1: 723, cy1: 766) > BezierCurve(x0: 723, y0: 738, x1: 694, y1: 667, cx0: 723, cy0: 710, cx1: 712, cy1: 685)) -Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 810, x1: 623, y1: 839, cx0: 676, cy0: 828, cx1: 651, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 552, y1: 810, cx0: 595, cy0: 839, cx1: 570, cy1: 828) > BezierCurve(x0: 552, y0: 809, x1: 623, y1: 838, cx0: 570, cy0: 827, cx1: 596, cy1: 838) > BezierCurve(x0: 623, y0: 838, x1: 694, y1: 809, cx0: 651, cy0: 838, cx1: 676, cy1: 827)) +Shape: rgb(0,0,0) Path (BezierCurve(x0: 695, y0: 810, x1: 623, y1: 839, cx0: 676, cy0: 828, cx1: 651, cy1: 839) > BezierCurve(x0: 623, y0: 839, x1: 552, y1: 810, cx0: 595, cy0: 839, cx1: 570, cy1: 828) > BezierCurve(x0: 552, y0: 809, x1: 623, y1: 838, cx0: 571, cy0: 827, cx1: 596, cy1: 838) > BezierCurve(x0: 623, y0: 838, x1: 694, y1: 809, cx0: 651, cy0: 838, cx1: 676, cy1: 827)) Shape: rgb(0,0,0) Path (BezierCurve(x0: 552, y0: 810, x1: 522, y1: 738, cx0: 533, cy0: 791, cx1: 522, cy1: 766) > BezierCurve(x0: 522, y0: 738, x1: 552, y1: 666, cx0: 522, cy0: 710, cx1: 533, cy1: 685) > BezierCurve(x0: 552, y0: 667, x1: 523, y1: 738, cx0: 534, cy0: 685, cx1: 523, cy1: 710) > BezierCurve(x0: 523, y0: 738, x1: 552, y1: 809, cx0: 523, cy0: 766, cx1: 534, cy1: 791)) \ No newline at end of file diff --git a/tests/reftests/text/fontawesome.html b/tests/reftests/text/fontawesome.html index 081ab2647..c5f0aede0 100644 --- a/tests/reftests/text/fontawesome.html +++ b/tests/reftests/text/fontawesome.html @@ -5,6 +5,11 @@ fontawesome icons +
      diff --git a/tests/reftests/text/fontawesome.txt b/tests/reftests/text/fontawesome.txt index 513ab4365..c89d63e8a 100644 --- a/tests/reftests/text/fontawesome.txt +++ b/tests/reftests/text/fontawesome.txt @@ -1,88 +1,88 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 8]: Fontawesome - [101, 8]: icons -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [92, 98]: fa - [104, 98]: - - [110, 98]: 5x -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 35) > Vector(x: 792, y: 35) > Vector(x: 791, y: 36) > Vector(x: 9, y: 36)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 35) > Vector(x: 792, y: 37) > Vector(x: 791, y: 36) > Vector(x: 791, y: 36)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 37) > Vector(x: 8, y: 37) > Vector(x: 9, y: 36) > Vector(x: 791, y: 36)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 37) > Vector(x: 8, y: 35) > Vector(x: 9, y: 36) > Vector(x: 9, y: 36)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [55, 242]: fa - [67, 242]: - - [72, 242]: twitter - [118, 242]: on - [138, 242]: fa - [151, 242]: - - [156, 242]: square - [198, 242]: - - [203, 242]: o -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [55, 285]: fa - [67, 285]: - - [72, 285]: flag - [101, 285]: on - [121, 285]: fa - [134, 285]: - - [139, 285]: circle -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [55, 328]: fa - [67, 328]: - - [72, 328]: terminal - [130, 328]: on - [150, 328]: fa - [162, 328]: - - [168, 328]: square -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [55, 371]: fa - [67, 371]: - - [72, 371]: ban - [100, 371]: on - [120, 371]: fa - [132, 371]: - - [137, 371]: camera + [113, 8]: icons +Text: rgb(0,0,0) normal normal 400 16px Arial + [92, 97]: fa + [106, 97]: - + [111, 97]: 5x +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 34) > Vector(x: 792, y: 34) > Vector(x: 791, y: 35) > Vector(x: 9, y: 35)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 34) > Vector(x: 792, y: 36) > Vector(x: 791, y: 35) > Vector(x: 791, y: 35)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 36) > Vector(x: 8, y: 36) > Vector(x: 9, y: 35) > Vector(x: 791, y: 35)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 36) > Vector(x: 8, y: 34) > Vector(x: 9, y: 35) > Vector(x: 9, y: 35)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [55, 239]: fa + [68, 239]: - + [74, 239]: twitter + [121, 239]: on + [143, 239]: fa + [156, 239]: - + [162, 239]: square + [211, 239]: - + [216, 239]: o +Text: rgb(0,0,0) normal normal 400 16px Arial + [55, 282]: fa + [68, 282]: - + [74, 282]: flag + [104, 282]: on + [126, 282]: fa + [140, 282]: - + [145, 282]: circle +Text: rgb(0,0,0) normal normal 400 16px Arial + [55, 325]: fa + [68, 325]: - + [74, 325]: terminal + [135, 325]: on + [157, 325]: fa + [171, 325]: - + [176, 325]: square +Text: rgb(0,0,0) normal normal 400 16px Arial + [55, 368]: fa + [68, 368]: - + [74, 368]: ban + [105, 368]: on + [127, 368]: fa + [140, 368]: - + [146, 368]: camera Text: rgb(0,0,0) normal normal 400 80px FontAwesome - [8, 44]:  -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [42, 141]: List - [71, 141]: icons + [8, 43]:  +Text: rgb(0,0,0) normal normal 400 16px Arial + [42, 140]: List + [71, 140]: icons Text: rgb(0,0,0) normal normal 400 16px FontAwesome - [18, 143]:  -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [42, 160]: can - [69, 160]: be - [87, 160]: used + [18, 142]:  +Text: rgb(0,0,0) normal normal 400 16px Arial + [42, 158]: can + [73, 158]: be + [95, 158]: used Text: rgb(0,0,0) normal normal 400 16px FontAwesome - [18, 162]:  -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [42, 179]: as - [59, 179]: bullets -Transform: (24, 186) [0.99, 0.16, -0.16, 0.99, 0, 0] + [18, 160]:  +Text: rgb(0,0,0) normal normal 400 16px Arial + [42, 176]: as + [63, 176]: bullets +Transform: (24, 182) [0.97, 0.26, -0.26, 0.97, 0, 0] Text: rgb(0,0,0) normal normal 400 16px FontAwesome - [17, 180]:  -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [42, 198]: in - [59, 198]: lists + [16, 177]:  +Text: rgb(0,0,0) normal normal 400 16px Arial + [42, 194]: in + [59, 194]: lists Text: rgb(0,0,0) normal normal 400 16px FontAwesome - [18, 199]:  + [18, 196]:  Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome - [13, 232]:  + [13, 228]:  Text: rgb(0,0,0) normal normal 400 21.3333px FontAwesome - [19, 242]:  + [19, 238]:  Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome - [11, 274]:  + [11, 270]:  Text: rgb(255,255,255) normal normal 400 21.3333px FontAwesome - [19, 285]:  + [19, 281]:  Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome - [11, 317]:  + [11, 313]:  Text: rgb(255,255,255) normal normal 400 21.3333px FontAwesome - [19, 328]:  + [19, 324]:  Text: rgb(0,0,0) normal normal 400 21.3333px FontAwesome - [18, 370]:  + [18, 366]:  Text: rgb(0,0,0) normal normal 400 42.6667px FontAwesome - [11, 360]:  \ No newline at end of file + [11, 356]:  \ No newline at end of file diff --git a/tests/reftests/text/shadow.html b/tests/reftests/text/shadow.html index 9dd72a057..f4e43a483 100644 --- a/tests/reftests/text/shadow.html +++ b/tests/reftests/text/shadow.html @@ -35,8 +35,11 @@ .red-text-shadow { text-shadow: 0 -2px; } - + body { + font-family: Arial; + } +
      diff --git a/tests/reftests/text/shadow.txt b/tests/reftests/text/shadow.txt index 6aeef47dc..b20da7932 100644 --- a/tests/reftests/text/shadow.txt +++ b/tests/reftests/text/shadow.txt @@ -1,88 +1,88 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 8]: Some - [48, 8]: text -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [271, 8]: followed - [332, 8]: by - [352, 8]: more - [388, 8]: text - [416, 8]: without - [469, 8]: shadow. -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [653, 8]: and - [680, 8]: some - [718, 8]: more - [754, 8]: text - [8, 27]: without - [61, 27]: shadow + [54, 8]: text +Text: rgb(0,0,0) normal normal 400 16px Arial + [292, 8]: followed + [355, 8]: by + [376, 8]: more + [417, 8]: text + [447, 8]: without + [502, 8]: shadow. +Text: rgb(0,0,0) normal normal 400 16px Arial + [704, 8]: and + [736, 8]: some + [8, 26]: more + [49, 26]: text + [79, 26]: without + [134, 26]: shadow Text: rgb(255,255,255) normal normal 400 24px Georgia Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 24px) - [8, 180]: Sed - [53, 180]: ut - [80, 180]: perspiciatis - [208, 180]: unde - [268, 180]: omnis - [339, 180]: iste - [382, 180]: natus - [446, 180]: error - [506, 180]: sit - [538, 180]: voluptatem - [8, 207]: accusantium - [148, 207]: doloremque - [282, 207]: laudantium, - [418, 207]: totam - [486, 207]: rem - [534, 207]: aperiam, - [634, 207]: eaque - [702, 207]: ipsa - [8, 234]: quae - [65, 234]: ab - [96, 234]: illo - [136, 234]: inventore. -Text: rgb(0,0,0) normal normal 400 16px Times New Roman Shadows: (rgb(0,0,0) 0px -2px 0px) - [8, 286]: Sed - [36, 286]: ut - [52, 286]: perspiciatis - [129, 286]: unde - [164, 286]: omnis - [208, 286]: iste - [234, 286]: natus - [272, 286]: error - [307, 286]: sit - [326, 286]: voluptatem - [402, 286]: accusantium - [486, 286]: doloremque - [566, 286]: laudantium, - [646, 286]: totam - [686, 286]: rem - [715, 286]: aperiam, - [8, 305]: eaque - [49, 305]: ipsa - [79, 305]: quae - [113, 305]: ab - [132, 305]: illo - [158, 305]: inventore. -Text: rgb(0,0,0) normal normal 400 16px Times New Roman Shadows: (rgb(136,136,136) 1px 1px 3px) - [76, 8]: followed - [137, 8]: by - [157, 8]: text - [185, 8]: with - [218, 8]: shadow -Text: rgb(0,0,0) normal normal 700 16px Times New Roman Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 16px) - [525, 8]: Multi - [567, 8]: text - [597, 8]: shadow -Text: rgba(0,0,0,0) normal normal 400 48px Times New Roman Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) - [8, 46]: testing - [148, 46]: with - [245, 46]: transparent -Text: rgba(0,255,0,0.5) normal normal 700 48px Times New Roman Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) solid rgba(0,255,0,0.5) underline - [470, 46]: testing - [606, 46]: - [618, 46]: with - [709, 46]: - [8, 102]: low - [80, 102]: - [92, 102]: opacity \ No newline at end of file + [8, 178]: Sed + [53, 178]: ut + [80, 178]: perspiciatis + [208, 178]: unde + [268, 178]: omnis + [339, 178]: iste + [382, 178]: natus + [446, 178]: error + [506, 178]: sit + [538, 178]: voluptatem + [8, 206]: accusantium + [148, 206]: doloremque + [282, 206]: laudantium, + [418, 206]: totam + [486, 206]: rem + [534, 206]: aperiam, + [634, 206]: eaque + [702, 206]: ipsa + [8, 233]: quae + [65, 233]: ab + [96, 233]: illo + [136, 233]: inventore. +Text: rgb(0,0,0) normal normal 400 16px Arial Shadows: (rgb(0,0,0) 0px -2px 0px) + [8, 284]: Sed + [41, 284]: ut + [59, 284]: perspiciatis + [143, 284]: unde + [183, 284]: omnis + [230, 284]: iste + [260, 284]: natus + [303, 284]: error + [342, 284]: sit + [362, 284]: voluptatem + [445, 284]: accusantium + [539, 284]: doloremque + [628, 284]: laudantium, + [715, 284]: totam + [760, 284]: rem + [8, 302]: aperiam, + [75, 302]: eaque + [124, 302]: ipsa + [158, 302]: quae + [198, 302]: ab + [220, 302]: illo + [244, 302]: inventore. +Text: rgb(0,0,0) normal normal 400 16px Arial Shadows: (rgb(136,136,136) 1px 1px 3px) + [84, 8]: followed + [148, 8]: by + [169, 8]: text + [199, 8]: with + [232, 8]: shadow +Text: rgb(0,0,0) normal normal 700 16px Arial Shadows: (rgb(0,0,0) 1px 1px 2px, rgb(0,0,255) 0px 0px 16px) + [566, 8]: Multi + [607, 8]: text + [640, 8]: shadow +Text: rgba(0,0,0,0) normal normal 400 48px Arial Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) + [8, 45]: testing + [163, 45]: with + [262, 45]: transparent +Text: rgba(0,255,0,0.5) normal normal 700 48px Arial Shadows: (rgb(0,0,255) 0px 0px 5px, rgb(255,0,0) 2px 2px 0px) solid rgba(0,255,0,0.5) underline + [518, 45]: testing + [675, 45]: + [688, 45]: with + [784, 45]: + [8, 100]: low + [88, 100]: + [101, 100]: opacity \ No newline at end of file diff --git a/tests/reftests/transform/nested.html b/tests/reftests/transform/nested.html index b523ad7c0..8c88d54da 100644 --- a/tests/reftests/transform/nested.html +++ b/tests/reftests/transform/nested.html @@ -35,8 +35,11 @@ display: inline-block; } - + body { + font-family: Arial; + } +
      First level content
      with second level content
      and third level content
      , ending second
      , ending first
      diff --git a/tests/reftests/transform/nested.txt b/tests/reftests/transform/nested.txt index 0aca0f48f..8e3933052 100644 --- a/tests/reftests/transform/nested.txt +++ b/tests/reftests/transform/nested.txt @@ -1,42 +1,42 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Clip: Path (Vector(x: 8, y: 108) > Vector(x: 649, y: 108) > Vector(x: 649, y: 157) > Vector(x: 8, y: 157)) +Clip: Path (Vector(x: 8, y: 108) > Vector(x: 708, y: 108) > Vector(x: 708, y: 156) > Vector(x: 8, y: 156)) Fill: rgb(205,92,92) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [8, 124]: First - [41, 124]: level - [76, 124]: content -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [568, 124]: , - [576, 124]: ending - [624, 124]: first -Clip: Path (Vector(x: 653, y: 123) > Vector(x: 749, y: 123) > Vector(x: 749, y: 142) > Vector(x: 653, y: 142)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 123]: First + [44, 123]: level + [81, 123]: content +Text: rgb(0,0,0) normal normal 400 16px Arial + [620, 123]: , + [630, 123]: ending + [682, 123]: first +Clip: Path (Vector(x: 8, y: 156) > Vector(x: 116, y: 156) > Vector(x: 116, y: 174) > Vector(x: 8, y: 174)) Fill: rgb(188,143,143) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [653, 124]: something - [724, 124]: else -Transform: (348, 132) [0.99, 0.13, -0.13, 0.99, 0, 0] - Clip: Path (Vector(x: 128, y: 108) > Vector(x: 568, y: 108) > Vector(x: 568, y: 157) > Vector(x: 128, y: 157)) +Text: rgb(0,0,0) normal normal 400 16px Arial + [8, 156]: something + [86, 156]: else +Transform: (379, 132) [0.99, 0.13, -0.13, 0.99, 0, 0] + Clip: Path (Vector(x: 138, y: 108) > Vector(x: 621, y: 108) > Vector(x: 621, y: 156) > Vector(x: 138, y: 156)) Fill: rgb(143,188,143) - Shape: rgb(255,0,0) Path (Vector(x: 128, y: 108) > Vector(x: 568, y: 108) > Vector(x: 553, y: 123) > Vector(x: 143, y: 123)) - Shape: rgb(255,0,0) Path (Vector(x: 568, y: 108) > Vector(x: 568, y: 157) > Vector(x: 553, y: 142) > Vector(x: 553, y: 123)) - Shape: rgb(255,0,0) Path (Vector(x: 568, y: 157) > Vector(x: 128, y: 157) > Vector(x: 143, y: 142) > Vector(x: 553, y: 142)) - Shape: rgb(255,0,0) Path (Vector(x: 128, y: 157) > Vector(x: 128, y: 108) > Vector(x: 143, y: 123) > Vector(x: 143, y: 142)) - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [143, 123]: with - [175, 123]: second - [224, 123]: level - [258, 123]: content - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [453, 123]: , - [461, 123]: ending - [509, 123]: second - Transform: (381, 132) [0.33, -0.94, 0.94, 0.33, 0, 0] - Clip: Path (Vector(x: 310, y: 123) > Vector(x: 453, y: 123) > Vector(x: 453, y: 142) > Vector(x: 310, y: 142)) + Shape: rgb(255,0,0) Path (Vector(x: 138, y: 108) > Vector(x: 621, y: 108) > Vector(x: 606, y: 123) > Vector(x: 153, y: 123)) + Shape: rgb(255,0,0) Path (Vector(x: 621, y: 108) > Vector(x: 621, y: 156) > Vector(x: 606, y: 141) > Vector(x: 606, y: 123)) + Shape: rgb(255,0,0) Path (Vector(x: 621, y: 156) > Vector(x: 138, y: 156) > Vector(x: 153, y: 141) > Vector(x: 606, y: 141)) + Shape: rgb(255,0,0) Path (Vector(x: 138, y: 156) > Vector(x: 138, y: 108) > Vector(x: 153, y: 123) > Vector(x: 153, y: 141)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [153, 123]: with + [186, 123]: second + [242, 123]: level + [279, 123]: content + Text: rgb(0,0,0) normal normal 400 16px Arial + [493, 123]: , + [501, 123]: ending + [554, 123]: second + Transform: (414, 132) [0.33, -0.94, 0.94, 0.33, 0, 0] + Clip: Path (Vector(x: 336, y: 123) > Vector(x: 493, y: 123) > Vector(x: 493, y: 141) > Vector(x: 336, y: 141)) Fill: rgb(95,158,160) - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [310, 123]: and - [337, 123]: third - [371, 123]: level - [406, 123]: content \ No newline at end of file + Text: rgb(0,0,0) normal normal 400 16px Arial + [336, 123]: and + [367, 123]: third + [403, 123]: level + [440, 123]: content \ No newline at end of file diff --git a/tests/reftests/transform/rotate.html b/tests/reftests/transform/rotate.html index dc2f1587f..61bf66101 100644 --- a/tests/reftests/transform/rotate.html +++ b/tests/reftests/transform/rotate.html @@ -36,7 +36,11 @@ -o-transform: rotate(45deg); /* Opera 10.50-12.00 */ transform:rotate(45deg); } -
      diff --git a/tests/reftests/transform/translate.html b/tests/reftests/transform/translate.html index 86301b3a8..0630b0994 100644 --- a/tests/reftests/transform/translate.html +++ b/tests/reftests/transform/translate.html @@ -36,8 +36,11 @@ display: inline-block; padding: 10px; } - + body { + font-family: Arial; + } +
      First level content
      with second level content
      and third level content
      , ending second
      , ending first
      diff --git a/tests/reftests/transform/translate.txt b/tests/reftests/transform/translate.txt index 1e93d1118..783e9530f 100644 --- a/tests/reftests/transform/translate.txt +++ b/tests/reftests/transform/translate.txt @@ -1,37 +1,37 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Clip: Path (Vector(x: 8, y: 108) > Vector(x: 699, y: 108) > Vector(x: 699, y: 207) > Vector(x: 8, y: 207)) +Clip: Path (Vector(x: 8, y: 108) > Vector(x: 758, y: 108) > Vector(x: 758, y: 206) > Vector(x: 8, y: 206)) Fill: rgb(205,92,92) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [18, 148]: First - [51, 148]: level - [86, 148]: content -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [608, 148]: , - [616, 148]: ending - [664, 148]: first -Transform: (373, 157) [1, 0, 0, 1, 125, 0] - Clip: Path (Vector(x: 138, y: 118) > Vector(x: 608, y: 118) > Vector(x: 608, y: 197) > Vector(x: 138, y: 197)) + [54, 148]: level + [91, 148]: content +Text: rgb(0,0,0) normal normal 400 16px Arial + [660, 148]: , + [670, 148]: ending + [722, 148]: first +Transform: (404, 157) [1, 0, 0, 1, 125, 0] + Clip: Path (Vector(x: 148, y: 118) > Vector(x: 661, y: 118) > Vector(x: 661, y: 196) > Vector(x: 148, y: 196)) Fill: rgb(143,188,143) - Shape: rgb(255,0,0) Path (Vector(x: 138, y: 118) > Vector(x: 608, y: 118) > Vector(x: 598, y: 128) > Vector(x: 148, y: 128)) - Shape: rgb(255,0,0) Path (Vector(x: 608, y: 118) > Vector(x: 608, y: 197) > Vector(x: 598, y: 187) > Vector(x: 598, y: 128)) - Shape: rgb(255,0,0) Path (Vector(x: 608, y: 197) > Vector(x: 138, y: 197) > Vector(x: 148, y: 187) > Vector(x: 598, y: 187)) - Shape: rgb(255,0,0) Path (Vector(x: 138, y: 197) > Vector(x: 138, y: 118) > Vector(x: 148, y: 128) > Vector(x: 148, y: 187)) - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [158, 148]: with - [190, 148]: second - [238, 148]: level - [274, 148]: content - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [488, 148]: , - [496, 148]: ending - [544, 148]: second - Transform: (425, 188) [1, 0, 0, 1, 100, -25] - Clip: Path (Vector(x: 325, y: 138) > Vector(x: 488, y: 138) > Vector(x: 488, y: 177) > Vector(x: 325, y: 177)) + Shape: rgb(255,0,0) Path (Vector(x: 148, y: 118) > Vector(x: 661, y: 118) > Vector(x: 651, y: 128) > Vector(x: 158, y: 128)) + Shape: rgb(255,0,0) Path (Vector(x: 661, y: 118) > Vector(x: 661, y: 196) > Vector(x: 651, y: 186) > Vector(x: 651, y: 128)) + Shape: rgb(255,0,0) Path (Vector(x: 661, y: 196) > Vector(x: 148, y: 196) > Vector(x: 158, y: 186) > Vector(x: 651, y: 186)) + Shape: rgb(255,0,0) Path (Vector(x: 148, y: 196) > Vector(x: 148, y: 118) > Vector(x: 158, y: 128) > Vector(x: 158, y: 186)) + Text: rgb(0,0,0) normal normal 400 16px Arial + [168, 148]: with + [201, 148]: second + [257, 148]: level + [294, 148]: content + Text: rgb(0,0,0) normal normal 400 16px Arial + [527, 148]: , + [537, 148]: ending + [589, 148]: second + Transform: (451, 188) [1, 0, 0, 1, 100, -25] + Clip: Path (Vector(x: 351, y: 138) > Vector(x: 528, y: 138) > Vector(x: 528, y: 176) > Vector(x: 351, y: 176)) Fill: rgb(95,158,160) - Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [335, 148]: and - [362, 148]: third - [396, 148]: level - [431, 148]: content \ No newline at end of file + Text: rgb(0,0,0) normal normal 400 16px Arial + [361, 148]: and + [392, 148]: third + [428, 148]: level + [465, 148]: content \ No newline at end of file diff --git a/tests/reftests/visibility.html b/tests/reftests/visibility.html index 77dcdb9d4..3071bc4d0 100644 --- a/tests/reftests/visibility.html +++ b/tests/reftests/visibility.html @@ -11,8 +11,11 @@ .none { display:none } - + body { + font-family: Arial; + } +
      diff --git a/tests/reftests/visibility.txt b/tests/reftests/visibility.txt index 17bfa2fa5..46f6746b7 100644 --- a/tests/reftests/visibility.txt +++ b/tests/reftests/visibility.txt @@ -2,24 +2,24 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 790, y: 10) > Vector(x: 10, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 178) > Vector(x: 790, y: 176) > Vector(x: 790, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 178) > Vector(x: 8, y: 178) > Vector(x: 10, y: 176) > Vector(x: 790, y: 176)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 178) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 176)) -Text: rgb(0,0,0) normal normal 700 32px Times New Roman +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 176) > Vector(x: 790, y: 174) > Vector(x: 790, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 176) > Vector(x: 8, y: 176) > Vector(x: 10, y: 174) > Vector(x: 790, y: 174)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 176) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 174)) +Text: rgb(0,0,0) normal normal 700 32px Arial [10, 32]: Display:none - [198, 32]: and - [257, 32]: visible:hidden - [457, 32]: tests -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 89) > Vector(x: 790, y: 89) > Vector(x: 788, y: 91) > Vector(x: 12, y: 91)) -Shape: rgb(0,0,0) Path (Vector(x: 790, y: 89) > Vector(x: 790, y: 112) > Vector(x: 788, y: 110) > Vector(x: 788, y: 91)) + [220, 32]: and + [286, 32]: visible:hidden + [510, 32]: tests +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 90) > Vector(x: 790, y: 90) > Vector(x: 788, y: 92) > Vector(x: 12, y: 92)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 90) > Vector(x: 790, y: 112) > Vector(x: 788, y: 110) > Vector(x: 788, y: 92)) Shape: rgb(0,0,0) Path (Vector(x: 790, y: 112) > Vector(x: 10, y: 112) > Vector(x: 12, y: 110) > Vector(x: 788, y: 110)) -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 112) > Vector(x: 10, y: 89) > Vector(x: 12, y: 91) > Vector(x: 12, y: 110)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 112) > Vector(x: 10, y: 90) > Vector(x: 12, y: 92) > Vector(x: 12, y: 110)) +Text: rgb(0,0,0) normal normal 400 16px Arial [12, 92]: This - [44, 92]: should - [91, 92]: be - [110, 92]: visible -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 143) > Vector(x: 790, y: 143) > Vector(x: 789, y: 144) > Vector(x: 11, y: 144)) -Shape: rgb(0,0,0) Path (Vector(x: 790, y: 143) > Vector(x: 790, y: 145) > Vector(x: 789, y: 144) > Vector(x: 789, y: 144)) -Shape: rgb(0,0,0) Path (Vector(x: 790, y: 145) > Vector(x: 10, y: 145) > Vector(x: 11, y: 144) > Vector(x: 789, y: 144)) -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 145) > Vector(x: 10, y: 143) > Vector(x: 11, y: 144) > Vector(x: 11, y: 144)) \ No newline at end of file + [47, 92]: should + [98, 92]: be + [120, 92]: visible +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 142) > Vector(x: 790, y: 142) > Vector(x: 789, y: 143) > Vector(x: 11, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 142) > Vector(x: 790, y: 144) > Vector(x: 789, y: 143) > Vector(x: 789, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 790, y: 144) > Vector(x: 10, y: 144) > Vector(x: 11, y: 143) > Vector(x: 789, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 10, y: 144) > Vector(x: 10, y: 142) > Vector(x: 11, y: 143) > Vector(x: 11, y: 143)) \ No newline at end of file diff --git a/tests/reftests/zindex/z-index13.html b/tests/reftests/zindex/z-index13.html index 884f792c4..02e1c7be4 100644 --- a/tests/reftests/zindex/z-index13.html +++ b/tests/reftests/zindex/z-index13.html @@ -21,6 +21,9 @@ position:absolute; top:0;left:0; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index13.txt b/tests/reftests/zindex/z-index13.txt index e28eabc73..fe35f4c1e 100644 --- a/tests/reftests/zindex/z-index13.txt +++ b/tests/reftests/zindex/z-index13.txt @@ -5,5 +5,5 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 208, y: 8) > Vector(x: 208, y: 208) > Fill: rgb(0,255,255) Clip: Path (Vector(x: 8, y: 8) > Vector(x: 108, y: 8) > Vector(x: 108, y: 108) > Vector(x: 8, y: 108)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 8]: outer \ No newline at end of file diff --git a/tests/reftests/zindex/z-index14.html b/tests/reftests/zindex/z-index14.html index 6bfa9c500..5dcdabd0f 100644 --- a/tests/reftests/zindex/z-index14.html +++ b/tests/reftests/zindex/z-index14.html @@ -8,6 +8,7 @@ * {margin:0;padding:0;} body { background-color: green; + font-family: Arial; } #div1 { background-color:cyan; diff --git a/tests/reftests/zindex/z-index14.txt b/tests/reftests/zindex/z-index14.txt index 783031b7c..b5f64e94e 100644 --- a/tests/reftests/zindex/z-index14.txt +++ b/tests/reftests/zindex/z-index14.txt @@ -1,9 +1,9 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgb(0,128,0) Opacity: 1 -Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 19) > Vector(x: 0, y: 19)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 18) > Vector(x: 0, y: 18)) Fill: rgb(0,128,0) Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Vector(x: 0, y: 200)) Fill: rgb(0,255,255) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [0, 0]: body \ No newline at end of file diff --git a/tests/reftests/zindex/z-index15.html b/tests/reftests/zindex/z-index15.html index f8dbeceac..f60efb1c3 100644 --- a/tests/reftests/zindex/z-index15.html +++ b/tests/reftests/zindex/z-index15.html @@ -18,6 +18,9 @@ position:absolute; top:0; left:0; } + body { + font-family: Arial; + } body diff --git a/tests/reftests/zindex/z-index15.txt b/tests/reftests/zindex/z-index15.txt index a95d5886b..f0332188e 100644 --- a/tests/reftests/zindex/z-index15.txt +++ b/tests/reftests/zindex/z-index15.txt @@ -3,7 +3,7 @@ Rectangle: [0, 0, 800, 600] rgb(128,128,128) Opacity: 1 Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Vector(x: 0, y: 200)) Fill: rgb(0,255,255) -Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 19) > Vector(x: 0, y: 19)) +Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 18) > Vector(x: 0, y: 18)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [0, 0]: body \ No newline at end of file diff --git a/tests/reftests/zindex/z-index16.html b/tests/reftests/zindex/z-index16.html index c9030eab6..d25d036b2 100644 --- a/tests/reftests/zindex/z-index16.html +++ b/tests/reftests/zindex/z-index16.html @@ -10,6 +10,9 @@ width: 3in; height: 3in; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index16.txt b/tests/reftests/zindex/z-index16.txt index 8138f4342..5a9f1838a 100644 --- a/tests/reftests/zindex/z-index16.txt +++ b/tests/reftests/zindex/z-index16.txt @@ -1,31 +1,31 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 16]: This - [40, 16]: text - [68, 16]: will - [97, 16]: be - [116, 16]: beneath - [170, 16]: everything. + [43, 16]: text + [73, 16]: will + [100, 16]: be + [122, 16]: beneath + [184, 16]: everything. Clip: Path (Vector(x: 192, y: 192) > Vector(x: 480, y: 192) > Vector(x: 480, y: 480) > Vector(x: 192, y: 480)) Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [192, 192]: This - [224, 192]: text - [252, 192]: will - [281, 192]: underlay - [341, 192]: text1, - [381, 192]: but - [406, 192]: overlay - [458, 192]: the - [192, 211]: butterfly - [251, 211]: image -Text: rgb(0,0,0) normal normal 400 16px Times New Roman + [227, 192]: text + [257, 192]: will + [284, 192]: underlay + [349, 192]: text1, + [393, 192]: but + [420, 192]: overlay + [192, 210]: the + [219, 210]: butterfly + [280, 210]: image +Text: rgb(0,0,0) normal normal 400 16px Arial [192, 192]: This - [224, 192]: text - [252, 192]: will - [281, 192]: overlay - [333, 192]: the - [357, 192]: butterfly - [416, 192]: image. \ No newline at end of file + [227, 192]: text + [257, 192]: will + [284, 192]: overlay + [340, 192]: the + [366, 192]: butterfly + [428, 192]: image. \ No newline at end of file diff --git a/tests/reftests/zindex/z-index17.html b/tests/reftests/zindex/z-index17.html index 4023e3ed2..a79d7bb00 100644 --- a/tests/reftests/zindex/z-index17.html +++ b/tests/reftests/zindex/z-index17.html @@ -16,6 +16,9 @@ body { background: violet; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index17.txt b/tests/reftests/zindex/z-index17.txt index 2079deed0..34395435b 100644 --- a/tests/reftests/zindex/z-index17.txt +++ b/tests/reftests/zindex/z-index17.txt @@ -5,9 +5,9 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > V Fill: rgb(238,130,238) Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 100) > Vector(x: 0, y: 100)) Fill: rgb(85,107,47) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [0, 0]: fixed - [37, 0]: z - [44, 0]: - - [49, 0]: index - [89, 0]: 10 \ No newline at end of file + [38, 0]: z + [46, 0]: - + [52, 0]: index + [94, 0]: 10 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index18.html b/tests/reftests/zindex/z-index18.html index 080b236fb..e81f5c650 100644 --- a/tests/reftests/zindex/z-index18.html +++ b/tests/reftests/zindex/z-index18.html @@ -57,6 +57,9 @@ width: 100px; height: 100px; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index18.txt b/tests/reftests/zindex/z-index18.txt index 82400c59b..6d4fb45b1 100644 --- a/tests/reftests/zindex/z-index18.txt +++ b/tests/reftests/zindex/z-index18.txt @@ -5,43 +5,43 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 308) > Fill: rgb(238,130,238) Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 8]: a Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [8, 8]: b -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: c -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: d -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: e Clip: Path (Vector(x: 24, y: 18) > Vector(x: 824, y: 18) > Vector(x: 824, y: 318) > Vector(x: 24, y: 318)) Fill: rgb(255,0,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: f Clip: Path (Vector(x: 24, y: 18) > Vector(x: 424, y: 18) > Vector(x: 424, y: 318) > Vector(x: 24, y: 318)) Fill: rgb(0,0,255) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: g Clip: Path (Vector(x: 24, y: 18) > Vector(x: 224, y: 18) > Vector(x: 224, y: 218) > Vector(x: 24, y: 218)) Fill: rgb(255,165,0) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: h Clip: Path (Vector(x: -24, y: 18) > Vector(x: 776, y: 18) > Vector(x: 776, y: 118) > Vector(x: -24, y: 118)) Fill: rgb(128,0,128) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [-24, 18]: i Clip: Path (Vector(x: 24, y: 68) > Vector(x: 824, y: 68) > Vector(x: 824, y: 168) > Vector(x: 24, y: 168)) Fill: rgb(255,192,203) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 68]: j Clip: Path (Vector(x: 64, y: 98) > Vector(x: 864, y: 98) > Vector(x: 864, y: 198) > Vector(x: 64, y: 198)) Fill: rgb(0,0,128) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [64, 98]: k Clip: Path (Vector(x: 24, y: 18) > Vector(x: 124, y: 18) > Vector(x: 124, y: 118) > Vector(x: 24, y: 118)) Fill: rgb(165,42,42) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [24, 18]: l \ No newline at end of file diff --git a/tests/reftests/zindex/z-index3.txt b/tests/reftests/zindex/z-index3.txt index 39fe56386..39e93e235 100644 --- a/tests/reftests/zindex/z-index3.txt +++ b/tests/reftests/zindex/z-index3.txt @@ -52,15 +52,6 @@ Text: rgb(0,0,0) normal normal 400 12px Arial Text: rgb(0,0,0) normal normal 700 12px Arial [92, 74]: LEVEL [134, 74]: #2 -Clip: Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 197, y: 186)) - Fill: rgb(221,221,255) -Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 304, y: 171) > Vector(x: 199, y: 171)) -Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 304, y: 184) > Vector(x: 304, y: 171)) -Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 197, y: 186) > Vector(x: 199, y: 184) > Vector(x: 304, y: 184)) -Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 197, y: 169) > Vector(x: 199, y: 171) > Vector(x: 199, y: 184)) -Text: rgb(0,0,0) normal normal 700 12px Arial - [204, 171]: LEVEL - [246, 171]: #3 Clip: Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector(x: 306, y: 98) > Vector(x: 197, y: 98)) Fill: rgb(221,221,255) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector(x: 304, y: 83) > Vector(x: 199, y: 83)) @@ -70,6 +61,15 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 197, y: 81) > Vector Text: rgb(0,0,0) normal normal 700 12px Arial [204, 83]: LEVEL [246, 83]: #3 +Clip: Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 197, y: 116)) + Fill: rgb(221,221,255) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 304, y: 100) > Vector(x: 199, y: 100)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 304, y: 114) > Vector(x: 304, y: 100)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 197, y: 116) > Vector(x: 199, y: 114) > Vector(x: 304, y: 114)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 197, y: 98) > Vector(x: 199, y: 100) > Vector(x: 199, y: 114)) +Text: rgb(0,0,0) normal normal 700 12px Arial + [204, 100]: LEVEL + [246, 100]: #3 Clip: Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vector(x: 306, y: 134) > Vector(x: 197, y: 134)) Fill: rgb(221,221,255) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vector(x: 304, y: 118) > Vector(x: 199, y: 118)) @@ -97,15 +97,15 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 197, y: 151) > Vect Text: rgb(0,0,0) normal normal 700 12px Arial [204, 153]: LEVEL [246, 153]: #3 -Clip: Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 197, y: 116)) +Clip: Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 197, y: 186)) Fill: rgb(221,221,255) -Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 304, y: 100) > Vector(x: 199, y: 100)) -Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 304, y: 114) > Vector(x: 304, y: 100)) -Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 197, y: 116) > Vector(x: 199, y: 114) > Vector(x: 304, y: 114)) -Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 197, y: 98) > Vector(x: 199, y: 100) > Vector(x: 199, y: 114)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 304, y: 171) > Vector(x: 199, y: 171)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 304, y: 184) > Vector(x: 304, y: 171)) +Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 197, y: 186) > Vector(x: 199, y: 184) > Vector(x: 304, y: 184)) +Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 197, y: 169) > Vector(x: 199, y: 171) > Vector(x: 199, y: 184)) Text: rgb(0,0,0) normal normal 700 12px Arial - [204, 100]: LEVEL - [246, 100]: #3 + [204, 171]: LEVEL + [246, 171]: #3 Clip: Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vector(x: 306, y: 204) > Vector(x: 197, y: 204)) Fill: rgb(221,221,255) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vector(x: 304, y: 188) > Vector(x: 199, y: 188)) diff --git a/tests/reftests/zindex/z-index4.html b/tests/reftests/zindex/z-index4.html index 3e0b95bee..178488e75 100644 --- a/tests/reftests/zindex/z-index4.html +++ b/tests/reftests/zindex/z-index4.html @@ -21,7 +21,11 @@ background-color: #ffdddd; z-index: -1; } - + + body { + font-family: Arial; + } +
      diff --git a/tests/reftests/zindex/z-index4.txt b/tests/reftests/zindex/z-index4.txt index 893c7f1cd..6c9b6b180 100644 --- a/tests/reftests/zindex/z-index4.txt +++ b/tests/reftests/zindex/z-index4.txt @@ -9,15 +9,15 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 10]: LEVEL - [70, 10]: #1 + [69, 10]: #1 Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) Fill: rgb(204,255,204) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 265, y: 84) > Vector(x: 10, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 84]: LEVEL - [70, 84]: #1 \ No newline at end of file + [69, 84]: #1 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index5.html b/tests/reftests/zindex/z-index5.html index 960c7fcbd..25c8ae6f4 100644 --- a/tests/reftests/zindex/z-index5.html +++ b/tests/reftests/zindex/z-index5.html @@ -20,6 +20,9 @@ width: 250px; background-color: #ffdddd; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index5.txt b/tests/reftests/zindex/z-index5.txt index 62a1caaa9..a1480be51 100644 --- a/tests/reftests/zindex/z-index5.txt +++ b/tests/reftests/zindex/z-index5.txt @@ -7,9 +7,9 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 10]: LEVEL - [70, 10]: #1 + [69, 10]: #1 Clip: Path (Vector(x: 8, y: 0) > Vector(x: 258, y: 0) > Vector(x: 258, y: 600) > Vector(x: 8, y: 600)) Fill: rgb(255,221,221) Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) @@ -18,6 +18,6 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 84]: LEVEL - [70, 84]: #1 \ No newline at end of file + [69, 84]: #1 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index6.html b/tests/reftests/zindex/z-index6.html index 2b7073f57..83774c4ba 100644 --- a/tests/reftests/zindex/z-index6.html +++ b/tests/reftests/zindex/z-index6.html @@ -23,6 +23,9 @@ div.z1 { z-index: 1; } + body { + font-family: Arial; + } diff --git a/tests/reftests/zindex/z-index6.txt b/tests/reftests/zindex/z-index6.txt index cf8146e8f..349cffe4b 100644 --- a/tests/reftests/zindex/z-index6.txt +++ b/tests/reftests/zindex/z-index6.txt @@ -7,9 +7,9 @@ Shape: rgb(102,153,102) Path (Vector(x: 28, y: 113) > Vector(x: 287, y: 113) > V Shape: rgb(102,153,102) Path (Vector(x: 287, y: 113) > Vector(x: 287, y: 187) > Vector(x: 285, y: 185) > Vector(x: 285, y: 115)) Shape: rgb(102,153,102) Path (Vector(x: 287, y: 187) > Vector(x: 28, y: 187) > Vector(x: 30, y: 185) > Vector(x: 285, y: 185)) Shape: rgb(102,153,102) Path (Vector(x: 28, y: 187) > Vector(x: 28, y: 113) > Vector(x: 30, y: 115) > Vector(x: 30, y: 185)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [35, 115]: z - [42, 115]: - + [43, 115]: - [48, 115]: index:0 Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) Fill: rgb(204,255,204) @@ -17,18 +17,18 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 84]: default - [64, 84]: z - [70, 84]: - - [76, 84]: index + [68, 84]: z + [76, 84]: - + [81, 84]: index Clip: Path (Vector(x: 8, y: 156) > Vector(x: 267, y: 156) > Vector(x: 267, y: 230) > Vector(x: 8, y: 230)) Fill: rgb(204,255,204) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 267, y: 156) > Vector(x: 265, y: 158) > Vector(x: 10, y: 158)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 267, y: 230) > Vector(x: 265, y: 228) > Vector(x: 265, y: 158)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 230) > Vector(x: 8, y: 230) > Vector(x: 10, y: 228) > Vector(x: 265, y: 228)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 230) > Vector(x: 8, y: 156) > Vector(x: 10, y: 158) > Vector(x: 10, y: 228)) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman +Text: rgb(0,0,0) normal normal 400 16px Arial [15, 158]: z - [22, 158]: - + [23, 158]: - [28, 158]: index:1 \ No newline at end of file diff --git a/tests/test.js b/tests/test.js index 86fc8aaf5..55e378f2b 100644 --- a/tests/test.js +++ b/tests/test.js @@ -40,7 +40,9 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; promise.then(function(output) { var canvas = Array.isArray(targets) ? output[0] : output; if (Array.isArray(targets)) { - console.log(output[1]); + console.log(output[1].split('\n').map(function(line, i) { + return (i + 1) + ':' + line; + }).join('\n')); } var $canvas = $(canvas), finishTime = new Date(); diff --git a/tests/testrunner.js b/tests/testrunner.js index 3fb82bfa6..fb7b4e843 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -177,8 +177,8 @@ const assertPath = (result, expected, desc) => { break; case 'Transform': - expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); expect(RESULT.matrix).to.equal( args.matrix, `${desc} matrix` @@ -186,8 +186,8 @@ const assertPath = (result, expected, desc) => { break; case 'Repeat': - expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); expect(RESULT.width).to.equal( args.width, `${desc} width` @@ -204,8 +204,8 @@ const assertPath = (result, expected, desc) => { break; case 'Gradient': - expect(RESULT.x).to.be.closeTo(args.x, 5, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 5, `${desc} y`); + expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); + expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); expect(RESULT.x0).to.be.closeTo( args.x0, 5, From edebe082f3247679f6581126932564eac2becb25 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 9 Aug 2017 12:05:16 +0800 Subject: [PATCH 049/377] Remove animations from reftests --- src/NodeContainer.js | 7 ++++++- tests/reftests/text/fontawesome.html | 2 +- tests/reftests/text/fontawesome.txt | 5 ++--- tests/test.js | 11 ++++++++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 940891349..3e438d640 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -82,7 +82,12 @@ export default class NodeContainer { image: ?string; index: number; - constructor(node: HTMLElement, parent: ?NodeContainer, imageLoader: ImageLoader, index: number) { + constructor( + node: HTMLElement, + parent: ?NodeContainer, + imageLoader: ImageLoader, + index: number + ) { this.parent = parent; this.index = index; this.childNodes = []; diff --git a/tests/reftests/text/fontawesome.html b/tests/reftests/text/fontawesome.html index c5f0aede0..856110fa3 100644 --- a/tests/reftests/text/fontawesome.html +++ b/tests/reftests/text/fontawesome.html @@ -20,7 +20,7 @@
      • List icons
      • can be used
      • -
      • as bullets
      • +
      • as bullets
      • in lists
      diff --git a/tests/reftests/text/fontawesome.txt b/tests/reftests/text/fontawesome.txt index c89d63e8a..463c478e1 100644 --- a/tests/reftests/text/fontawesome.txt +++ b/tests/reftests/text/fontawesome.txt @@ -62,9 +62,8 @@ Text: rgb(0,0,0) normal normal 400 16px FontAwesome Text: rgb(0,0,0) normal normal 400 16px Arial [42, 176]: as [63, 176]: bullets -Transform: (24, 182) [0.97, 0.26, -0.26, 0.97, 0, 0] - Text: rgb(0,0,0) normal normal 400 16px FontAwesome - [16, 177]:  +Text: rgb(0,0,0) normal normal 400 16px FontAwesome + [18, 178]:  Text: rgb(0,0,0) normal normal 400 16px Arial [42, 194]: in [59, 194]: lists diff --git a/tests/test.js b/tests/test.js index 55e378f2b..f711ff6ad 100644 --- a/tests/test.js +++ b/tests/test.js @@ -40,9 +40,14 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; promise.then(function(output) { var canvas = Array.isArray(targets) ? output[0] : output; if (Array.isArray(targets)) { - console.log(output[1].split('\n').map(function(line, i) { - return (i + 1) + ':' + line; - }).join('\n')); + console.log( + output[1] + .split('\n') + .map(function(line, i) { + return i + 1 + ':' + line; + }) + .join('\n') + ); } var $canvas = $(canvas), finishTime = new Date(); From c287f51cb6df681e8d0c3d80565638dd25cd1a80 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 21:58:36 +0800 Subject: [PATCH 050/377] Fix incorrect render order in Firefox for position: static an z-index value --- src/NodeContainer.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 3e438d640..5fd6a783d 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -97,6 +97,8 @@ export default class NodeContainer { const IS_INPUT = node.type === 'radio' || node.type === 'checkbox'; + const position = parsePosition(style.position); + this.style = { background: IS_INPUT ? INPUT_BACKGROUND : parseBackground(style, imageLoader), border: IS_INPUT ? INPUT_BORDERS : parseBorder(style), @@ -114,13 +116,13 @@ export default class NodeContainer { opacity: parseFloat(style.opacity), overflow: parseOverflow(style.overflow), padding: parsePadding(style), - position: parsePosition(style.position), + position: position, textDecoration: parseTextDecoration(style), textShadow: parseTextShadow(style.textShadow), textTransform: parseTextTransform(style.textTransform), transform: parseTransform(style), visibility: parseVisibility(style.visibility), - zIndex: parseZIndex(style.zIndex) + zIndex: position !== POSITION.STATIC ? parseZIndex(style.zIndex) : 0 }; if (this.isTransformed()) { From 82cfcf8704760e413a035e63153e23471fb06d9e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 21:58:56 +0800 Subject: [PATCH 051/377] Round reftest repeat values --- src/renderer/RefTestRenderer.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js index e1037fbf9..aa086a910 100644 --- a/src/renderer/RefTestRenderer.js +++ b/src/renderer/RefTestRenderer.js @@ -137,11 +137,11 @@ class RefTestRenderer implements RenderTarget { offsetY: number ) { this.writeLine( - `Repeat: ${this.formatImage( - image - )} [${offsetX}, ${offsetY}] Size (${imageSize.width}, ${imageSize.height}) ${this.formatPath( - path - )}` + `Repeat: ${this.formatImage(image)} [${Math.round(offsetX)}, ${Math.round( + offsetY + )}] Size (${Math.round(imageSize.width)}, ${Math.round( + imageSize.height + )}) ${this.formatPath(path)}` ); } From 5969c9548170030d49b6a672fb97b91b3df6333b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 21:59:08 +0800 Subject: [PATCH 052/377] Set line number for text renders --- scripts/parse-reftest.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/parse-reftest.js b/scripts/parse-reftest.js index 9f0a50380..44efc35bd 100644 --- a/scripts/parse-reftest.js +++ b/scripts/parse-reftest.js @@ -49,7 +49,8 @@ function parseRefTest(txt) { action: 'T', x: parseInt(text[1], 10), y: parseInt(text[2], 10), - text: text[3] + text: text[3], + line: i + 1 }; } const args = parseAction[2]; From 8f575a446d2d754491cb70dbd2b3b38229c3ec03 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 21:59:26 +0800 Subject: [PATCH 053/377] Don't toggle canvas on right-mouse click --- tests/test.js | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/tests/test.js b/tests/test.js index f711ff6ad..9900130cc 100644 --- a/tests/test.js +++ b/tests/test.js @@ -65,21 +65,24 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; .appendTo(document.body); if (!CI) { $canvas.siblings().toggle(); - $(window).click(function() { - var scrollTop = $(window).scrollTop(); - $canvas.toggle().siblings().toggle(); - $(document.documentElement).css( - 'background', - $canvas.is(':visible') ? 'none' : '' - ); - $(document.body).css( - 'background', - $canvas.is(':visible') ? 'none' : '' - ); - throwMessage( - 'Canvas Render ' + ($canvas.is(':visible') ? 'visible' : 'hidden') - ); - $(window).scrollTop(scrollTop); + $(window).click(function(event) { + if (event.button === 0) { + var scrollTop = $(window).scrollTop(); + $canvas.toggle().siblings().toggle(); + $(document.documentElement).css( + 'background', + $canvas.is(':visible') ? 'none' : '' + ); + $(document.body).css( + 'background', + $canvas.is(':visible') ? 'none' : '' + ); + throwMessage( + 'Canvas Render ' + + ($canvas.is(':visible') ? 'visible' : 'hidden') + ); + $(window).scrollTop(scrollTop); + } }); $(document.documentElement).css( 'background', From 1c318ab607f64e3eb3cce639db37f0ec85753043 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 23:24:26 +0800 Subject: [PATCH 054/377] Add ignored reftests --- scripts/create-reftest-list.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/scripts/create-reftest-list.js b/scripts/create-reftest-list.js index 0302f3f04..0e4a487bd 100644 --- a/scripts/create-reftest-list.js +++ b/scripts/create-reftest-list.js @@ -7,6 +7,11 @@ const slash = require('slash'); const parseRefTest = require('./parse-reftest'); const outputPath = 'tests/reftests.js'; +const ignoredTests = [ + '/tests/reftests/background/radial-gradient.html', + '/tests/reftests/text/chinese.html' +]; + glob( '../tests/reftests/**/*.html', { @@ -21,10 +26,16 @@ glob( const testList = files.reduce((acc, filename) => { const refTestFilename = path.resolve(__dirname, filename.replace(/\.html$/, '.txt')); - console.log(refTestFilename); - acc[`/${slash(path.relative('../', filename))}`] = fs.existsSync(refTestFilename) - ? parseRefTest(fs.readFileSync(refTestFilename).toString()) - : null; + const name = `/${slash(path.relative('../', filename))}`; + if (ignoredTests.indexOf(name) === -1) { + console.log(name); + acc[name] = fs.existsSync(refTestFilename) + ? parseRefTest(fs.readFileSync(refTestFilename).toString()) + : null; + } else { + console.log(`IGNORED: ${name}`); + } + return acc; }, {}); From eb380f023f2e8aaf76a751a70607c5e5407142d6 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 23:24:38 +0800 Subject: [PATCH 055/377] Fix zIndex value --- src/NodeContainer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 5fd6a783d..9769dbd0c 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -122,7 +122,7 @@ export default class NodeContainer { textTransform: parseTextTransform(style.textTransform), transform: parseTransform(style), visibility: parseVisibility(style.visibility), - zIndex: position !== POSITION.STATIC ? parseZIndex(style.zIndex) : 0 + zIndex: parseZIndex(position !== POSITION.STATIC ? style.zIndex : 'auto') }; if (this.isTransformed()) { From 5bd06895e940e550256165ede438add400d34b3c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 23:25:50 +0800 Subject: [PATCH 056/377] Begin implementing webkit-gradient parsing --- src/Gradient.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/Gradient.js b/src/Gradient.js index 08b52a535..b15c56824 100644 --- a/src/Gradient.js +++ b/src/Gradient.js @@ -8,7 +8,9 @@ import Color from './Color'; import Length, {LENGTH_TYPE} from './Length'; const SIDE_OR_CORNER = /^(to )?(left|top|right|bottom)( (left|top|right|bottom))?$/i; +const PERCENTAGE_ANGLES = /^([+-]?\d*\.?\d+)% ([+-]?\d*\.?\d+)%$/i; const ENDS_WITH_LENGTH = /(px)|%|( 0)$/i; +const FROM_TO = /^(from|to)\((.+)\)$/i; export type Direction = { x0: number, @@ -33,18 +35,32 @@ export const parseGradient = ( ): ?Gradient => { if (method === 'linear-gradient') { return parseLinearGradient(args, bounds); + } else if (method === 'gradient' && args[0] === 'linear') { + // TODO handle correct angle + return parseLinearGradient( + ['to bottom'].concat( + args + .slice(3) + .map(color => color.match(FROM_TO)) + .filter(v => v !== null) + // $FlowFixMe + .map(v => v[2]) + ), + bounds + ); } - - // TODO: webkit-gradient syntax }; const parseLinearGradient = (args: Array, bounds: Bounds): Gradient => { const angle = parseAngle(args[0]); - const HAS_DIRECTION = SIDE_OR_CORNER.test(args[0]) || angle !== null; + const HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]); + const HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]); const direction = HAS_DIRECTION ? angle !== null ? calculateGradientDirection(angle, bounds) - : parseSideOrCorner(args[0], bounds) + : HAS_SIDE_OR_CORNER + ? parseSideOrCorner(args[0], bounds) + : parsePercentageAngle(args[0], bounds) : calculateGradientDirection(Math.PI, bounds); const colorStops = []; const firstColorStopIndex = HAS_DIRECTION ? 1 : 0; @@ -166,3 +182,10 @@ const parseSideOrCorner = (side: string, bounds: Bounds): Direction => { return calculateGradientDirection(Math.PI, bounds); } }; + +const parsePercentageAngle = (angle: string, bounds: Bounds): Direction => { + const [left, top] = angle.split(' ').map(parseFloat); + const ratio = left / 100 * bounds.width / (top / 100 * bounds.height); + + return calculateGradientDirection(Math.atan(isNaN(ratio) ? 1 : ratio) + Math.PI / 2, bounds); +}; From 97b0a1f21d6040bfdcfd0851f1d9b7520ca04fc7 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 23:26:01 +0800 Subject: [PATCH 057/377] Fix reftest precision --- src/renderer/RefTestRenderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js index aa086a910..b00aca308 100644 --- a/src/renderer/RefTestRenderer.js +++ b/src/renderer/RefTestRenderer.js @@ -119,7 +119,7 @@ class RefTestRenderer implements RenderTarget { ]; const stops = gradient.colorStops.map( - stop => `${stop.color.toString()} ${Math.round(stop.stop * 100) / 100}` + stop => `${stop.color.toString()} ${Math.ceil(stop.stop * 100) / 100}` ); this.writeLine( From 42a87b8354b404074fd1f8b79d2dd1ed4b38e49c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 10 Aug 2017 23:26:22 +0800 Subject: [PATCH 058/377] Normalize reftests --- .../reftests/background/linear-gradient.html | 2 +- tests/reftests/background/linear-gradient.txt | 11 +- tests/reftests/border/inset.html | 2 + tests/reftests/border/inset.txt | 8 +- tests/reftests/crossorigin-iframe.html | 2 +- tests/reftests/forms.html | 12 +- tests/reftests/forms.txt | 482 ++- tests/reftests/list/decimal-leading-zero.html | 5 +- tests/reftests/list/decimal-leading-zero.txt | 804 ++--- tests/reftests/list/decimal.html | 5 +- tests/reftests/list/decimal.txt | 804 ++--- tests/reftests/list/lower-alpha.html | 5 +- tests/reftests/list/lower-alpha.txt | 804 ++--- tests/reftests/list/upper-roman.html | 5 +- tests/reftests/list/upper-roman.txt | 804 ++--- .../reftests/overflow/overflow-transform.html | 3 + .../reftests/overflow/overflow-transform.txt | 232 +- tests/reftests/overflow/overflow.html | 3 + tests/reftests/overflow/overflow.txt | 1020 +++--- tests/reftests/text/chinese.html | 2 +- tests/reftests/text/chinese.txt | 3062 ++++++++--------- tests/reftests/text/fontawesome.html | 1 - tests/reftests/text/fontawesome.txt | 118 +- tests/reftests/text/text.html | 20 + tests/reftests/text/text.txt | 450 +-- tests/reftests/text/underline-lineheight.html | 2 +- tests/reftests/text/underline-lineheight.txt | 444 +-- tests/reftests/text/underline.html | 5 +- tests/reftests/text/underline.txt | 388 +-- tests/reftests/visibility.html | 1 - tests/reftests/visibility.txt | 12 +- tests/testrunner.js | 6 +- 32 files changed, 3737 insertions(+), 5787 deletions(-) diff --git a/tests/reftests/background/linear-gradient.html b/tests/reftests/background/linear-gradient.html index e4e6c20c7..b778208c2 100644 --- a/tests/reftests/background/linear-gradient.html +++ b/tests/reftests/background/linear-gradient.html @@ -45,7 +45,7 @@ .linearGradient { /*background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 0, 0)), to(rgb(0, 0, 255)));*/ background: -webkit-linear-gradient(top left, #f00, #00f, #BADA55, rgba(0, 0, 255,0.5)); - background: -moz-linear-gradient(top right, #f00, #00f, #BADA55, rgba(0, 0, 255,0.5)); + background: -moz-linear-gradient(top left, #f00, #00f, #BADA55, rgba(0, 0, 255,0.5)); } .linearGradient2 { diff --git a/tests/reftests/background/linear-gradient.txt b/tests/reftests/background/linear-gradient.txt index 846ccf7ab..c94fc72f2 100644 --- a/tests/reftests/background/linear-gradient.txt +++ b/tests/reftests/background/linear-gradient.txt @@ -2,12 +2,13 @@ Window: [820, 1828] Rectangle: [0, 0, 820, 1828] rgb(255,0,0) Opacity: 1 Clip: Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 18, y: 220)) - Gradient: [18, 18, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(255,0,0) 0, rgb(0,0,255) 0.33, rgb(186,218,85) 0.67, rgba(0,0,255,0.5) 1) + Gradient: [18, 18, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(255,0,0) 0, rgb(0,0,255) 0.34, rgb(186,218,85) 0.67, rgba(0,0,255,0.5) 1) Shape: rgb(0,0,0) Path (Vector(x: 18, y: 18) > Vector(x: 230, y: 18) > Vector(x: 229, y: 19) > Vector(x: 19, y: 19)) Shape: rgb(0,0,0) Path (Vector(x: 230, y: 18) > Vector(x: 230, y: 220) > Vector(x: 229, y: 219) > Vector(x: 229, y: 19)) Shape: rgb(0,0,0) Path (Vector(x: 230, y: 220) > Vector(x: 18, y: 220) > Vector(x: 19, y: 219) > Vector(x: 229, y: 219)) Shape: rgb(0,0,0) Path (Vector(x: 18, y: 220) > Vector(x: 18, y: 18) > Vector(x: 19, y: 19) > Vector(x: 19, y: 219)) Clip: Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 250, y: 220)) + Gradient: [250, 18, 212, 202] linear-gradient(x0: 106, x1: 106, y0: 202, y1: 0 rgb(252,252,252) 0, rgb(232,232,232) 1) Shape: rgb(0,0,0) Path (Vector(x: 250, y: 18) > Vector(x: 462, y: 18) > Vector(x: 461, y: 19) > Vector(x: 251, y: 19)) Shape: rgb(0,0,0) Path (Vector(x: 462, y: 18) > Vector(x: 462, y: 220) > Vector(x: 461, y: 219) > Vector(x: 461, y: 19)) Shape: rgb(0,0,0) Path (Vector(x: 462, y: 220) > Vector(x: 250, y: 220) > Vector(x: 251, y: 219) > Vector(x: 461, y: 219)) @@ -49,25 +50,25 @@ Shape: rgb(0,0,0) Path (Vector(x: 462, y: 462) > Vector(x: 462, y: 664) > Vector Shape: rgb(0,0,0) Path (Vector(x: 462, y: 664) > Vector(x: 250, y: 664) > Vector(x: 251, y: 663) > Vector(x: 461, y: 663)) Shape: rgb(0,0,0) Path (Vector(x: 250, y: 664) > Vector(x: 250, y: 462) > Vector(x: 251, y: 463) > Vector(x: 251, y: 663)) Clip: Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 482, y: 664)) - Gradient: [482, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) + Gradient: [482, 462, 212, 202] linear-gradient(x0: 5, x1: 207, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1) Shape: rgb(0,0,0) Path (Vector(x: 482, y: 462) > Vector(x: 694, y: 462) > Vector(x: 693, y: 463) > Vector(x: 483, y: 463)) Shape: rgb(0,0,0) Path (Vector(x: 694, y: 462) > Vector(x: 694, y: 664) > Vector(x: 693, y: 663) > Vector(x: 693, y: 463)) Shape: rgb(0,0,0) Path (Vector(x: 694, y: 664) > Vector(x: 482, y: 664) > Vector(x: 483, y: 663) > Vector(x: 693, y: 663)) Shape: rgb(0,0,0) Path (Vector(x: 482, y: 664) > Vector(x: 482, y: 462) > Vector(x: 483, y: 463) > Vector(x: 483, y: 663)) Clip: Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 18, y: 886)) - Gradient: [18, 684, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) + Gradient: [18, 684, 212, 202] linear-gradient(x0: 5, x1: 207, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1) Shape: rgb(0,0,0) Path (Vector(x: 18, y: 684) > Vector(x: 230, y: 684) > Vector(x: 229, y: 685) > Vector(x: 19, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 230, y: 684) > Vector(x: 230, y: 886) > Vector(x: 229, y: 885) > Vector(x: 229, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 230, y: 886) > Vector(x: 18, y: 886) > Vector(x: 19, y: 885) > Vector(x: 229, y: 885)) Shape: rgb(0,0,0) Path (Vector(x: 18, y: 886) > Vector(x: 18, y: 684) > Vector(x: 19, y: 685) > Vector(x: 19, y: 885)) Clip: Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 250, y: 886)) - Gradient: [250, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) + Gradient: [250, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: 207, y1: -5 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1) Shape: rgb(0,0,0) Path (Vector(x: 250, y: 684) > Vector(x: 462, y: 684) > Vector(x: 461, y: 685) > Vector(x: 251, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 462, y: 684) > Vector(x: 462, y: 886) > Vector(x: 461, y: 885) > Vector(x: 461, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 462, y: 886) > Vector(x: 250, y: 886) > Vector(x: 251, y: 885) > Vector(x: 461, y: 885)) Shape: rgb(0,0,0) Path (Vector(x: 250, y: 886) > Vector(x: 250, y: 684) > Vector(x: 251, y: 685) > Vector(x: 251, y: 885)) Clip: Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 482, y: 886)) - Gradient: [482, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.66, rgba(0,0,0,0.5) 1) + Gradient: [482, 684, 212, 202] linear-gradient(x0: 207, x1: 5, y0: -5, y1: 207 rgb(0,0,255) 0, rgb(255,0,0) 0.17, rgb(0,128,0) 0.67, rgba(0,0,0,0.5) 1) Shape: rgb(0,0,0) Path (Vector(x: 482, y: 684) > Vector(x: 694, y: 684) > Vector(x: 693, y: 685) > Vector(x: 483, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 694, y: 684) > Vector(x: 694, y: 886) > Vector(x: 693, y: 885) > Vector(x: 693, y: 685)) Shape: rgb(0,0,0) Path (Vector(x: 694, y: 886) > Vector(x: 482, y: 886) > Vector(x: 483, y: 885) > Vector(x: 693, y: 885)) diff --git a/tests/reftests/border/inset.html b/tests/reftests/border/inset.html index 29e848339..8bdaa816b 100644 --- a/tests/reftests/border/inset.html +++ b/tests/reftests/border/inset.html @@ -40,6 +40,8 @@ input { border-width: 50px; + width: 200px; + border-color: rgb(0, 0, 0); } html { diff --git a/tests/reftests/border/inset.txt b/tests/reftests/border/inset.txt index 14f3351f3..f3ed09119 100644 --- a/tests/reftests/border/inset.txt +++ b/tests/reftests/border/inset.txt @@ -31,9 +31,9 @@ Shape: rgb(0,0,0) Path (Vector(x: 342, y: 258) > Vector(x: 642, y: 258) > Vector Shape: rgb(0,0,0) Path (Vector(x: 642, y: 258) > Vector(x: 642, y: 558) > Vector(x: 592, y: 508) > Vector(x: 592, y: 308)) Shape: rgb(0,0,0) Path (Vector(x: 642, y: 558) > Vector(x: 342, y: 558) > Vector(x: 392, y: 508) > Vector(x: 592, y: 508)) Shape: rgb(0,0,0) Path (Vector(x: 342, y: 558) > Vector(x: 342, y: 258) > Vector(x: 392, y: 308) > Vector(x: 392, y: 508)) -Clip: Path (Vector(x: 8, y: 568) > Vector(x: 273, y: 568) > Vector(x: 273, y: 685) > Vector(x: 8, y: 685)) +Clip: Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 308, y: 685) > Vector(x: 8, y: 685)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 568) > Vector(x: 273, y: 568) > Vector(x: 223, y: 618) > Vector(x: 58, y: 618)) -Shape: rgb(0,0,0) Path (Vector(x: 273, y: 568) > Vector(x: 273, y: 685) > Vector(x: 223, y: 635) > Vector(x: 223, y: 618)) -Shape: rgb(0,0,0) Path (Vector(x: 273, y: 685) > Vector(x: 8, y: 685) > Vector(x: 58, y: 635) > Vector(x: 223, y: 635)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 258, y: 618) > Vector(x: 58, y: 618)) +Shape: rgb(0,0,0) Path (Vector(x: 308, y: 568) > Vector(x: 308, y: 685) > Vector(x: 258, y: 635) > Vector(x: 258, y: 618)) +Shape: rgb(0,0,0) Path (Vector(x: 308, y: 685) > Vector(x: 8, y: 685) > Vector(x: 58, y: 635) > Vector(x: 258, y: 635)) Shape: rgb(0,0,0) Path (Vector(x: 8, y: 685) > Vector(x: 8, y: 568) > Vector(x: 58, y: 618) > Vector(x: 58, y: 635)) \ No newline at end of file diff --git a/tests/reftests/crossorigin-iframe.html b/tests/reftests/crossorigin-iframe.html index 2453146e7..dc49f58e1 100644 --- a/tests/reftests/crossorigin-iframe.html +++ b/tests/reftests/crossorigin-iframe.html @@ -8,6 +8,6 @@ - + diff --git a/tests/reftests/forms.html b/tests/reftests/forms.html index 424a028b5..3778b35ed 100644 --- a/tests/reftests/forms.html +++ b/tests/reftests/forms.html @@ -8,6 +8,14 @@ input[type="radio"], input[type="checkbox"] { margin: 10px; display: inline-block; + height: 20px; + + } + input[type="text"], input[type="password"], textarea, select { + height: 20px; + padding: 2px; + border-width: 2px; + width: 150px; } @@ -23,7 +31,6 @@ -
      -
      @@ -52,14 +58,12 @@ -
      -
      diff --git a/tests/reftests/forms.txt b/tests/reftests/forms.txt index cf3dab41d..b7f5abd15 100644 --- a/tests/reftests/forms.txt +++ b/tests/reftests/forms.txt @@ -1,310 +1,294 @@ -Window: [800, 1003] -Rectangle: [0, 0, 800, 1003] rgba(0,0,0,0) +Window: [800, 739] +Rectangle: [0, 0, 800, 739] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 138) > Vector(x: 792, y: 138) > Vector(x: 791, y: 139) > Vector(x: 9, y: 139)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 138) > Vector(x: 792, y: 140) > Vector(x: 791, y: 139) > Vector(x: 791, y: 139)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 140) > Vector(x: 8, y: 140) > Vector(x: 9, y: 139) > Vector(x: 791, y: 139)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 140) > Vector(x: 8, y: 138) > Vector(x: 9, y: 139) > Vector(x: 9, y: 139)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 176) > Vector(x: 792, y: 176) > Vector(x: 791, y: 177) > Vector(x: 9, y: 177)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 176) > Vector(x: 792, y: 178) > Vector(x: 791, y: 177) > Vector(x: 791, y: 177)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 178) > Vector(x: 8, y: 178) > Vector(x: 9, y: 177) > Vector(x: 791, y: 177)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 178) > Vector(x: 8, y: 176) > Vector(x: 9, y: 177) > Vector(x: 9, y: 177)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 244) > Vector(x: 792, y: 244) > Vector(x: 791, y: 245) > Vector(x: 9, y: 245)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 244) > Vector(x: 792, y: 246) > Vector(x: 791, y: 245) > Vector(x: 791, y: 245)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 246) > Vector(x: 8, y: 246) > Vector(x: 9, y: 245) > Vector(x: 791, y: 245)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 246) > Vector(x: 8, y: 244) > Vector(x: 9, y: 245) > Vector(x: 9, y: 245)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 321) > Vector(x: 792, y: 321) > Vector(x: 791, y: 322) > Vector(x: 9, y: 322)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 321) > Vector(x: 792, y: 323) > Vector(x: 791, y: 322) > Vector(x: 791, y: 322)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 323) > Vector(x: 8, y: 323) > Vector(x: 9, y: 322) > Vector(x: 791, y: 322)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 323) > Vector(x: 8, y: 321) > Vector(x: 9, y: 322) > Vector(x: 9, y: 322)) -Clip: Path (Vector(x: 8, y: 24) > Vector(x: 177, y: 24) > Vector(x: 177, y: 45) > Vector(x: 8, y: 45)) +Clip: Path (Vector(x: 8, y: 21) > Vector(x: 166, y: 21) > Vector(x: 166, y: 49) > Vector(x: 8, y: 49)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 24) > Vector(x: 177, y: 24) > Vector(x: 175, y: 26) > Vector(x: 10, y: 26)) -Shape: rgb(0,0,0) Path (Vector(x: 177, y: 24) > Vector(x: 177, y: 45) > Vector(x: 175, y: 43) > Vector(x: 175, y: 26)) -Shape: rgb(0,0,0) Path (Vector(x: 177, y: 45) > Vector(x: 8, y: 45) > Vector(x: 10, y: 43) > Vector(x: 175, y: 43)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 45) > Vector(x: 8, y: 24) > Vector(x: 10, y: 26) > Vector(x: 10, y: 43)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 21) > Vector(x: 166, y: 21) > Vector(x: 164, y: 23) > Vector(x: 10, y: 23)) +Shape: rgb(0,0,0) Path (Vector(x: 166, y: 21) > Vector(x: 166, y: 49) > Vector(x: 164, y: 47) > Vector(x: 164, y: 23)) +Shape: rgb(0,0,0) Path (Vector(x: 166, y: 49) > Vector(x: 8, y: 49) > Vector(x: 10, y: 47) > Vector(x: 164, y: 47)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 49) > Vector(x: 8, y: 21) > Vector(x: 10, y: 23) > Vector(x: 10, y: 47)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [10, 27]: textbox -Clip: Path (Vector(x: 181, y: 24) > Vector(x: 350, y: 24) > Vector(x: 350, y: 45) > Vector(x: 181, y: 45)) + [12, 25]: textbox +Clip: Path (Vector(x: 170, y: 21) > Vector(x: 328, y: 21) > Vector(x: 328, y: 49) > Vector(x: 170, y: 49)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 181, y: 24) > Vector(x: 350, y: 24) > Vector(x: 348, y: 26) > Vector(x: 183, y: 26)) -Shape: rgb(0,0,0) Path (Vector(x: 350, y: 24) > Vector(x: 350, y: 45) > Vector(x: 348, y: 43) > Vector(x: 348, y: 26)) -Shape: rgb(0,0,0) Path (Vector(x: 350, y: 45) > Vector(x: 181, y: 45) > Vector(x: 183, y: 43) > Vector(x: 348, y: 43)) -Shape: rgb(0,0,0) Path (Vector(x: 181, y: 45) > Vector(x: 181, y: 24) > Vector(x: 183, y: 26) > Vector(x: 183, y: 43)) +Shape: rgb(0,0,0) Path (Vector(x: 170, y: 21) > Vector(x: 328, y: 21) > Vector(x: 326, y: 23) > Vector(x: 172, y: 23)) +Shape: rgb(0,0,0) Path (Vector(x: 328, y: 21) > Vector(x: 328, y: 49) > Vector(x: 326, y: 47) > Vector(x: 326, y: 23)) +Shape: rgb(0,0,0) Path (Vector(x: 328, y: 49) > Vector(x: 170, y: 49) > Vector(x: 172, y: 47) > Vector(x: 326, y: 47)) +Shape: rgb(0,0,0) Path (Vector(x: 170, y: 49) > Vector(x: 170, y: 21) > Vector(x: 172, y: 23) > Vector(x: 172, y: 47)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [183, 27]: • - [188, 27]: • - [192, 27]: • - [197, 27]: • - [202, 27]: • - [206, 27]: • - [211, 27]: • -Clip: Path (Vector(x: 354, y: 20) > Vector(x: 528, y: 20) > Vector(x: 528, y: 48) > Vector(x: 354, y: 48)) + [174, 25]: • + [179, 25]: • + [183, 25]: • + [188, 25]: • + [193, 25]: • + [197, 25]: • + [202, 25]: • +Clip: Path (Vector(x: 332, y: 18) > Vector(x: 496, y: 18) > Vector(x: 496, y: 52) > Vector(x: 332, y: 52)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 354, y: 20) > Vector(x: 528, y: 20) > Vector(x: 523, y: 25) > Vector(x: 359, y: 25)) -Shape: rgb(0,0,128) Path (Vector(x: 528, y: 20) > Vector(x: 528, y: 48) > Vector(x: 523, y: 43) > Vector(x: 523, y: 25)) -Shape: rgb(0,0,128) Path (Vector(x: 528, y: 48) > Vector(x: 354, y: 48) > Vector(x: 359, y: 43) > Vector(x: 523, y: 43)) -Shape: rgb(0,0,128) Path (Vector(x: 354, y: 48) > Vector(x: 354, y: 20) > Vector(x: 359, y: 25) > Vector(x: 359, y: 43)) +Shape: rgb(0,0,128) Path (Vector(x: 332, y: 18) > Vector(x: 496, y: 18) > Vector(x: 491, y: 23) > Vector(x: 337, y: 23)) +Shape: rgb(0,0,128) Path (Vector(x: 496, y: 18) > Vector(x: 496, y: 52) > Vector(x: 491, y: 47) > Vector(x: 491, y: 23)) +Shape: rgb(0,0,128) Path (Vector(x: 496, y: 52) > Vector(x: 332, y: 52) > Vector(x: 337, y: 47) > Vector(x: 491, y: 47)) +Shape: rgb(0,0,128) Path (Vector(x: 332, y: 52) > Vector(x: 332, y: 18) > Vector(x: 337, y: 23) > Vector(x: 337, y: 47)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [359, 26]: textbox -Clip: Path (Vector(x: 532, y: 8) > Vector(x: 707, y: 8) > Vector(x: 707, y: 60) > Vector(x: 532, y: 60)) + [339, 25]: textbox +Clip: Path (Vector(x: 500, y: 8) > Vector(x: 664, y: 8) > Vector(x: 664, y: 62) > Vector(x: 500, y: 62)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 532, y: 8) > Vector(x: 707, y: 8) > Vector(x: 702, y: 13) > Vector(x: 537, y: 13)) -Shape: rgb(0,0,128) Path (Vector(x: 707, y: 8) > Vector(x: 707, y: 60) > Vector(x: 702, y: 55) > Vector(x: 702, y: 13)) -Shape: rgb(0,0,128) Path (Vector(x: 707, y: 60) > Vector(x: 532, y: 60) > Vector(x: 537, y: 55) > Vector(x: 702, y: 55)) -Shape: rgb(0,0,128) Path (Vector(x: 532, y: 60) > Vector(x: 532, y: 8) > Vector(x: 537, y: 13) > Vector(x: 537, y: 55)) +Shape: rgb(0,0,128) Path (Vector(x: 500, y: 8) > Vector(x: 664, y: 8) > Vector(x: 659, y: 13) > Vector(x: 505, y: 13)) +Shape: rgb(0,0,128) Path (Vector(x: 664, y: 8) > Vector(x: 664, y: 62) > Vector(x: 659, y: 57) > Vector(x: 659, y: 13)) +Shape: rgb(0,0,128) Path (Vector(x: 664, y: 62) > Vector(x: 500, y: 62) > Vector(x: 505, y: 57) > Vector(x: 659, y: 57)) +Shape: rgb(0,0,128) Path (Vector(x: 500, y: 62) > Vector(x: 500, y: 8) > Vector(x: 505, y: 13) > Vector(x: 505, y: 57)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [537, 14]: textbox -Clip: Path (Vector(x: 8, y: 60) > Vector(x: 203, y: 60) > Vector(x: 203, y: 130) > Vector(x: 8, y: 130)) + [507, 15]: textbox +Clip: Path (Vector(x: 8, y: 62) > Vector(x: 188, y: 62) > Vector(x: 188, y: 132) > Vector(x: 8, y: 132)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 8, y: 60) > Vector(x: 203, y: 60) > Vector(x: 198, y: 65) > Vector(x: 13, y: 65)) -Shape: rgb(0,0,128) Path (Vector(x: 203, y: 60) > Vector(x: 203, y: 130) > Vector(x: 198, y: 125) > Vector(x: 198, y: 65)) -Shape: rgb(0,0,128) Path (Vector(x: 203, y: 130) > Vector(x: 8, y: 130) > Vector(x: 13, y: 125) > Vector(x: 198, y: 125)) -Shape: rgb(0,0,128) Path (Vector(x: 8, y: 130) > Vector(x: 8, y: 60) > Vector(x: 13, y: 65) > Vector(x: 13, y: 125)) +Shape: rgb(0,0,128) Path (Vector(x: 8, y: 62) > Vector(x: 188, y: 62) > Vector(x: 183, y: 67) > Vector(x: 13, y: 67)) +Shape: rgb(0,0,128) Path (Vector(x: 188, y: 62) > Vector(x: 188, y: 132) > Vector(x: 183, y: 127) > Vector(x: 183, y: 67)) +Shape: rgb(0,0,128) Path (Vector(x: 188, y: 132) > Vector(x: 8, y: 132) > Vector(x: 13, y: 127) > Vector(x: 183, y: 127)) +Shape: rgb(0,0,128) Path (Vector(x: 8, y: 132) > Vector(x: 8, y: 62) > Vector(x: 13, y: 67) > Vector(x: 13, y: 127)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [23, 75]: textbox -Clip: Path (Vector(x: 207, y: 75) > Vector(x: 396, y: 75) > Vector(x: 396, y: 114) > Vector(x: 207, y: 114)) + [23, 77]: textbox +Clip: Path (Vector(x: 192, y: 75) > Vector(x: 366, y: 75) > Vector(x: 366, y: 119) > Vector(x: 192, y: 119)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 207, y: 75) > Vector(x: 396, y: 75) > Vector(x: 394, y: 77) > Vector(x: 209, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 396, y: 75) > Vector(x: 396, y: 114) > Vector(x: 394, y: 112) > Vector(x: 394, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 396, y: 114) > Vector(x: 207, y: 114) > Vector(x: 209, y: 112) > Vector(x: 394, y: 112)) -Shape: rgb(0,0,0) Path (Vector(x: 207, y: 114) > Vector(x: 207, y: 75) > Vector(x: 209, y: 77) > Vector(x: 209, y: 112)) +Shape: rgb(0,0,0) Path (Vector(x: 192, y: 75) > Vector(x: 366, y: 75) > Vector(x: 364, y: 77) > Vector(x: 194, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 366, y: 75) > Vector(x: 366, y: 119) > Vector(x: 364, y: 117) > Vector(x: 364, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 366, y: 119) > Vector(x: 192, y: 119) > Vector(x: 194, y: 117) > Vector(x: 364, y: 117)) +Shape: rgb(0,0,0) Path (Vector(x: 192, y: 119) > Vector(x: 192, y: 75) > Vector(x: 194, y: 77) > Vector(x: 194, y: 117)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [219, 87]: textbox -Clip: Path (Vector(x: 400, y: 75) > Vector(x: 588, y: 75) > Vector(x: 588, y: 114) > Vector(x: 400, y: 114)) + [204, 87]: textbox +Clip: Path (Vector(x: 370, y: 75) > Vector(x: 544, y: 75) > Vector(x: 544, y: 119) > Vector(x: 370, y: 119)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 400, y: 75) > Vector(x: 588, y: 75) > Vector(x: 586, y: 77) > Vector(x: 402, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 588, y: 75) > Vector(x: 588, y: 114) > Vector(x: 586, y: 112) > Vector(x: 586, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 588, y: 114) > Vector(x: 400, y: 114) > Vector(x: 402, y: 112) > Vector(x: 586, y: 112)) -Shape: rgb(0,0,0) Path (Vector(x: 400, y: 114) > Vector(x: 400, y: 75) > Vector(x: 402, y: 77) > Vector(x: 402, y: 112)) +Shape: rgb(0,0,0) Path (Vector(x: 370, y: 75) > Vector(x: 544, y: 75) > Vector(x: 542, y: 77) > Vector(x: 372, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 544, y: 75) > Vector(x: 544, y: 119) > Vector(x: 542, y: 117) > Vector(x: 542, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 544, y: 119) > Vector(x: 370, y: 119) > Vector(x: 372, y: 117) > Vector(x: 542, y: 117)) +Shape: rgb(0,0,0) Path (Vector(x: 370, y: 119) > Vector(x: 370, y: 75) > Vector(x: 372, y: 77) > Vector(x: 372, y: 117)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [533, 87]: textbox -Clip: Path (Vector(x: 8, y: 149) > Vector(x: 76, y: 149) > Vector(x: 76, y: 168) > Vector(x: 8, y: 168)) + [489, 87]: textbox +Clip: Path (Vector(x: 548, y: 84) > Vector(x: 698, y: 84) > Vector(x: 698, y: 104) > Vector(x: 548, y: 104)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 149) > Vector(x: 76, y: 149) > Vector(x: 75, y: 150) > Vector(x: 9, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 76, y: 149) > Vector(x: 76, y: 168) > Vector(x: 75, y: 167) > Vector(x: 75, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 76, y: 168) > Vector(x: 8, y: 168) > Vector(x: 9, y: 167) > Vector(x: 75, y: 167)) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 168) > Vector(x: 8, y: 149) > Vector(x: 9, y: 150) > Vector(x: 9, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 548, y: 84) > Vector(x: 698, y: 84) > Vector(x: 696, y: 86) > Vector(x: 550, y: 86)) +Shape: rgb(169,169,169) Path (Vector(x: 698, y: 84) > Vector(x: 698, y: 104) > Vector(x: 696, y: 102) > Vector(x: 696, y: 86)) +Shape: rgb(169,169,169) Path (Vector(x: 698, y: 104) > Vector(x: 548, y: 104) > Vector(x: 550, y: 102) > Vector(x: 696, y: 102)) +Shape: rgb(169,169,169) Path (Vector(x: 548, y: 104) > Vector(x: 548, y: 84) > Vector(x: 550, y: 86) > Vector(x: 550, y: 102)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [9, 150]: Value - [46, 150]: 1 -Clip: Path (Vector(x: 80, y: 149) > Vector(x: 104, y: 149) > Vector(x: 104, y: 168) > Vector(x: 80, y: 168)) + [552, 88]: Value + [589, 88]: 1 +Clip: Path (Vector(x: 8, y: 132) > Vector(x: 158, y: 132) > Vector(x: 158, y: 152) > Vector(x: 8, y: 152)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 80, y: 149) > Vector(x: 104, y: 149) > Vector(x: 103, y: 150) > Vector(x: 81, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 104, y: 149) > Vector(x: 104, y: 168) > Vector(x: 103, y: 167) > Vector(x: 103, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 104, y: 168) > Vector(x: 80, y: 168) > Vector(x: 81, y: 167) > Vector(x: 103, y: 167)) -Shape: rgb(169,169,169) Path (Vector(x: 80, y: 168) > Vector(x: 80, y: 149) > Vector(x: 81, y: 150) > Vector(x: 81, y: 167)) -Clip: Path (Vector(x: 108, y: 149) > Vector(x: 140, y: 149) > Vector(x: 140, y: 168) > Vector(x: 108, y: 168)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 132) > Vector(x: 158, y: 132) > Vector(x: 156, y: 134) > Vector(x: 10, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 158, y: 132) > Vector(x: 158, y: 152) > Vector(x: 156, y: 150) > Vector(x: 156, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 158, y: 152) > Vector(x: 8, y: 152) > Vector(x: 10, y: 150) > Vector(x: 156, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 152) > Vector(x: 8, y: 132) > Vector(x: 10, y: 134) > Vector(x: 10, y: 150)) +Clip: Path (Vector(x: 162, y: 132) > Vector(x: 312, y: 132) > Vector(x: 312, y: 152) > Vector(x: 162, y: 152)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 108, y: 149) > Vector(x: 140, y: 149) > Vector(x: 139, y: 150) > Vector(x: 109, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 140, y: 149) > Vector(x: 140, y: 168) > Vector(x: 139, y: 167) > Vector(x: 139, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 140, y: 168) > Vector(x: 108, y: 168) > Vector(x: 109, y: 167) > Vector(x: 139, y: 167)) -Shape: rgb(169,169,169) Path (Vector(x: 108, y: 168) > Vector(x: 108, y: 149) > Vector(x: 109, y: 150) > Vector(x: 109, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 162, y: 132) > Vector(x: 312, y: 132) > Vector(x: 310, y: 134) > Vector(x: 164, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 312, y: 132) > Vector(x: 312, y: 152) > Vector(x: 310, y: 150) > Vector(x: 310, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 312, y: 152) > Vector(x: 162, y: 152) > Vector(x: 164, y: 150) > Vector(x: 310, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 162, y: 152) > Vector(x: 162, y: 132) > Vector(x: 164, y: 134) > Vector(x: 164, y: 150)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [109, 150]: 2 -Clip: Path (Vector(x: 144, y: 149) > Vector(x: 333, y: 149) > Vector(x: 333, y: 168) > Vector(x: 144, y: 168)) + [166, 136]: 2 +Clip: Path (Vector(x: 316, y: 132) > Vector(x: 466, y: 132) > Vector(x: 466, y: 152) > Vector(x: 316, y: 152)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 144, y: 149) > Vector(x: 333, y: 149) > Vector(x: 332, y: 150) > Vector(x: 145, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 333, y: 149) > Vector(x: 333, y: 168) > Vector(x: 332, y: 167) > Vector(x: 332, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 333, y: 168) > Vector(x: 144, y: 168) > Vector(x: 145, y: 167) > Vector(x: 332, y: 167)) -Shape: rgb(169,169,169) Path (Vector(x: 144, y: 168) > Vector(x: 144, y: 149) > Vector(x: 145, y: 150) > Vector(x: 145, y: 167)) +Shape: rgb(169,169,169) Path (Vector(x: 316, y: 132) > Vector(x: 466, y: 132) > Vector(x: 464, y: 134) > Vector(x: 318, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 466, y: 132) > Vector(x: 466, y: 152) > Vector(x: 464, y: 150) > Vector(x: 464, y: 134)) +Shape: rgb(169,169,169) Path (Vector(x: 466, y: 152) > Vector(x: 316, y: 152) > Vector(x: 318, y: 150) > Vector(x: 464, y: 150)) +Shape: rgb(169,169,169) Path (Vector(x: 316, y: 152) > Vector(x: 316, y: 132) > Vector(x: 318, y: 134) > Vector(x: 318, y: 150)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [145, 150]: Value - [182, 150]: 2 - [193, 150]: with - [220, 150]: something - [286, 150]: else -Clip: Path (Vector(x: 8, y: 200) > Vector(x: 65, y: 200) > Vector(x: 65, y: 221) > Vector(x: 8, y: 221)) + [320, 136]: Value + [357, 136]: 2 + [368, 136]: with + [395, 136]: something + [460, 136]: else +Clip: Path (Vector(x: 470, y: 134) > Vector(x: 527, y: 134) > Vector(x: 527, y: 155) > Vector(x: 470, y: 155)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 8, y: 200) > Vector(x: 65, y: 200) > Vector(x: 63, y: 202) > Vector(x: 10, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 65, y: 200) > Vector(x: 65, y: 221) > Vector(x: 63, y: 219) > Vector(x: 63, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 65, y: 221) > Vector(x: 8, y: 221) > Vector(x: 10, y: 219) > Vector(x: 63, y: 219)) -Shape: rgb(221,221,221) Path (Vector(x: 8, y: 221) > Vector(x: 8, y: 200) > Vector(x: 10, y: 202) > Vector(x: 10, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 470, y: 134) > Vector(x: 527, y: 134) > Vector(x: 525, y: 136) > Vector(x: 472, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 527, y: 134) > Vector(x: 527, y: 155) > Vector(x: 525, y: 153) > Vector(x: 525, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 527, y: 155) > Vector(x: 470, y: 155) > Vector(x: 472, y: 153) > Vector(x: 525, y: 153)) +Shape: rgb(221,221,221) Path (Vector(x: 470, y: 155) > Vector(x: 470, y: 134) > Vector(x: 472, y: 136) > Vector(x: 472, y: 153)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [16, 203]: Submit -Clip: Path (Vector(x: 69, y: 200) > Vector(x: 124, y: 200) > Vector(x: 124, y: 221) > Vector(x: 69, y: 221)) + [478, 137]: Submit +Clip: Path (Vector(x: 531, y: 134) > Vector(x: 586, y: 134) > Vector(x: 586, y: 155) > Vector(x: 531, y: 155)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 69, y: 200) > Vector(x: 124, y: 200) > Vector(x: 122, y: 202) > Vector(x: 71, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 124, y: 200) > Vector(x: 124, y: 221) > Vector(x: 122, y: 219) > Vector(x: 122, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 124, y: 221) > Vector(x: 69, y: 221) > Vector(x: 71, y: 219) > Vector(x: 122, y: 219)) -Shape: rgb(221,221,221) Path (Vector(x: 69, y: 221) > Vector(x: 69, y: 200) > Vector(x: 71, y: 202) > Vector(x: 71, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 531, y: 134) > Vector(x: 586, y: 134) > Vector(x: 584, y: 136) > Vector(x: 533, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 586, y: 134) > Vector(x: 586, y: 155) > Vector(x: 584, y: 153) > Vector(x: 584, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 586, y: 155) > Vector(x: 531, y: 155) > Vector(x: 533, y: 153) > Vector(x: 584, y: 153)) +Shape: rgb(221,221,221) Path (Vector(x: 531, y: 155) > Vector(x: 531, y: 134) > Vector(x: 533, y: 136) > Vector(x: 533, y: 153)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [77, 203]: Button -Clip: Path (Vector(x: 128, y: 200) > Vector(x: 179, y: 200) > Vector(x: 179, y: 221) > Vector(x: 128, y: 221)) + [539, 137]: Button +Clip: Path (Vector(x: 590, y: 134) > Vector(x: 641, y: 134) > Vector(x: 641, y: 155) > Vector(x: 590, y: 155)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 128, y: 200) > Vector(x: 179, y: 200) > Vector(x: 177, y: 202) > Vector(x: 130, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 179, y: 200) > Vector(x: 179, y: 221) > Vector(x: 177, y: 219) > Vector(x: 177, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 179, y: 221) > Vector(x: 128, y: 221) > Vector(x: 130, y: 219) > Vector(x: 177, y: 219)) -Shape: rgb(221,221,221) Path (Vector(x: 128, y: 221) > Vector(x: 128, y: 200) > Vector(x: 130, y: 202) > Vector(x: 130, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 590, y: 134) > Vector(x: 641, y: 134) > Vector(x: 639, y: 136) > Vector(x: 592, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 641, y: 134) > Vector(x: 641, y: 155) > Vector(x: 639, y: 153) > Vector(x: 639, y: 136)) +Shape: rgb(221,221,221) Path (Vector(x: 641, y: 155) > Vector(x: 590, y: 155) > Vector(x: 592, y: 153) > Vector(x: 639, y: 153)) +Shape: rgb(221,221,221) Path (Vector(x: 590, y: 155) > Vector(x: 590, y: 134) > Vector(x: 592, y: 136) > Vector(x: 592, y: 153)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [136, 203]: Reset -Clip: Path (Vector(x: 183, y: 200) > Vector(x: 383, y: 200) > Vector(x: 383, y: 221) > Vector(x: 183, y: 221)) + [598, 137]: Reset +Clip: Path (Vector(x: 8, y: 170) > Vector(x: 208, y: 170) > Vector(x: 208, y: 191) > Vector(x: 8, y: 191)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 183, y: 200) > Vector(x: 383, y: 200) > Vector(x: 381, y: 202) > Vector(x: 185, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 383, y: 200) > Vector(x: 383, y: 221) > Vector(x: 381, y: 219) > Vector(x: 381, y: 202)) -Shape: rgb(221,221,221) Path (Vector(x: 383, y: 221) > Vector(x: 183, y: 221) > Vector(x: 185, y: 219) > Vector(x: 381, y: 219)) -Shape: rgb(221,221,221) Path (Vector(x: 183, y: 221) > Vector(x: 183, y: 200) > Vector(x: 185, y: 202) > Vector(x: 185, y: 219)) +Shape: rgb(221,221,221) Path (Vector(x: 8, y: 170) > Vector(x: 208, y: 170) > Vector(x: 206, y: 172) > Vector(x: 10, y: 172)) +Shape: rgb(221,221,221) Path (Vector(x: 208, y: 170) > Vector(x: 208, y: 191) > Vector(x: 206, y: 189) > Vector(x: 206, y: 172)) +Shape: rgb(221,221,221) Path (Vector(x: 208, y: 191) > Vector(x: 8, y: 191) > Vector(x: 10, y: 189) > Vector(x: 206, y: 189)) +Shape: rgb(221,221,221) Path (Vector(x: 8, y: 191) > Vector(x: 8, y: 170) > Vector(x: 10, y: 172) > Vector(x: 10, y: 189)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [262, 203]: Submit -Clip: Path (Vector(x: 387, y: 186) > Vector(x: 587, y: 186) > Vector(x: 587, y: 236) > Vector(x: 387, y: 236)) + [87, 173]: Submit +Clip: Path (Vector(x: 212, y: 155) > Vector(x: 412, y: 155) > Vector(x: 412, y: 205) > Vector(x: 212, y: 205)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 387, y: 186) > Vector(x: 587, y: 186) > Vector(x: 585, y: 188) > Vector(x: 389, y: 188)) -Shape: rgb(221,221,221) Path (Vector(x: 587, y: 186) > Vector(x: 587, y: 236) > Vector(x: 585, y: 234) > Vector(x: 585, y: 188)) -Shape: rgb(221,221,221) Path (Vector(x: 587, y: 236) > Vector(x: 387, y: 236) > Vector(x: 389, y: 234) > Vector(x: 585, y: 234)) -Shape: rgb(221,221,221) Path (Vector(x: 387, y: 236) > Vector(x: 387, y: 186) > Vector(x: 389, y: 188) > Vector(x: 389, y: 234)) +Shape: rgb(221,221,221) Path (Vector(x: 212, y: 155) > Vector(x: 412, y: 155) > Vector(x: 410, y: 157) > Vector(x: 214, y: 157)) +Shape: rgb(221,221,221) Path (Vector(x: 412, y: 155) > Vector(x: 412, y: 205) > Vector(x: 410, y: 203) > Vector(x: 410, y: 157)) +Shape: rgb(221,221,221) Path (Vector(x: 412, y: 205) > Vector(x: 212, y: 205) > Vector(x: 214, y: 203) > Vector(x: 410, y: 203)) +Shape: rgb(221,221,221) Path (Vector(x: 212, y: 205) > Vector(x: 212, y: 155) > Vector(x: 214, y: 157) > Vector(x: 214, y: 203)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [468, 189]: Button -Clip: Path (Vector(x: 591, y: 186) > Vector(x: 791, y: 186) > Vector(x: 791, y: 236) > Vector(x: 591, y: 236)) + [293, 158]: Button +Clip: Path (Vector(x: 416, y: 155) > Vector(x: 616, y: 155) > Vector(x: 616, y: 205) > Vector(x: 416, y: 205)) Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 591, y: 186) > Vector(x: 791, y: 186) > Vector(x: 789, y: 188) > Vector(x: 593, y: 188)) -Shape: rgb(221,221,221) Path (Vector(x: 791, y: 186) > Vector(x: 791, y: 236) > Vector(x: 789, y: 234) > Vector(x: 789, y: 188)) -Shape: rgb(221,221,221) Path (Vector(x: 791, y: 236) > Vector(x: 591, y: 236) > Vector(x: 593, y: 234) > Vector(x: 789, y: 234)) -Shape: rgb(221,221,221) Path (Vector(x: 591, y: 236) > Vector(x: 591, y: 186) > Vector(x: 593, y: 188) > Vector(x: 593, y: 234)) +Shape: rgb(221,221,221) Path (Vector(x: 416, y: 155) > Vector(x: 616, y: 155) > Vector(x: 614, y: 157) > Vector(x: 418, y: 157)) +Shape: rgb(221,221,221) Path (Vector(x: 616, y: 155) > Vector(x: 616, y: 205) > Vector(x: 614, y: 203) > Vector(x: 614, y: 157)) +Shape: rgb(221,221,221) Path (Vector(x: 616, y: 205) > Vector(x: 416, y: 205) > Vector(x: 418, y: 203) > Vector(x: 614, y: 203)) +Shape: rgb(221,221,221) Path (Vector(x: 416, y: 205) > Vector(x: 416, y: 155) > Vector(x: 418, y: 157) > Vector(x: 418, y: 203)) Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [599, 189]: Reset -Clip: Path (Vector(x: 8, y: 272) > Vector(x: 165, y: 272) > Vector(x: 165, y: 309) > Vector(x: 8, y: 309)) + [424, 158]: Reset +Clip: Path (Vector(x: 620, y: 156) > Vector(x: 778, y: 156) > Vector(x: 778, y: 184) > Vector(x: 620, y: 184)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 272) > Vector(x: 165, y: 272) > Vector(x: 164, y: 273) > Vector(x: 9, y: 273)) -Shape: rgb(169,169,169) Path (Vector(x: 165, y: 272) > Vector(x: 165, y: 309) > Vector(x: 164, y: 308) > Vector(x: 164, y: 273)) -Shape: rgb(169,169,169) Path (Vector(x: 165, y: 309) > Vector(x: 8, y: 309) > Vector(x: 9, y: 308) > Vector(x: 164, y: 308)) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 309) > Vector(x: 8, y: 272) > Vector(x: 9, y: 273) > Vector(x: 9, y: 308)) +Shape: rgb(169,169,169) Path (Vector(x: 620, y: 156) > Vector(x: 778, y: 156) > Vector(x: 776, y: 158) > Vector(x: 622, y: 158)) +Shape: rgb(169,169,169) Path (Vector(x: 778, y: 156) > Vector(x: 778, y: 184) > Vector(x: 776, y: 182) > Vector(x: 776, y: 158)) +Shape: rgb(169,169,169) Path (Vector(x: 778, y: 184) > Vector(x: 620, y: 184) > Vector(x: 622, y: 182) > Vector(x: 776, y: 182)) +Shape: rgb(169,169,169) Path (Vector(x: 620, y: 184) > Vector(x: 620, y: 156) > Vector(x: 622, y: 158) > Vector(x: 622, y: 182)) Text: rgb(0,0,0) normal normal 400 13.3333px monospace -Clip: Path (Vector(x: 169, y: 254) > Vector(x: 344, y: 254) > Vector(x: 344, y: 309) > Vector(x: 169, y: 309)) +Clip: Path (Vector(x: 8, y: 205) > Vector(x: 182, y: 205) > Vector(x: 182, y: 249) > Vector(x: 8, y: 249)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 169, y: 254) > Vector(x: 344, y: 254) > Vector(x: 334, y: 264) > Vector(x: 179, y: 264)) -Shape: rgb(169,169,169) Path (Vector(x: 344, y: 254) > Vector(x: 344, y: 309) > Vector(x: 334, y: 299) > Vector(x: 334, y: 264)) -Shape: rgb(169,169,169) Path (Vector(x: 344, y: 309) > Vector(x: 169, y: 309) > Vector(x: 179, y: 299) > Vector(x: 334, y: 299)) -Shape: rgb(169,169,169) Path (Vector(x: 169, y: 309) > Vector(x: 169, y: 254) > Vector(x: 179, y: 264) > Vector(x: 179, y: 299)) -Clip: Path (Vector(x: 348, y: 272) > Vector(x: 504, y: 272) > Vector(x: 504, y: 309) > Vector(x: 348, y: 309)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 205) > Vector(x: 182, y: 205) > Vector(x: 172, y: 215) > Vector(x: 18, y: 215)) +Shape: rgb(169,169,169) Path (Vector(x: 182, y: 205) > Vector(x: 182, y: 249) > Vector(x: 172, y: 239) > Vector(x: 172, y: 215)) +Shape: rgb(169,169,169) Path (Vector(x: 182, y: 249) > Vector(x: 8, y: 249) > Vector(x: 18, y: 239) > Vector(x: 172, y: 239)) +Shape: rgb(169,169,169) Path (Vector(x: 8, y: 249) > Vector(x: 8, y: 205) > Vector(x: 18, y: 215) > Vector(x: 18, y: 239)) +Clip: Path (Vector(x: 186, y: 221) > Vector(x: 344, y: 221) > Vector(x: 344, y: 249) > Vector(x: 186, y: 249)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 348, y: 272) > Vector(x: 504, y: 272) > Vector(x: 503, y: 273) > Vector(x: 349, y: 273)) -Shape: rgb(169,169,169) Path (Vector(x: 504, y: 272) > Vector(x: 504, y: 309) > Vector(x: 503, y: 308) > Vector(x: 503, y: 273)) -Shape: rgb(169,169,169) Path (Vector(x: 504, y: 309) > Vector(x: 348, y: 309) > Vector(x: 349, y: 308) > Vector(x: 503, y: 308)) -Shape: rgb(169,169,169) Path (Vector(x: 348, y: 309) > Vector(x: 348, y: 272) > Vector(x: 349, y: 273) > Vector(x: 349, y: 308)) +Shape: rgb(169,169,169) Path (Vector(x: 186, y: 221) > Vector(x: 344, y: 221) > Vector(x: 342, y: 223) > Vector(x: 188, y: 223)) +Shape: rgb(169,169,169) Path (Vector(x: 344, y: 221) > Vector(x: 344, y: 249) > Vector(x: 342, y: 247) > Vector(x: 342, y: 223)) +Shape: rgb(169,169,169) Path (Vector(x: 344, y: 249) > Vector(x: 186, y: 249) > Vector(x: 188, y: 247) > Vector(x: 342, y: 247)) +Shape: rgb(169,169,169) Path (Vector(x: 186, y: 249) > Vector(x: 186, y: 221) > Vector(x: 188, y: 223) > Vector(x: 188, y: 247)) Text: rgb(0,0,0) normal normal 400 13.3333px monospace - [358, 275]: text -Clip: Path (Vector(x: 508, y: 254) > Vector(x: 683, y: 254) > Vector(x: 683, y: 309) > Vector(x: 508, y: 309)) + [197, 225]: text +Clip: Path (Vector(x: 348, y: 205) > Vector(x: 522, y: 205) > Vector(x: 522, y: 249) > Vector(x: 348, y: 249)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 508, y: 254) > Vector(x: 683, y: 254) > Vector(x: 673, y: 264) > Vector(x: 518, y: 264)) -Shape: rgb(169,169,169) Path (Vector(x: 683, y: 254) > Vector(x: 683, y: 309) > Vector(x: 673, y: 299) > Vector(x: 673, y: 264)) -Shape: rgb(169,169,169) Path (Vector(x: 683, y: 309) > Vector(x: 508, y: 309) > Vector(x: 518, y: 299) > Vector(x: 673, y: 299)) -Shape: rgb(169,169,169) Path (Vector(x: 508, y: 309) > Vector(x: 508, y: 254) > Vector(x: 518, y: 264) > Vector(x: 518, y: 299)) +Shape: rgb(169,169,169) Path (Vector(x: 348, y: 205) > Vector(x: 522, y: 205) > Vector(x: 512, y: 215) > Vector(x: 358, y: 215)) +Shape: rgb(169,169,169) Path (Vector(x: 522, y: 205) > Vector(x: 522, y: 249) > Vector(x: 512, y: 239) > Vector(x: 512, y: 215)) +Shape: rgb(169,169,169) Path (Vector(x: 522, y: 249) > Vector(x: 348, y: 249) > Vector(x: 358, y: 239) > Vector(x: 512, y: 239)) +Shape: rgb(169,169,169) Path (Vector(x: 348, y: 249) > Vector(x: 348, y: 205) > Vector(x: 358, y: 215) > Vector(x: 358, y: 239)) Text: rgb(0,0,0) normal normal 400 13.3333px monospace - [520, 266]: text -Clip: Path (BezierCurve(x0: 19, y0: 534, x1: 24, y1: 529, cx0: 19, cy0: 531, cx1: 21, cy1: 529) > BezierCurve(x0: 24, y0: 529, x1: 30, y1: 534, cx0: 27, cy0: 529, cx1: 30, cy1: 531) > BezierCurve(x0: 30, y0: 534, x1: 24, y1: 540, cx0: 30, cy0: 537, cx1: 27, cy1: 540) > BezierCurve(x0: 24, y0: 540, x1: 19, y1: 534, cx0: 21, cy0: 540, cx1: 19, cy1: 537)) + [360, 217]: text +Clip: Path (BezierCurve(x0: 537, y0: 239, x1: 542, y1: 234, cx0: 537, cy0: 236, cx1: 539, cy1: 234) > BezierCurve(x0: 542, y0: 234, x1: 548, y1: 239, cx0: 545, cy0: 234, cx1: 548, cy1: 236) > BezierCurve(x0: 548, y0: 239, x1: 542, y1: 245, cx0: 548, cy0: 242, cx1: 545, cy1: 245) > BezierCurve(x0: 542, y0: 245, x1: 537, y1: 239, cx0: 539, cy0: 245, cx1: 537, cy1: 242)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 20, y0: 530, x1: 24, y1: 528, cx0: 21, cy0: 529, cx1: 23, cy1: 528) > BezierCurve(x0: 24, y0: 528, x1: 29, y1: 530, cx0: 26, cy0: 528, cx1: 28, cy1: 529) > BezierCurve(x0: 28, y0: 531, x1: 24, y1: 529, cx0: 27, cy0: 530, cx1: 26, cy1: 529) > BezierCurve(x0: 24, y0: 529, x1: 21, y1: 531, cx0: 23, cy0: 529, cx1: 22, cy1: 530)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 29, y0: 530, x1: 31, y1: 534, cx0: 30, cy0: 531, cx1: 31, cy1: 533) > BezierCurve(x0: 31, y0: 534, x1: 29, y1: 539, cx0: 31, cy0: 536, cx1: 30, cy1: 538) > BezierCurve(x0: 28, y0: 538, x1: 30, y1: 534, cx0: 29, cy0: 537, cx1: 30, cy1: 536) > BezierCurve(x0: 30, y0: 534, x1: 28, y1: 531, cx0: 30, cy0: 533, cx1: 29, cy1: 532)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 29, y0: 539, x1: 24, y1: 541, cx0: 28, cy0: 540, cx1: 26, cy1: 541) > BezierCurve(x0: 24, y0: 541, x1: 20, y1: 539, cx0: 23, cy0: 541, cx1: 21, cy1: 540) > BezierCurve(x0: 21, y0: 538, x1: 24, y1: 540, cx0: 22, cy0: 539, cx1: 23, cy1: 540) > BezierCurve(x0: 24, y0: 540, x1: 28, y1: 538, cx0: 26, cy0: 540, cx1: 27, cy1: 539)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 20, y0: 539, x1: 18, y1: 534, cx0: 19, cy0: 538, cx1: 18, cy1: 536) > BezierCurve(x0: 18, y0: 534, x1: 20, y1: 530, cx0: 18, cy0: 533, cx1: 19, cy1: 531) > BezierCurve(x0: 21, y0: 531, x1: 19, y1: 534, cx0: 20, cy0: 532, cx1: 19, cy1: 533) > BezierCurve(x0: 19, y0: 534, x1: 21, y1: 538, cx0: 19, cy0: 536, cx1: 20, cy1: 537)) -Clip: Path (BezierCurve(x0: 93, y0: 534, x1: 98, y1: 529, cx0: 93, cy0: 531, cx1: 95, cy1: 529) > BezierCurve(x0: 98, y0: 529, x1: 103, y1: 534, cx0: 101, cy0: 529, cx1: 103, cy1: 531) > BezierCurve(x0: 103, y0: 534, x1: 98, y1: 540, cx0: 103, cy0: 537, cx1: 101, cy1: 540) > BezierCurve(x0: 98, y0: 540, x1: 93, y1: 534, cx0: 95, cy0: 540, cx1: 93, cy1: 537)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 538, y0: 235, x1: 542, y1: 233, cx0: 539, cy0: 234, cx1: 541, cy1: 233) > BezierCurve(x0: 542, y0: 233, x1: 547, y1: 235, cx0: 544, cy0: 233, cx1: 546, cy1: 234) > BezierCurve(x0: 546, y0: 235, x1: 542, y1: 234, cx0: 545, cy0: 234, cx1: 544, cy1: 234) > BezierCurve(x0: 542, y0: 234, x1: 539, y1: 235, cx0: 541, cy0: 234, cx1: 540, cy1: 234)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 547, y0: 235, x1: 549, y1: 239, cx0: 548, cy0: 236, cx1: 549, cy1: 237) > BezierCurve(x0: 549, y0: 239, x1: 547, y1: 244, cx0: 549, cy0: 241, cx1: 548, cy1: 243) > BezierCurve(x0: 546, y0: 243, x1: 548, y1: 239, cx0: 547, cy0: 242, cx1: 548, cy1: 241) > BezierCurve(x0: 548, y0: 239, x1: 546, y1: 235, cx0: 548, cy0: 238, cx1: 547, cy1: 236)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 547, y0: 244, x1: 542, y1: 246, cx0: 546, cy0: 245, cx1: 544, cy1: 246) > BezierCurve(x0: 542, y0: 246, x1: 538, y1: 244, cx0: 541, cy0: 246, cx1: 539, cy1: 245) > BezierCurve(x0: 539, y0: 243, x1: 542, y1: 245, cx0: 540, cy0: 244, cx1: 541, cy1: 245) > BezierCurve(x0: 542, y0: 245, x1: 546, y1: 243, cx0: 544, cy0: 245, cx1: 545, cy1: 244)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 538, y0: 244, x1: 536, y1: 239, cx0: 537, cy0: 243, cx1: 536, cy1: 241) > BezierCurve(x0: 536, y0: 239, x1: 538, y1: 235, cx0: 536, cy0: 237, cx1: 537, cy1: 236) > BezierCurve(x0: 539, y0: 235, x1: 537, y1: 239, cx0: 538, cy0: 236, cx1: 537, cy1: 238) > BezierCurve(x0: 537, y0: 239, x1: 539, y1: 243, cx0: 537, cy0: 241, cx1: 538, cy1: 242)) +Clip: Path (BezierCurve(x0: 611, y0: 239, x1: 616, y1: 234, cx0: 611, cy0: 236, cx1: 613, cy1: 234) > BezierCurve(x0: 616, y0: 234, x1: 621, y1: 239, cx0: 619, cy0: 234, cx1: 621, cy1: 236) > BezierCurve(x0: 621, y0: 239, x1: 616, y1: 245, cx0: 621, cy0: 242, cx1: 619, cy1: 245) > BezierCurve(x0: 616, y0: 245, x1: 611, y1: 239, cx0: 613, cy0: 245, cx1: 611, cy1: 242)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 93, y0: 530, x1: 98, y1: 528, cx0: 95, cy0: 529, cx1: 96, cy1: 528) > BezierCurve(x0: 98, y0: 528, x1: 103, y1: 530, cx0: 100, cy0: 528, cx1: 101, cy1: 529) > BezierCurve(x0: 102, y0: 531, x1: 98, y1: 529, cx0: 101, cy0: 530, cx1: 99, cy1: 529) > BezierCurve(x0: 98, y0: 529, x1: 94, y1: 531, cx0: 97, cy0: 529, cx1: 95, cy1: 530)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 103, y0: 530, x1: 104, y1: 534, cx0: 104, cy0: 531, cx1: 104, cy1: 533) > BezierCurve(x0: 104, y0: 534, x1: 103, y1: 539, cx0: 104, cy0: 536, cx1: 104, cy1: 538) > BezierCurve(x0: 102, y0: 538, x1: 103, y1: 534, cx0: 103, cy0: 537, cx1: 103, cy1: 536) > BezierCurve(x0: 103, y0: 534, x1: 102, y1: 531, cx0: 103, cy0: 533, cx1: 103, cy1: 532)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 103, y0: 539, x1: 98, y1: 541, cx0: 101, cy0: 540, cx1: 100, cy1: 541) > BezierCurve(x0: 98, y0: 541, x1: 93, y1: 539, cx0: 96, cy0: 541, cx1: 95, cy1: 540) > BezierCurve(x0: 94, y0: 538, x1: 98, y1: 540, cx0: 95, cy0: 539, cx1: 97, cy1: 540) > BezierCurve(x0: 98, y0: 540, x1: 102, y1: 538, cx0: 99, cy0: 540, cx1: 101, cy1: 539)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 93, y0: 539, x1: 92, y1: 534, cx0: 92, cy0: 538, cx1: 92, cy1: 536) > BezierCurve(x0: 92, y0: 534, x1: 93, y1: 530, cx0: 92, cy0: 533, cx1: 92, cy1: 531) > BezierCurve(x0: 94, y0: 531, x1: 93, y1: 534, cx0: 93, cy0: 532, cx1: 93, cy1: 533) > BezierCurve(x0: 93, y0: 534, x1: 94, y1: 538, cx0: 93, cy0: 536, cx1: 93, cy1: 537)) -Shape: rgb(42,42,42) Circle(x: 95, y: 531, r: 3) -Clip: Path (BezierCurve(x0: 297, y0: 534, x1: 302, y1: 529, cx0: 297, cy0: 531, cx1: 299, cy1: 529) > BezierCurve(x0: 302, y0: 529, x1: 307, y1: 534, cx0: 305, cy0: 529, cx1: 307, cy1: 531) > BezierCurve(x0: 307, y0: 534, x1: 302, y1: 540, cx0: 307, cy0: 537, cx1: 305, cy1: 540) > BezierCurve(x0: 302, y0: 540, x1: 297, y1: 534, cx0: 299, cy0: 540, cx1: 297, cy1: 537)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 611, y0: 235, x1: 616, y1: 233, cx0: 613, cy0: 234, cx1: 614, cy1: 233) > BezierCurve(x0: 616, y0: 233, x1: 621, y1: 235, cx0: 618, cy0: 233, cx1: 619, cy1: 234) > BezierCurve(x0: 620, y0: 235, x1: 616, y1: 234, cx0: 619, cy0: 234, cx1: 617, cy1: 234) > BezierCurve(x0: 616, y0: 234, x1: 612, y1: 235, cx0: 615, cy0: 234, cx1: 613, cy1: 234)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 621, y0: 235, x1: 622, y1: 239, cx0: 622, cy0: 236, cx1: 622, cy1: 237) > BezierCurve(x0: 622, y0: 239, x1: 621, y1: 244, cx0: 622, cy0: 241, cx1: 622, cy1: 243) > BezierCurve(x0: 620, y0: 243, x1: 621, y1: 239, cx0: 621, cy0: 242, cx1: 621, cy1: 241) > BezierCurve(x0: 621, y0: 239, x1: 620, y1: 235, cx0: 621, cy0: 238, cx1: 621, cy1: 236)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 621, y0: 244, x1: 616, y1: 246, cx0: 619, cy0: 245, cx1: 618, cy1: 246) > BezierCurve(x0: 616, y0: 246, x1: 611, y1: 244, cx0: 614, cy0: 246, cx1: 613, cy1: 245) > BezierCurve(x0: 612, y0: 243, x1: 616, y1: 245, cx0: 613, cy0: 244, cx1: 615, cy1: 245) > BezierCurve(x0: 616, y0: 245, x1: 620, y1: 243, cx0: 617, cy0: 245, cx1: 619, cy1: 244)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 611, y0: 244, x1: 610, y1: 239, cx0: 610, cy0: 243, cx1: 610, cy1: 241) > BezierCurve(x0: 610, y0: 239, x1: 611, y1: 235, cx0: 610, cy0: 237, cx1: 610, cy1: 236) > BezierCurve(x0: 612, y0: 235, x1: 611, y1: 239, cx0: 611, cy0: 236, cx1: 611, cy1: 238) > BezierCurve(x0: 611, y0: 239, x1: 612, y1: 243, cx0: 611, cy0: 241, cx1: 611, cy1: 242)) +Shape: rgb(42,42,42) Circle(x: 613, y: 236, r: 3) +Clip: Path (BezierCurve(x0: 109, y0: 459, x1: 118, y1: 450, cx0: 109, cy0: 454, cx1: 113, cy1: 450) > BezierCurve(x0: 118, y0: 450, x1: 127, y1: 459, cx0: 123, cy0: 450, cx1: 127, cy1: 454) > BezierCurve(x0: 127, y0: 459, x1: 118, y1: 468, cx0: 127, cy0: 464, cx1: 123, cy1: 468) > BezierCurve(x0: 118, y0: 468, x1: 109, y1: 459, cx0: 113, cy0: 468, cx1: 109, cy1: 464)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 297, y0: 530, x1: 302, y1: 528, cx0: 299, cy0: 529, cx1: 300, cy1: 528) > BezierCurve(x0: 302, y0: 528, x1: 307, y1: 530, cx0: 304, cy0: 528, cx1: 305, cy1: 529) > BezierCurve(x0: 306, y0: 531, x1: 302, y1: 529, cx0: 305, cy0: 530, cx1: 303, cy1: 529) > BezierCurve(x0: 302, y0: 529, x1: 298, y1: 531, cx0: 301, cy0: 529, cx1: 299, cy1: 530)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 307, y0: 530, x1: 308, y1: 534, cx0: 308, cy0: 531, cx1: 308, cy1: 533) > BezierCurve(x0: 308, y0: 534, x1: 307, y1: 539, cx0: 308, cy0: 536, cx1: 308, cy1: 538) > BezierCurve(x0: 306, y0: 538, x1: 307, y1: 534, cx0: 307, cy0: 537, cx1: 307, cy1: 536) > BezierCurve(x0: 307, y0: 534, x1: 306, y1: 531, cx0: 307, cy0: 533, cx1: 307, cy1: 532)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 307, y0: 539, x1: 302, y1: 541, cx0: 305, cy0: 540, cx1: 304, cy1: 541) > BezierCurve(x0: 302, y0: 541, x1: 297, y1: 539, cx0: 300, cy0: 541, cx1: 299, cy1: 540) > BezierCurve(x0: 298, y0: 538, x1: 302, y1: 540, cx0: 299, cy0: 539, cx1: 301, cy1: 540) > BezierCurve(x0: 302, y0: 540, x1: 306, y1: 538, cx0: 303, cy0: 540, cx1: 305, cy1: 539)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 297, y0: 539, x1: 296, y1: 534, cx0: 296, cy0: 538, cx1: 296, cy1: 536) > BezierCurve(x0: 296, y0: 534, x1: 297, y1: 530, cx0: 296, cy0: 533, cx1: 296, cy1: 531) > BezierCurve(x0: 298, y0: 531, x1: 297, y1: 534, cx0: 297, cy0: 532, cx1: 297, cy1: 533) > BezierCurve(x0: 297, y0: 534, x1: 298, y1: 538, cx0: 297, cy0: 536, cx1: 297, cy1: 537)) -Clip: Path (BezierCurve(x0: 427, y0: 441, x1: 526, y1: 342, cx0: 427, cy0: 386, cx1: 471, cy1: 342) > BezierCurve(x0: 526, y0: 342, x1: 625, y1: 441, cx0: 581, cy0: 342, cx1: 625, cy1: 386) > BezierCurve(x0: 625, y0: 441, x1: 526, y1: 540, cx0: 625, cy0: 495, cx1: 581, cy1: 540) > BezierCurve(x0: 526, y0: 540, x1: 427, y1: 441, cx0: 471, cy0: 540, cx1: 427, cy1: 495)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 111, y0: 452, x1: 118, y1: 449, cx0: 113, cy0: 450, cx1: 115, cy1: 449) > BezierCurve(x0: 118, y0: 449, x1: 125, y1: 452, cx0: 121, cy0: 449, cx1: 123, cy1: 450) > BezierCurve(x0: 124, y0: 453, x1: 118, y1: 450, cx0: 123, cy0: 451, cx1: 120, cy1: 450) > BezierCurve(x0: 118, y0: 450, x1: 112, y1: 453, cx0: 116, cy0: 450, cx1: 113, cy1: 451)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 125, y0: 452, x1: 128, y1: 459, cx0: 127, cy0: 454, cx1: 128, cy1: 456) > BezierCurve(x0: 128, y0: 459, x1: 125, y1: 466, cx0: 128, cy0: 462, cx1: 127, cy1: 464) > BezierCurve(x0: 124, y0: 466, x1: 127, y1: 459, cx0: 126, cy0: 464, cx1: 127, cy1: 462) > BezierCurve(x0: 127, y0: 459, x1: 124, y1: 453, cx0: 127, cy0: 457, cx1: 126, cy1: 454)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 125, y0: 466, x1: 118, y1: 469, cx0: 123, cy0: 468, cx1: 121, cy1: 469) > BezierCurve(x0: 118, y0: 469, x1: 111, y1: 466, cx0: 115, cy0: 469, cx1: 113, cy1: 468) > BezierCurve(x0: 112, y0: 466, x1: 118, y1: 468, cx0: 113, cy0: 467, cx1: 116, cy1: 468) > BezierCurve(x0: 118, y0: 468, x1: 124, y1: 466, cx0: 120, cy0: 468, cx1: 123, cy1: 467)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 111, y0: 466, x1: 108, y1: 459, cx0: 109, cy0: 464, cx1: 108, cy1: 462) > BezierCurve(x0: 108, y0: 459, x1: 111, y1: 452, cx0: 108, cy0: 456, cx1: 109, cy1: 454) > BezierCurve(x0: 112, y0: 453, x1: 109, y1: 459, cx0: 110, cy0: 454, cx1: 109, cy1: 457) > BezierCurve(x0: 109, y0: 459, x1: 112, y1: 466, cx0: 109, cy0: 462, cx1: 110, cy1: 464)) +Clip: Path (BezierCurve(x0: 243, y0: 369, x1: 342, y1: 270, cx0: 243, cy0: 315, cx1: 287, cy1: 270) > BezierCurve(x0: 342, y0: 270, x1: 441, y1: 369, cx0: 397, cy0: 270, cx1: 441, cy1: 315) > BezierCurve(x0: 441, y0: 369, x1: 342, y1: 468, cx0: 441, cy0: 424, cx1: 397, cy1: 468) > BezierCurve(x0: 342, y0: 468, x1: 243, y1: 369, cx0: 287, cy0: 468, cx1: 243, cy1: 424)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 455, y0: 370, x1: 526, y1: 341, cx0: 473, cy0: 352, cx1: 498, cy1: 341) > BezierCurve(x0: 526, y0: 341, x1: 597, y1: 370, cx0: 554, cy0: 341, cx1: 579, cy1: 352) > BezierCurve(x0: 596, y0: 371, x1: 526, y1: 342, cx0: 578, cy0: 353, cx1: 553, cy1: 342) > BezierCurve(x0: 526, y0: 342, x1: 456, y1: 371, cx0: 499, cy0: 342, cx1: 474, cy1: 353)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 597, y0: 370, x1: 626, y1: 441, cx0: 615, cy0: 388, cx1: 626, cy1: 413) > BezierCurve(x0: 626, y0: 441, x1: 597, y1: 512, cx0: 626, cy0: 468, cx1: 615, cy1: 493) > BezierCurve(x0: 596, y0: 511, x1: 625, y1: 441, cx0: 614, cy0: 493, cx1: 625, cy1: 468) > BezierCurve(x0: 625, y0: 441, x1: 596, y1: 371, cx0: 625, cy0: 413, cx1: 614, cy1: 389)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 597, y0: 512, x1: 526, y1: 541, cx0: 579, cy0: 530, cx1: 554, cy1: 541) > BezierCurve(x0: 526, y0: 541, x1: 455, y1: 512, cx0: 498, cy0: 541, cx1: 473, cy1: 530) > BezierCurve(x0: 456, y0: 511, x1: 526, y1: 540, cx0: 474, cy0: 529, cx1: 499, cy1: 540) > BezierCurve(x0: 526, y0: 540, x1: 596, y1: 511, cx0: 553, cy0: 540, cx1: 578, cy1: 529)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 455, y0: 512, x1: 426, y1: 441, cx0: 437, cy0: 493, cx1: 426, cy1: 468) > BezierCurve(x0: 426, y0: 441, x1: 455, y1: 370, cx0: 426, cy0: 413, cx1: 437, cy1: 388) > BezierCurve(x0: 456, y0: 371, x1: 427, y1: 441, cx0: 438, cy0: 389, cx1: 427, cy1: 413) > BezierCurve(x0: 427, y0: 441, x1: 456, y1: 511, cx0: 427, cy0: 468, cx1: 438, cy1: 493)) -Clip: Path (BezierCurve(x0: 19, y0: 661, x1: 118, y1: 562, cx0: 19, cy0: 606, cx1: 63, cy1: 562) > BezierCurve(x0: 118, y0: 562, x1: 217, y1: 661, cx0: 173, cy0: 562, cx1: 217, cy1: 606) > BezierCurve(x0: 217, y0: 661, x1: 118, y1: 760, cx0: 217, cy0: 715, cx1: 173, cy1: 760) > BezierCurve(x0: 118, y0: 760, x1: 19, y1: 661, cx0: 63, cy0: 760, cx1: 19, cy1: 715)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 271, y0: 298, x1: 342, y1: 269, cx0: 289, cy0: 280, cx1: 314, cy1: 269) > BezierCurve(x0: 342, y0: 269, x1: 413, y1: 298, cx0: 370, cy0: 269, cx1: 395, cy1: 280) > BezierCurve(x0: 412, y0: 299, x1: 342, y1: 270, cx0: 394, cy0: 281, cx1: 369, cy1: 270) > BezierCurve(x0: 342, y0: 270, x1: 272, y1: 299, cx0: 315, cy0: 270, cx1: 290, cy1: 281)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 413, y0: 298, x1: 442, y1: 369, cx0: 431, cy0: 317, cx1: 442, cy1: 342) > BezierCurve(x0: 442, y0: 369, x1: 413, y1: 440, cx0: 442, cy0: 397, cx1: 431, cy1: 422) > BezierCurve(x0: 412, y0: 439, x1: 441, y1: 369, cx0: 430, cy0: 421, cx1: 441, cy1: 397) > BezierCurve(x0: 441, y0: 369, x1: 412, y1: 299, cx0: 441, cy0: 342, cx1: 430, cy1: 317)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 413, y0: 440, x1: 342, y1: 469, cx0: 395, cy0: 458, cx1: 370, cy1: 469) > BezierCurve(x0: 342, y0: 469, x1: 271, y1: 440, cx0: 314, cy0: 469, cx1: 289, cy1: 458) > BezierCurve(x0: 272, y0: 439, x1: 342, y1: 468, cx0: 290, cy0: 457, cx1: 315, cy1: 468) > BezierCurve(x0: 342, y0: 468, x1: 412, y1: 439, cx0: 369, cy0: 468, cx1: 394, cy1: 457)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 271, y0: 440, x1: 242, y1: 369, cx0: 253, cy0: 422, cx1: 242, cy1: 397) > BezierCurve(x0: 242, y0: 369, x1: 271, y1: 298, cx0: 242, cy0: 342, cx1: 253, cy1: 317) > BezierCurve(x0: 272, y0: 299, x1: 243, y1: 369, cx0: 254, cy0: 317, cx1: 243, cy1: 342) > BezierCurve(x0: 243, y0: 369, x1: 272, y1: 439, cx0: 243, cy0: 397, cx1: 254, cy1: 421)) +Clip: Path (BezierCurve(x0: 467, y0: 369, x1: 566, y1: 270, cx0: 467, cy0: 315, cx1: 511, cy1: 270) > BezierCurve(x0: 566, y0: 270, x1: 665, y1: 369, cx0: 621, cy0: 270, cx1: 665, cy1: 315) > BezierCurve(x0: 665, y0: 369, x1: 566, y1: 468, cx0: 665, cy0: 424, cx1: 621, cy1: 468) > BezierCurve(x0: 566, y0: 468, x1: 467, y1: 369, cx0: 511, cy0: 468, cx1: 467, cy1: 424)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 47, y0: 590, x1: 118, y1: 561, cx0: 65, cy0: 572, cx1: 90, cy1: 561) > BezierCurve(x0: 118, y0: 561, x1: 189, y1: 590, cx0: 146, cy0: 561, cx1: 171, cy1: 572) > BezierCurve(x0: 188, y0: 591, x1: 118, y1: 562, cx0: 170, cy0: 573, cx1: 145, cy1: 562) > BezierCurve(x0: 118, y0: 562, x1: 48, y1: 591, cx0: 91, cy0: 562, cx1: 66, cy1: 573)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 189, y0: 590, x1: 218, y1: 661, cx0: 207, cy0: 608, cx1: 218, cy1: 633) > BezierCurve(x0: 218, y0: 661, x1: 189, y1: 732, cx0: 218, cy0: 688, cx1: 207, cy1: 713) > BezierCurve(x0: 188, y0: 731, x1: 217, y1: 661, cx0: 206, cy0: 713, cx1: 217, cy1: 688) > BezierCurve(x0: 217, y0: 661, x1: 188, y1: 591, cx0: 217, cy0: 633, cx1: 206, cy1: 609)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 189, y0: 732, x1: 118, y1: 761, cx0: 171, cy0: 750, cx1: 146, cy1: 761) > BezierCurve(x0: 118, y0: 761, x1: 47, y1: 732, cx0: 90, cy0: 761, cx1: 65, cy1: 750) > BezierCurve(x0: 48, y0: 731, x1: 118, y1: 760, cx0: 66, cy0: 749, cx1: 91, cy1: 760) > BezierCurve(x0: 118, y0: 760, x1: 188, y1: 731, cx0: 145, cy0: 760, cx1: 170, cy1: 749)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 47, y0: 732, x1: 18, y1: 661, cx0: 29, cy0: 713, cx1: 18, cy1: 688) > BezierCurve(x0: 18, y0: 661, x1: 47, y1: 590, cx0: 18, cy0: 633, cx1: 29, cy1: 608) > BezierCurve(x0: 48, y0: 591, x1: 19, y1: 661, cx0: 30, cy0: 609, cx1: 19, cy1: 633) > BezierCurve(x0: 19, y0: 661, x1: 48, y1: 731, cx0: 19, cy0: 688, cx1: 30, cy1: 713)) -Shape: rgb(42,42,42) Circle(x: 68, y: 611, r: 50) -Clip: Path (BezierCurve(x0: 243, y0: 751, x1: 245, y1: 749, cx0: 243, cy0: 750, cx1: 244, cy1: 749) > BezierCurve(x0: 252, y0: 749, x1: 254, y1: 751, cx0: 253, cy0: 749, cx1: 254, cy1: 750) > BezierCurve(x0: 254, y0: 758, x1: 252, y1: 760, cx0: 254, cy0: 759, cx1: 253, cy1: 760) > BezierCurve(x0: 245, y0: 760, x1: 243, y1: 758, cx0: 244, cy0: 760, cx1: 243, cy1: 759)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 495, y0: 298, x1: 566, y1: 269, cx0: 513, cy0: 280, cx1: 538, cy1: 269) > BezierCurve(x0: 566, y0: 269, x1: 637, y1: 298, cx0: 594, cy0: 269, cx1: 619, cy1: 280) > BezierCurve(x0: 636, y0: 299, x1: 566, y1: 270, cx0: 618, cy0: 281, cx1: 593, cy1: 270) > BezierCurve(x0: 566, y0: 270, x1: 496, y1: 299, cx0: 539, cy0: 270, cx1: 514, cy1: 281)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 637, y0: 298, x1: 666, y1: 369, cx0: 655, cy0: 317, cx1: 666, cy1: 342) > BezierCurve(x0: 666, y0: 369, x1: 637, y1: 440, cx0: 666, cy0: 397, cx1: 655, cy1: 422) > BezierCurve(x0: 636, y0: 439, x1: 665, y1: 369, cx0: 654, cy0: 421, cx1: 665, cy1: 397) > BezierCurve(x0: 665, y0: 369, x1: 636, y1: 299, cx0: 665, cy0: 342, cx1: 654, cy1: 317)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 637, y0: 440, x1: 566, y1: 469, cx0: 619, cy0: 458, cx1: 594, cy1: 469) > BezierCurve(x0: 566, y0: 469, x1: 495, y1: 440, cx0: 538, cy0: 469, cx1: 513, cy1: 458) > BezierCurve(x0: 496, y0: 439, x1: 566, y1: 468, cx0: 514, cy0: 457, cx1: 539, cy1: 468) > BezierCurve(x0: 566, y0: 468, x1: 636, y1: 439, cx0: 593, cy0: 468, cx1: 618, cy1: 457)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 495, y0: 440, x1: 466, y1: 369, cx0: 477, cy0: 422, cx1: 466, cy1: 397) > BezierCurve(x0: 466, y0: 369, x1: 495, y1: 298, cx0: 466, cy0: 342, cx1: 477, cy1: 317) > BezierCurve(x0: 496, y0: 299, x1: 467, y1: 369, cx0: 478, cy0: 317, cx1: 467, cy1: 342) > BezierCurve(x0: 467, y0: 369, x1: 496, y1: 439, cx0: 467, cy0: 397, cx1: 478, cy1: 421)) +Shape: rgb(42,42,42) Circle(x: 516, y: 319, r: 50) +Clip: Path (BezierCurve(x0: 691, y0: 456, x1: 693, y1: 454, cx0: 691, cy0: 455, cx1: 692, cy1: 454) > BezierCurve(x0: 700, y0: 454, x1: 702, y1: 456, cx0: 701, cy0: 454, cx1: 702, cy1: 455) > BezierCurve(x0: 702, y0: 463, x1: 700, y1: 465, cx0: 702, cy0: 464, cx1: 701, cy1: 465) > BezierCurve(x0: 693, y0: 465, x1: 691, y1: 463, cx0: 692, cy0: 465, cx1: 691, cy1: 464)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 749, x1: 245, y1: 748, cx0: 243, cy0: 748, cx1: 244, cy1: 748) > BezierCurve(x0: 252, y0: 748, x1: 254, y1: 749, cx0: 253, cy0: 748, cx1: 253, cy1: 748) > BezierCurve(x0: 253, y0: 750, x1: 252, y1: 749, cx0: 253, cy0: 749, cx1: 252, cy1: 749) > BezierCurve(x0: 245, y0: 749, x1: 244, y1: 750, cx0: 244, cy0: 749, cx1: 244, cy1: 749)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 254, y0: 749, x1: 255, y1: 751, cx0: 254, cy0: 749, cx1: 255, cy1: 750) > BezierCurve(x0: 255, y0: 758, x1: 254, y1: 760, cx0: 255, cy0: 759, cx1: 254, cy1: 759) > BezierCurve(x0: 253, y0: 759, x1: 254, y1: 758, cx0: 254, cy0: 759, cx1: 254, cy1: 758) > BezierCurve(x0: 254, y0: 751, x1: 253, y1: 750, cx0: 254, cy0: 750, cx1: 254, cy1: 750)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 254, y0: 760, x1: 252, y1: 761, cx0: 253, cy0: 760, cx1: 253, cy1: 761) > BezierCurve(x0: 245, y0: 761, x1: 243, y1: 760, cx0: 244, cy0: 761, cx1: 243, cy1: 760) > BezierCurve(x0: 244, y0: 759, x1: 245, y1: 760, cx0: 244, cy0: 760, cx1: 244, cy1: 760) > BezierCurve(x0: 252, y0: 760, x1: 253, y1: 759, cx0: 252, cy0: 760, cx1: 253, cy1: 760)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 760, x1: 242, y1: 758, cx0: 242, cy0: 759, cx1: 242, cy1: 759) > BezierCurve(x0: 242, y0: 751, x1: 243, y1: 749, cx0: 242, cy0: 750, cx1: 242, cy1: 749) > BezierCurve(x0: 244, y0: 750, x1: 243, y1: 751, cx0: 243, cy0: 750, cx1: 243, cy1: 750) > BezierCurve(x0: 243, y0: 758, x1: 244, y1: 759, cx0: 243, cy0: 758, cx1: 243, cy1: 759)) -Clip: Path (BezierCurve(x0: 317, y0: 751, x1: 319, y1: 749, cx0: 317, cy0: 750, cx1: 317, cy1: 749) > BezierCurve(x0: 325, y0: 749, x1: 327, y1: 751, cx0: 327, cy0: 749, cx1: 327, cy1: 750) > BezierCurve(x0: 327, y0: 758, x1: 325, y1: 760, cx0: 327, cy0: 759, cx1: 327, cy1: 760) > BezierCurve(x0: 319, y0: 760, x1: 317, y1: 758, cx0: 317, cy0: 760, cx1: 317, cy1: 759)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 691, y0: 454, x1: 693, y1: 453, cx0: 691, cy0: 453, cx1: 692, cy1: 453) > BezierCurve(x0: 700, y0: 453, x1: 702, y1: 454, cx0: 701, cy0: 453, cx1: 701, cy1: 453) > BezierCurve(x0: 701, y0: 454, x1: 700, y1: 454, cx0: 701, cy0: 454, cx1: 700, cy1: 454) > BezierCurve(x0: 693, y0: 454, x1: 692, y1: 454, cx0: 692, cy0: 454, cx1: 692, cy1: 454)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 454, x1: 703, y1: 456, cx0: 702, cy0: 454, cx1: 703, cy1: 455) > BezierCurve(x0: 703, y0: 463, x1: 702, y1: 465, cx0: 703, cy0: 463, cx1: 702, cy1: 464) > BezierCurve(x0: 701, y0: 464, x1: 702, y1: 463, cx0: 702, cy0: 464, cx1: 702, cy1: 463) > BezierCurve(x0: 702, y0: 456, x1: 701, y1: 454, cx0: 702, cy0: 455, cx1: 702, cy1: 455)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 465, x1: 700, y1: 466, cx0: 701, cy0: 465, cx1: 701, cy1: 466) > BezierCurve(x0: 693, y0: 466, x1: 691, y1: 465, cx0: 692, cy0: 466, cx1: 691, cy1: 465) > BezierCurve(x0: 692, y0: 464, x1: 693, y1: 465, cx0: 692, cy0: 464, cx1: 692, cy1: 465) > BezierCurve(x0: 700, y0: 465, x1: 701, y1: 464, cx0: 700, cy0: 465, cx1: 701, cy1: 464)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 691, y0: 465, x1: 690, y1: 463, cx0: 690, cy0: 464, cx1: 690, cy1: 463) > BezierCurve(x0: 690, y0: 456, x1: 691, y1: 454, cx0: 690, cy0: 455, cx1: 690, cy1: 454) > BezierCurve(x0: 692, y0: 454, x1: 691, y1: 456, cx0: 691, cy0: 455, cx1: 691, cy1: 455) > BezierCurve(x0: 691, y0: 463, x1: 692, y1: 464, cx0: 691, cy0: 463, cx1: 691, cy1: 464)) +Clip: Path (BezierCurve(x0: 765, y0: 456, x1: 767, y1: 454, cx0: 765, cy0: 455, cx1: 765, cy1: 454) > BezierCurve(x0: 773, y0: 454, x1: 775, y1: 456, cx0: 775, cy0: 454, cx1: 775, cy1: 455) > BezierCurve(x0: 775, y0: 463, x1: 773, y1: 465, cx0: 775, cy0: 464, cx1: 775, cy1: 465) > BezierCurve(x0: 767, y0: 465, x1: 765, y1: 463, cx0: 765, cy0: 465, cx1: 765, cy1: 464)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 749, x1: 319, y1: 748, cx0: 317, cy0: 748, cx1: 318, cy1: 748) > BezierCurve(x0: 325, y0: 748, x1: 328, y1: 749, cx0: 326, cy0: 748, cx1: 327, cy1: 748) > BezierCurve(x0: 327, y0: 750, x1: 325, y1: 749, cx0: 326, cy0: 749, cx1: 326, cy1: 749) > BezierCurve(x0: 319, y0: 749, x1: 317, y1: 750, cx0: 318, cy0: 749, cx1: 318, cy1: 749)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 328, y0: 749, x1: 328, y1: 751, cx0: 328, cy0: 749, cx1: 328, cy1: 750) > BezierCurve(x0: 328, y0: 758, x1: 328, y1: 760, cx0: 328, cy0: 759, cx1: 328, cy1: 759) > BezierCurve(x0: 327, y0: 759, x1: 327, y1: 758, cx0: 327, cy0: 759, cx1: 327, cy1: 758) > BezierCurve(x0: 327, y0: 751, x1: 327, y1: 750, cx0: 327, cy0: 750, cx1: 327, cy1: 750)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 328, y0: 760, x1: 325, y1: 761, cx0: 327, cy0: 760, cx1: 326, cy1: 761) > BezierCurve(x0: 319, y0: 761, x1: 316, y1: 760, cx0: 318, cy0: 761, cx1: 317, cy1: 760) > BezierCurve(x0: 317, y0: 759, x1: 319, y1: 760, cx0: 318, cy0: 760, cx1: 318, cy1: 760) > BezierCurve(x0: 325, y0: 760, x1: 327, y1: 759, cx0: 326, cy0: 760, cx1: 326, cy1: 760)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 760, x1: 316, y1: 758, cx0: 316, cy0: 759, cx1: 316, cy1: 759) > BezierCurve(x0: 316, y0: 751, x1: 316, y1: 749, cx0: 316, cy0: 750, cx1: 316, cy1: 749) > BezierCurve(x0: 317, y0: 750, x1: 317, y1: 751, cx0: 317, cy0: 750, cx1: 317, cy1: 750) > BezierCurve(x0: 317, y0: 758, x1: 317, y1: 759, cx0: 317, cy0: 758, cx1: 317, cy1: 759)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 764, y0: 454, x1: 767, y1: 453, cx0: 765, cy0: 453, cx1: 766, cy1: 453) > BezierCurve(x0: 773, y0: 453, x1: 776, y1: 454, cx0: 774, cy0: 453, cx1: 775, cy1: 453) > BezierCurve(x0: 775, y0: 454, x1: 773, y1: 454, cx0: 774, cy0: 454, cx1: 774, cy1: 454) > BezierCurve(x0: 767, y0: 454, x1: 765, y1: 454, cx0: 766, cy0: 454, cx1: 766, cy1: 454)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 776, y0: 454, x1: 776, y1: 456, cx0: 776, cy0: 454, cx1: 776, cy1: 455) > BezierCurve(x0: 776, y0: 463, x1: 776, y1: 465, cx0: 776, cy0: 463, cx1: 776, cy1: 464) > BezierCurve(x0: 775, y0: 464, x1: 775, y1: 463, cx0: 775, cy0: 464, cx1: 775, cy1: 463) > BezierCurve(x0: 775, y0: 456, x1: 775, y1: 454, cx0: 775, cy0: 455, cx1: 775, cy1: 455)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 776, y0: 465, x1: 773, y1: 466, cx0: 775, cy0: 465, cx1: 774, cy1: 466) > BezierCurve(x0: 767, y0: 466, x1: 764, y1: 465, cx0: 766, cy0: 466, cx1: 765, cy1: 465) > BezierCurve(x0: 765, y0: 464, x1: 767, y1: 465, cx0: 766, cy0: 464, cx1: 766, cy1: 465) > BezierCurve(x0: 773, y0: 465, x1: 775, y1: 464, cx0: 774, cy0: 465, cx1: 774, cy1: 464)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 764, y0: 465, x1: 764, y1: 463, cx0: 764, cy0: 464, cx1: 764, cy1: 463) > BezierCurve(x0: 764, y0: 456, x1: 764, y1: 454, cx0: 764, cy0: 455, cx1: 764, cy1: 454) > BezierCurve(x0: 765, y0: 454, x1: 765, y1: 456, cx0: 765, cy0: 455, cx1: 765, cy1: 455) > BezierCurve(x0: 765, y0: 463, x1: 765, y1: 464, cx0: 765, cy0: 463, cx1: 765, cy1: 464)) Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial - [318, 760]: ✔ -Clip: Path (BezierCurve(x0: 521, y0: 751, x1: 523, y1: 749, cx0: 521, cy0: 750, cx1: 521, cy1: 749) > BezierCurve(x0: 529, y0: 749, x1: 531, y1: 751, cx0: 531, cy0: 749, cx1: 531, cy1: 750) > BezierCurve(x0: 531, y0: 758, x1: 529, y1: 760, cx0: 531, cy0: 759, cx1: 531, cy1: 760) > BezierCurve(x0: 523, y0: 760, x1: 521, y1: 758, cx0: 521, cy0: 760, cx1: 521, cy1: 759)) + [766, 465]: ✔ +Clip: Path (BezierCurve(x0: 183, y0: 672, x1: 185, y1: 670, cx0: 183, cy0: 671, cx1: 183, cy1: 670) > BezierCurve(x0: 199, y0: 670, x1: 201, y1: 672, cx0: 200, cy0: 670, cx1: 201, cy1: 671) > BezierCurve(x0: 201, y0: 686, x1: 199, y1: 688, cx0: 201, cy0: 687, cx1: 200, cy1: 688) > BezierCurve(x0: 185, y0: 688, x1: 183, y1: 686, cx0: 183, cy0: 688, cx1: 183, cy1: 687)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 520, y0: 749, x1: 523, y1: 748, cx0: 521, cy0: 748, cx1: 522, cy1: 748) > BezierCurve(x0: 529, y0: 748, x1: 532, y1: 749, cx0: 530, cy0: 748, cx1: 531, cy1: 748) > BezierCurve(x0: 531, y0: 750, x1: 529, y1: 749, cx0: 530, cy0: 749, cx1: 530, cy1: 749) > BezierCurve(x0: 523, y0: 749, x1: 521, y1: 750, cx0: 522, cy0: 749, cx1: 522, cy1: 749)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 532, y0: 749, x1: 532, y1: 751, cx0: 532, cy0: 749, cx1: 532, cy1: 750) > BezierCurve(x0: 532, y0: 758, x1: 532, y1: 760, cx0: 532, cy0: 759, cx1: 532, cy1: 759) > BezierCurve(x0: 531, y0: 759, x1: 531, y1: 758, cx0: 531, cy0: 759, cx1: 531, cy1: 758) > BezierCurve(x0: 531, y0: 751, x1: 531, y1: 750, cx0: 531, cy0: 750, cx1: 531, cy1: 750)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 532, y0: 760, x1: 529, y1: 761, cx0: 531, cy0: 760, cx1: 530, cy1: 761) > BezierCurve(x0: 523, y0: 761, x1: 520, y1: 760, cx0: 522, cy0: 761, cx1: 521, cy1: 760) > BezierCurve(x0: 521, y0: 759, x1: 523, y1: 760, cx0: 522, cy0: 760, cx1: 522, cy1: 760) > BezierCurve(x0: 529, y0: 760, x1: 531, y1: 759, cx0: 530, cy0: 760, cx1: 530, cy1: 760)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 520, y0: 760, x1: 520, y1: 758, cx0: 520, cy0: 759, cx1: 520, cy1: 759) > BezierCurve(x0: 520, y0: 751, x1: 520, y1: 749, cx0: 520, cy0: 750, cx1: 520, cy1: 749) > BezierCurve(x0: 521, y0: 750, x1: 521, y1: 751, cx0: 521, cy0: 750, cx1: 521, cy1: 750) > BezierCurve(x0: 521, y0: 758, x1: 521, y1: 759, cx0: 521, cy0: 758, cx1: 521, cy1: 759)) -Clip: Path (BezierCurve(x0: 19, y0: 784, x1: 21, y1: 782, cx0: 19, cy0: 783, cx1: 20, cy1: 782) > BezierCurve(x0: 215, y0: 782, x1: 217, y1: 784, cx0: 216, cy0: 782, cx1: 217, cy1: 783) > BezierCurve(x0: 217, y0: 978, x1: 215, y1: 980, cx0: 217, cy0: 979, cx1: 216, cy1: 980) > BezierCurve(x0: 21, y0: 980, x1: 19, y1: 978, cx0: 20, cy0: 980, cx1: 19, cy1: 979)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 182, y0: 670, x1: 185, y1: 669, cx0: 183, cy0: 670, cx1: 184, cy1: 669) > BezierCurve(x0: 199, y0: 669, x1: 201, y1: 670, cx0: 199, cy0: 669, cx1: 200, cy1: 670) > BezierCurve(x0: 200, y0: 671, x1: 199, y1: 670, cx0: 200, cy0: 670, cx1: 199, cy1: 670) > BezierCurve(x0: 185, y0: 670, x1: 183, y1: 671, cx0: 184, cy0: 670, cx1: 184, cy1: 670)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 201, y0: 670, x1: 202, y1: 672, cx0: 201, cy0: 671, cx1: 202, cy1: 671) > BezierCurve(x0: 202, y0: 686, x1: 201, y1: 688, cx0: 202, cy0: 687, cx1: 201, cy1: 688) > BezierCurve(x0: 200, y0: 688, x1: 201, y1: 686, cx0: 200, cy0: 687, cx1: 201, cy1: 687) > BezierCurve(x0: 201, y0: 672, x1: 200, y1: 671, cx0: 201, cy0: 672, cx1: 200, cy1: 671)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 201, y0: 688, x1: 199, y1: 689, cx0: 200, cy0: 689, cx1: 199, cy1: 689) > BezierCurve(x0: 185, y0: 689, x1: 182, y1: 688, cx0: 184, cy0: 689, cx1: 183, cy1: 689) > BezierCurve(x0: 183, y0: 688, x1: 185, y1: 688, cx0: 184, cy0: 688, cx1: 184, cy1: 688) > BezierCurve(x0: 199, y0: 688, x1: 200, y1: 688, cx0: 199, cy0: 688, cx1: 200, cy1: 688)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 182, y0: 688, x1: 182, y1: 686, cx0: 182, cy0: 688, cx1: 182, cy1: 687) > BezierCurve(x0: 182, y0: 672, x1: 182, y1: 670, cx0: 182, cy0: 671, cx1: 182, cy1: 671) > BezierCurve(x0: 183, y0: 671, x1: 183, y1: 672, cx0: 183, cy0: 671, cx1: 183, cy1: 672) > BezierCurve(x0: 183, y0: 686, x1: 183, y1: 688, cx0: 183, cy0: 687, cx1: 183, cy1: 687)) +Clip: Path (BezierCurve(x0: 317, y0: 492, x1: 319, y1: 490, cx0: 317, cy0: 491, cx1: 317, cy1: 490) > BezierCurve(x0: 513, y0: 490, x1: 515, y1: 492, cx0: 514, cy0: 490, cx1: 515, cy1: 491) > BezierCurve(x0: 515, y0: 686, x1: 513, y1: 688, cx0: 515, cy0: 687, cx1: 514, cy1: 688) > BezierCurve(x0: 319, y0: 688, x1: 317, y1: 686, cx0: 317, cy0: 688, cx1: 317, cy1: 687)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 782, x1: 21, y1: 781, cx0: 19, cy0: 781, cx1: 20, cy1: 781) > BezierCurve(x0: 215, y0: 781, x1: 217, y1: 782, cx0: 216, cy0: 781, cx1: 217, cy1: 781) > BezierCurve(x0: 216, y0: 782, x1: 215, y1: 782, cx0: 216, cy0: 782, cx1: 216, cy1: 782) > BezierCurve(x0: 21, y0: 782, x1: 20, y1: 782, cx0: 20, cy0: 782, cx1: 20, cy1: 782)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 217, y0: 782, x1: 218, y1: 784, cx0: 218, cy0: 782, cx1: 218, cy1: 783) > BezierCurve(x0: 218, y0: 978, x1: 217, y1: 980, cx0: 218, cy0: 979, cx1: 218, cy1: 979) > BezierCurve(x0: 216, y0: 979, x1: 217, y1: 978, cx0: 217, cy0: 979, cx1: 217, cy1: 978) > BezierCurve(x0: 217, y0: 784, x1: 216, y1: 782, cx0: 217, cy0: 783, cx1: 217, cy1: 783)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 217, y0: 980, x1: 215, y1: 981, cx0: 217, cy0: 980, cx1: 216, cy1: 981) > BezierCurve(x0: 21, y0: 981, x1: 19, y1: 980, cx0: 20, cy0: 981, cx1: 19, cy1: 980) > BezierCurve(x0: 20, y0: 979, x1: 21, y1: 980, cx0: 20, cy0: 980, cx1: 20, cy1: 980) > BezierCurve(x0: 215, y0: 980, x1: 216, y1: 979, cx0: 216, cy0: 980, cx1: 216, cy1: 980)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 980, x1: 18, y1: 978, cx0: 18, cy0: 979, cx1: 18, cy1: 979) > BezierCurve(x0: 18, y0: 784, x1: 19, y1: 782, cx0: 18, cy0: 783, cx1: 18, cy1: 782) > BezierCurve(x0: 20, y0: 782, x1: 19, y1: 784, cx0: 19, cy0: 783, cx1: 19, cy1: 783) > BezierCurve(x0: 19, y0: 978, x1: 20, y1: 979, cx0: 19, cy0: 978, cx1: 19, cy1: 979)) -Clip: Path (BezierCurve(x0: 243, y0: 784, x1: 245, y1: 782, cx0: 243, cy0: 783, cx1: 244, cy1: 782) > BezierCurve(x0: 439, y0: 782, x1: 441, y1: 784, cx0: 440, cy0: 782, cx1: 441, cy1: 783) > BezierCurve(x0: 441, y0: 978, x1: 439, y1: 980, cx0: 441, cy0: 979, cx1: 440, cy1: 980) > BezierCurve(x0: 245, y0: 980, x1: 243, y1: 978, cx0: 244, cy0: 980, cx1: 243, cy1: 979)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 490, x1: 319, y1: 489, cx0: 317, cy0: 490, cx1: 318, cy1: 489) > BezierCurve(x0: 513, y0: 489, x1: 515, y1: 490, cx0: 513, cy0: 489, cx1: 514, cy1: 490) > BezierCurve(x0: 514, y0: 491, x1: 513, y1: 490, cx0: 514, cy0: 490, cx1: 513, cy1: 490) > BezierCurve(x0: 319, y0: 490, x1: 317, y1: 491, cx0: 318, cy0: 490, cx1: 318, cy1: 490)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 515, y0: 490, x1: 516, y1: 492, cx0: 515, cy0: 491, cx1: 516, cy1: 491) > BezierCurve(x0: 516, y0: 686, x1: 515, y1: 688, cx0: 516, cy0: 687, cx1: 515, cy1: 688) > BezierCurve(x0: 514, y0: 688, x1: 515, y1: 686, cx0: 514, cy0: 687, cx1: 515, cy1: 687) > BezierCurve(x0: 515, y0: 492, x1: 514, y1: 491, cx0: 515, cy0: 492, cx1: 514, cy1: 491)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 515, y0: 688, x1: 513, y1: 689, cx0: 514, cy0: 689, cx1: 513, cy1: 689) > BezierCurve(x0: 319, y0: 689, x1: 316, y1: 688, cx0: 318, cy0: 689, cx1: 317, cy1: 689) > BezierCurve(x0: 317, y0: 688, x1: 319, y1: 688, cx0: 318, cy0: 688, cx1: 318, cy1: 688) > BezierCurve(x0: 513, y0: 688, x1: 514, y1: 688, cx0: 513, cy0: 688, cx1: 514, cy1: 688)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 688, x1: 316, y1: 686, cx0: 316, cy0: 688, cx1: 316, cy1: 687) > BezierCurve(x0: 316, y0: 492, x1: 316, y1: 490, cx0: 316, cy0: 491, cx1: 316, cy1: 491) > BezierCurve(x0: 317, y0: 491, x1: 317, y1: 492, cx0: 317, cy0: 491, cx1: 317, cy1: 492) > BezierCurve(x0: 317, y0: 686, x1: 317, y1: 688, cx0: 317, cy0: 687, cx1: 317, cy1: 687)) +Clip: Path (BezierCurve(x0: 541, y0: 492, x1: 543, y1: 490, cx0: 541, cy0: 491, cx1: 541, cy1: 490) > BezierCurve(x0: 737, y0: 490, x1: 739, y1: 492, cx0: 738, cy0: 490, cx1: 739, cy1: 491) > BezierCurve(x0: 739, y0: 686, x1: 737, y1: 688, cx0: 739, cy0: 687, cx1: 738, cy1: 688) > BezierCurve(x0: 543, y0: 688, x1: 541, y1: 686, cx0: 541, cy0: 688, cx1: 541, cy1: 687)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 782, x1: 245, y1: 781, cx0: 243, cy0: 781, cx1: 244, cy1: 781) > BezierCurve(x0: 439, y0: 781, x1: 441, y1: 782, cx0: 440, cy0: 781, cx1: 441, cy1: 781) > BezierCurve(x0: 440, y0: 782, x1: 439, y1: 782, cx0: 440, cy0: 782, cx1: 440, cy1: 782) > BezierCurve(x0: 245, y0: 782, x1: 244, y1: 782, cx0: 244, cy0: 782, cx1: 244, cy1: 782)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 441, y0: 782, x1: 442, y1: 784, cx0: 442, cy0: 782, cx1: 442, cy1: 783) > BezierCurve(x0: 442, y0: 978, x1: 441, y1: 980, cx0: 442, cy0: 979, cx1: 442, cy1: 979) > BezierCurve(x0: 440, y0: 979, x1: 441, y1: 978, cx0: 441, cy0: 979, cx1: 441, cy1: 978) > BezierCurve(x0: 441, y0: 784, x1: 440, y1: 782, cx0: 441, cy0: 783, cx1: 441, cy1: 783)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 441, y0: 980, x1: 439, y1: 981, cx0: 441, cy0: 980, cx1: 440, cy1: 981) > BezierCurve(x0: 245, y0: 981, x1: 243, y1: 980, cx0: 244, cy0: 981, cx1: 243, cy1: 980) > BezierCurve(x0: 244, y0: 979, x1: 245, y1: 980, cx0: 244, cy0: 980, cx1: 244, cy1: 980) > BezierCurve(x0: 439, y0: 980, x1: 440, y1: 979, cx0: 440, cy0: 980, cx1: 440, cy1: 980)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 243, y0: 980, x1: 242, y1: 978, cx0: 242, cy0: 979, cx1: 242, cy1: 979) > BezierCurve(x0: 242, y0: 784, x1: 243, y1: 782, cx0: 242, cy0: 783, cx1: 242, cy1: 782) > BezierCurve(x0: 244, y0: 782, x1: 243, y1: 784, cx0: 243, cy0: 783, cx1: 243, cy1: 783) > BezierCurve(x0: 243, y0: 978, x1: 244, y1: 979, cx0: 243, cy0: 978, cx1: 243, cy1: 979)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 540, y0: 490, x1: 543, y1: 489, cx0: 541, cy0: 490, cx1: 542, cy1: 489) > BezierCurve(x0: 737, y0: 489, x1: 739, y1: 490, cx0: 737, cy0: 489, cx1: 738, cy1: 490) > BezierCurve(x0: 738, y0: 491, x1: 737, y1: 490, cx0: 738, cy0: 490, cx1: 737, cy1: 490) > BezierCurve(x0: 543, y0: 490, x1: 541, y1: 491, cx0: 542, cy0: 490, cx1: 542, cy1: 490)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 490, x1: 740, y1: 492, cx0: 739, cy0: 491, cx1: 740, cy1: 491) > BezierCurve(x0: 740, y0: 686, x1: 739, y1: 688, cx0: 740, cy0: 687, cx1: 739, cy1: 688) > BezierCurve(x0: 738, y0: 688, x1: 739, y1: 686, cx0: 738, cy0: 687, cx1: 739, cy1: 687) > BezierCurve(x0: 739, y0: 492, x1: 738, y1: 491, cx0: 739, cy0: 492, cx1: 738, cy1: 491)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 688, x1: 737, y1: 689, cx0: 738, cy0: 689, cx1: 737, cy1: 689) > BezierCurve(x0: 543, y0: 689, x1: 540, y1: 688, cx0: 542, cy0: 689, cx1: 541, cy1: 689) > BezierCurve(x0: 541, y0: 688, x1: 543, y1: 688, cx0: 542, cy0: 688, cx1: 542, cy1: 688) > BezierCurve(x0: 737, y0: 688, x1: 738, y1: 688, cx0: 737, cy0: 688, cx1: 738, cy1: 688)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 540, y0: 688, x1: 540, y1: 686, cx0: 540, cy0: 688, cx1: 540, cy1: 687) > BezierCurve(x0: 540, y0: 492, x1: 540, y1: 490, cx0: 540, cy0: 491, cx1: 540, cy1: 491) > BezierCurve(x0: 541, y0: 491, x1: 541, y1: 492, cx0: 541, cy0: 491, cx1: 541, cy1: 492) > BezierCurve(x0: 541, y0: 686, x1: 541, y1: 688, cx0: 541, cy0: 687, cx1: 541, cy1: 687)) Text: rgb(42,42,42) normal normal 400 197px Arial - [275, 980]: ✔ -Transform: (61, 534) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 56, y0: 534, x1: 61, y1: 529, cx0: 56, cy0: 531, cx1: 58, cy1: 529) > BezierCurve(x0: 61, y0: 529, x1: 67, y1: 534, cx0: 64, cy0: 529, cx1: 67, cy1: 531) > BezierCurve(x0: 67, y0: 534, x1: 61, y1: 540, cx0: 67, cy0: 537, cx1: 64, cy1: 540) > BezierCurve(x0: 61, y0: 540, x1: 56, y1: 534, cx0: 58, cy0: 540, cx1: 56, cy1: 537)) + [573, 688]: ✔ +Transform: (579, 243) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 574, y0: 239, x1: 579, y1: 234, cx0: 574, cy0: 236, cx1: 576, cy1: 234) > BezierCurve(x0: 579, y0: 234, x1: 585, y1: 239, cx0: 582, cy0: 234, cx1: 585, cy1: 236) > BezierCurve(x0: 585, y0: 239, x1: 579, y1: 245, cx0: 585, cy0: 242, cx1: 582, cy1: 245) > BezierCurve(x0: 579, y0: 245, x1: 574, y1: 239, cx0: 576, cy0: 245, cx1: 574, cy1: 242)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 57, y0: 530, x1: 61, y1: 528, cx0: 58, cy0: 529, cx1: 59, cy1: 528) > BezierCurve(x0: 61, y0: 528, x1: 66, y1: 530, cx0: 63, cy0: 528, cx1: 65, cy1: 529) > BezierCurve(x0: 65, y0: 531, x1: 61, y1: 529, cx0: 64, cy0: 530, cx1: 63, cy1: 529) > BezierCurve(x0: 61, y0: 529, x1: 57, y1: 531, cx0: 60, cy0: 529, cx1: 58, cy1: 530)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 66, y0: 530, x1: 68, y1: 534, cx0: 67, cy0: 531, cx1: 68, cy1: 533) > BezierCurve(x0: 68, y0: 534, x1: 66, y1: 539, cx0: 68, cy0: 536, cx1: 67, cy1: 538) > BezierCurve(x0: 65, y0: 538, x1: 67, y1: 534, cx0: 66, cy0: 537, cx1: 67, cy1: 536) > BezierCurve(x0: 67, y0: 534, x1: 65, y1: 531, cx0: 67, cy0: 533, cx1: 66, cy1: 532)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 66, y0: 539, x1: 61, y1: 541, cx0: 65, cy0: 540, cx1: 63, cy1: 541) > BezierCurve(x0: 61, y0: 541, x1: 57, y1: 539, cx0: 59, cy0: 541, cx1: 58, cy1: 540) > BezierCurve(x0: 57, y0: 538, x1: 61, y1: 540, cx0: 58, cy0: 539, cx1: 60, cy1: 540) > BezierCurve(x0: 61, y0: 540, x1: 65, y1: 538, cx0: 63, cy0: 540, cx1: 64, cy1: 539)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 57, y0: 539, x1: 55, y1: 534, cx0: 56, cy0: 538, cx1: 55, cy1: 536) > BezierCurve(x0: 55, y0: 534, x1: 57, y1: 530, cx0: 55, cy0: 533, cx1: 56, cy1: 531) > BezierCurve(x0: 57, y0: 531, x1: 56, y1: 534, cx0: 56, cy0: 532, cx1: 56, cy1: 533) > BezierCurve(x0: 56, y0: 534, x1: 57, y1: 538, cx0: 56, cy0: 536, cx1: 56, cy1: 537)) -Transform: (135, 534) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 129, y0: 534, x1: 135, y1: 529, cx0: 129, cy0: 531, cx1: 132, cy1: 529) > BezierCurve(x0: 135, y0: 529, x1: 140, y1: 534, cx0: 138, cy0: 529, cx1: 140, cy1: 531) > BezierCurve(x0: 140, y0: 534, x1: 135, y1: 540, cx0: 140, cy0: 537, cx1: 138, cy1: 540) > BezierCurve(x0: 135, y0: 540, x1: 129, y1: 534, cx0: 132, cy0: 540, cx1: 129, cy1: 537)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 575, y0: 235, x1: 579, y1: 233, cx0: 576, cy0: 234, cx1: 577, cy1: 233) > BezierCurve(x0: 579, y0: 233, x1: 584, y1: 235, cx0: 581, cy0: 233, cx1: 583, cy1: 234) > BezierCurve(x0: 583, y0: 235, x1: 579, y1: 234, cx0: 582, cy0: 234, cx1: 581, cy1: 234) > BezierCurve(x0: 579, y0: 234, x1: 575, y1: 235, cx0: 578, cy0: 234, cx1: 576, cy1: 234)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 584, y0: 235, x1: 586, y1: 239, cx0: 585, cy0: 236, cx1: 586, cy1: 237) > BezierCurve(x0: 586, y0: 239, x1: 584, y1: 244, cx0: 586, cy0: 241, cx1: 585, cy1: 243) > BezierCurve(x0: 583, y0: 243, x1: 585, y1: 239, cx0: 584, cy0: 242, cx1: 585, cy1: 241) > BezierCurve(x0: 585, y0: 239, x1: 583, y1: 235, cx0: 585, cy0: 238, cx1: 584, cy1: 236)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 584, y0: 244, x1: 579, y1: 246, cx0: 583, cy0: 245, cx1: 581, cy1: 246) > BezierCurve(x0: 579, y0: 246, x1: 575, y1: 244, cx0: 577, cy0: 246, cx1: 576, cy1: 245) > BezierCurve(x0: 575, y0: 243, x1: 579, y1: 245, cx0: 576, cy0: 244, cx1: 578, cy1: 245) > BezierCurve(x0: 579, y0: 245, x1: 583, y1: 243, cx0: 581, cy0: 245, cx1: 582, cy1: 244)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 575, y0: 244, x1: 573, y1: 239, cx0: 574, cy0: 243, cx1: 573, cy1: 241) > BezierCurve(x0: 573, y0: 239, x1: 575, y1: 235, cx0: 573, cy0: 237, cx1: 574, cy1: 236) > BezierCurve(x0: 575, y0: 235, x1: 574, y1: 239, cx0: 574, cy0: 236, cx1: 574, cy1: 238) > BezierCurve(x0: 574, y0: 239, x1: 575, y1: 243, cx0: 574, cy0: 241, cx1: 574, cy1: 242)) +Transform: (653, 243) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 647, y0: 239, x1: 653, y1: 234, cx0: 647, cy0: 236, cx1: 650, cy1: 234) > BezierCurve(x0: 653, y0: 234, x1: 658, y1: 239, cx0: 656, cy0: 234, cx1: 658, cy1: 236) > BezierCurve(x0: 658, y0: 239, x1: 653, y1: 245, cx0: 658, cy0: 242, cx1: 656, cy1: 245) > BezierCurve(x0: 653, y0: 245, x1: 647, y1: 239, cx0: 650, cy0: 245, cx1: 647, cy1: 242)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 130, y0: 530, x1: 135, y1: 528, cx0: 131, cy0: 529, cx1: 133, cy1: 528) > BezierCurve(x0: 135, y0: 528, x1: 139, y1: 530, cx0: 137, cy0: 528, cx1: 138, cy1: 529) > BezierCurve(x0: 139, y0: 531, x1: 135, y1: 529, cx0: 138, cy0: 530, cx1: 136, cy1: 529) > BezierCurve(x0: 135, y0: 529, x1: 131, y1: 531, cx0: 133, cy0: 529, cx1: 132, cy1: 530)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 139, y0: 530, x1: 141, y1: 534, cx0: 140, cy0: 531, cx1: 141, cy1: 533) > BezierCurve(x0: 141, y0: 534, x1: 139, y1: 539, cx0: 141, cy0: 536, cx1: 140, cy1: 538) > BezierCurve(x0: 139, y0: 538, x1: 140, y1: 534, cx0: 140, cy0: 537, cx1: 140, cy1: 536) > BezierCurve(x0: 140, y0: 534, x1: 139, y1: 531, cx0: 140, cy0: 533, cx1: 140, cy1: 532)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 139, y0: 539, x1: 135, y1: 541, cx0: 138, cy0: 540, cx1: 137, cy1: 541) > BezierCurve(x0: 135, y0: 541, x1: 130, y1: 539, cx0: 133, cy0: 541, cx1: 131, cy1: 540) > BezierCurve(x0: 131, y0: 538, x1: 135, y1: 540, cx0: 132, cy0: 539, cx1: 133, cy1: 540) > BezierCurve(x0: 135, y0: 540, x1: 139, y1: 538, cx0: 136, cy0: 540, cx1: 138, cy1: 539)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 130, y0: 539, x1: 128, y1: 534, cx0: 129, cy0: 538, cx1: 128, cy1: 536) > BezierCurve(x0: 128, y0: 534, x1: 130, y1: 530, cx0: 128, cy0: 533, cx1: 129, cy1: 531) > BezierCurve(x0: 131, y0: 531, x1: 129, y1: 534, cx0: 130, cy0: 532, cx1: 129, cy1: 533) > BezierCurve(x0: 129, y0: 534, x1: 131, y1: 538, cx0: 129, cy0: 536, cx1: 130, cy1: 537)) - Shape: rgb(42,42,42) Circle(x: 132, y: 531, r: 3) -Transform: (172, 534) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 166, y0: 534, x1: 172, y1: 529, cx0: 166, cy0: 531, cx1: 169, cy1: 529) > BezierCurve(x0: 172, y0: 529, x1: 177, y1: 534, cx0: 175, cy0: 529, cx1: 177, cy1: 531) > BezierCurve(x0: 177, y0: 534, x1: 172, y1: 540, cx0: 177, cy0: 537, cx1: 175, cy1: 540) > BezierCurve(x0: 172, y0: 540, x1: 166, y1: 534, cx0: 169, cy0: 540, cx1: 166, cy1: 537)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 648, y0: 235, x1: 653, y1: 233, cx0: 649, cy0: 234, cx1: 651, cy1: 233) > BezierCurve(x0: 653, y0: 233, x1: 657, y1: 235, cx0: 655, cy0: 233, cx1: 656, cy1: 234) > BezierCurve(x0: 657, y0: 235, x1: 653, y1: 234, cx0: 656, cy0: 234, cx1: 654, cy1: 234) > BezierCurve(x0: 653, y0: 234, x1: 649, y1: 235, cx0: 651, cy0: 234, cx1: 650, cy1: 234)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 657, y0: 235, x1: 659, y1: 239, cx0: 658, cy0: 236, cx1: 659, cy1: 237) > BezierCurve(x0: 659, y0: 239, x1: 657, y1: 244, cx0: 659, cy0: 241, cx1: 658, cy1: 243) > BezierCurve(x0: 657, y0: 243, x1: 658, y1: 239, cx0: 658, cy0: 242, cx1: 658, cy1: 241) > BezierCurve(x0: 658, y0: 239, x1: 657, y1: 235, cx0: 658, cy0: 238, cx1: 658, cy1: 236)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 657, y0: 244, x1: 653, y1: 246, cx0: 656, cy0: 245, cx1: 655, cy1: 246) > BezierCurve(x0: 653, y0: 246, x1: 648, y1: 244, cx0: 651, cy0: 246, cx1: 649, cy1: 245) > BezierCurve(x0: 649, y0: 243, x1: 653, y1: 245, cx0: 650, cy0: 244, cx1: 651, cy1: 245) > BezierCurve(x0: 653, y0: 245, x1: 657, y1: 243, cx0: 654, cy0: 245, cx1: 656, cy1: 244)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 648, y0: 244, x1: 646, y1: 239, cx0: 647, cy0: 243, cx1: 646, cy1: 241) > BezierCurve(x0: 646, y0: 239, x1: 648, y1: 235, cx0: 646, cy0: 237, cx1: 647, cy1: 236) > BezierCurve(x0: 649, y0: 235, x1: 647, y1: 239, cx0: 648, cy0: 236, cx1: 647, cy1: 238) > BezierCurve(x0: 647, y0: 239, x1: 649, y1: 243, cx0: 647, cy0: 241, cx1: 648, cy1: 242)) + Shape: rgb(42,42,42) Circle(x: 650, y: 236, r: 3) +Transform: (690, 243) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 684, y0: 239, x1: 690, y1: 234, cx0: 684, cy0: 236, cx1: 687, cy1: 234) > BezierCurve(x0: 690, y0: 234, x1: 695, y1: 239, cx0: 693, cy0: 234, cx1: 695, cy1: 236) > BezierCurve(x0: 695, y0: 239, x1: 690, y1: 245, cx0: 695, cy0: 242, cx1: 693, cy1: 245) > BezierCurve(x0: 690, y0: 245, x1: 684, y1: 239, cx0: 687, cy0: 245, cx1: 684, cy1: 242)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 167, y0: 530, x1: 172, y1: 528, cx0: 168, cy0: 529, cx1: 170, cy1: 528) > BezierCurve(x0: 172, y0: 528, x1: 176, y1: 530, cx0: 173, cy0: 528, cx1: 175, cy1: 529) > BezierCurve(x0: 175, y0: 531, x1: 172, y1: 529, cx0: 174, cy0: 530, cx1: 173, cy1: 529) > BezierCurve(x0: 172, y0: 529, x1: 168, y1: 531, cx0: 170, cy0: 529, cx1: 169, cy1: 530)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 176, y0: 530, x1: 178, y1: 534, cx0: 177, cy0: 531, cx1: 178, cy1: 533) > BezierCurve(x0: 178, y0: 534, x1: 176, y1: 539, cx0: 178, cy0: 536, cx1: 177, cy1: 538) > BezierCurve(x0: 175, y0: 538, x1: 177, y1: 534, cx0: 176, cy0: 537, cx1: 177, cy1: 536) > BezierCurve(x0: 177, y0: 534, x1: 175, y1: 531, cx0: 177, cy0: 533, cx1: 176, cy1: 532)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 176, y0: 539, x1: 172, y1: 541, cx0: 175, cy0: 540, cx1: 173, cy1: 541) > BezierCurve(x0: 172, y0: 541, x1: 167, y1: 539, cx0: 170, cy0: 541, cx1: 168, cy1: 540) > BezierCurve(x0: 168, y0: 538, x1: 172, y1: 540, cx0: 169, cy0: 539, cx1: 170, cy1: 540) > BezierCurve(x0: 172, y0: 540, x1: 175, y1: 538, cx0: 173, cy0: 540, cx1: 174, cy1: 539)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 167, y0: 539, x1: 165, y1: 534, cx0: 166, cy0: 538, cx1: 165, cy1: 536) > BezierCurve(x0: 165, y0: 534, x1: 167, y1: 530, cx0: 165, cy0: 533, cx1: 166, cy1: 531) > BezierCurve(x0: 168, y0: 531, x1: 166, y1: 534, cx0: 167, cy0: 532, cx1: 166, cy1: 533) > BezierCurve(x0: 166, y0: 534, x1: 168, y1: 538, cx0: 166, cy0: 536, cx1: 167, cy1: 537)) -Transform: (285, 754) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 280, y0: 751, x1: 282, y1: 749, cx0: 280, cy0: 750, cx1: 281, cy1: 749) > BezierCurve(x0: 289, y0: 749, x1: 291, y1: 751, cx0: 290, cy0: 749, cx1: 291, cy1: 750) > BezierCurve(x0: 291, y0: 758, x1: 289, y1: 760, cx0: 291, cy0: 759, cx1: 290, cy1: 760) > BezierCurve(x0: 282, y0: 760, x1: 280, y1: 758, cx0: 281, cy0: 760, cx1: 280, cy1: 759)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 685, y0: 235, x1: 690, y1: 233, cx0: 686, cy0: 234, cx1: 688, cy1: 233) > BezierCurve(x0: 690, y0: 233, x1: 694, y1: 235, cx0: 691, cy0: 233, cx1: 693, cy1: 234) > BezierCurve(x0: 693, y0: 235, x1: 690, y1: 234, cx0: 692, cy0: 234, cx1: 691, cy1: 234) > BezierCurve(x0: 690, y0: 234, x1: 686, y1: 235, cx0: 688, cy0: 234, cx1: 687, cy1: 234)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 694, y0: 235, x1: 696, y1: 239, cx0: 695, cy0: 236, cx1: 696, cy1: 237) > BezierCurve(x0: 696, y0: 239, x1: 694, y1: 244, cx0: 696, cy0: 241, cx1: 695, cy1: 243) > BezierCurve(x0: 693, y0: 243, x1: 695, y1: 239, cx0: 694, cy0: 242, cx1: 695, cy1: 241) > BezierCurve(x0: 695, y0: 239, x1: 693, y1: 235, cx0: 695, cy0: 238, cx1: 694, cy1: 236)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 694, y0: 244, x1: 690, y1: 246, cx0: 693, cy0: 245, cx1: 691, cy1: 246) > BezierCurve(x0: 690, y0: 246, x1: 685, y1: 244, cx0: 688, cy0: 246, cx1: 686, cy1: 245) > BezierCurve(x0: 686, y0: 243, x1: 690, y1: 245, cx0: 687, cy0: 244, cx1: 688, cy1: 245) > BezierCurve(x0: 690, y0: 245, x1: 693, y1: 243, cx0: 691, cy0: 245, cx1: 692, cy1: 244)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 685, y0: 244, x1: 683, y1: 239, cx0: 684, cy0: 243, cx1: 683, cy1: 241) > BezierCurve(x0: 683, y0: 239, x1: 685, y1: 235, cx0: 683, cy0: 237, cx1: 684, cy1: 236) > BezierCurve(x0: 686, y0: 235, x1: 684, y1: 239, cx0: 685, cy0: 236, cx1: 684, cy1: 238) > BezierCurve(x0: 684, y0: 239, x1: 686, y1: 243, cx0: 684, cy0: 241, cx1: 685, cy1: 242)) +Transform: (733, 463) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 728, y0: 456, x1: 730, y1: 454, cx0: 728, cy0: 455, cx1: 729, cy1: 454) > BezierCurve(x0: 737, y0: 454, x1: 739, y1: 456, cx0: 738, cy0: 454, cx1: 739, cy1: 455) > BezierCurve(x0: 739, y0: 463, x1: 737, y1: 465, cx0: 739, cy0: 464, cx1: 738, cy1: 465) > BezierCurve(x0: 730, y0: 465, x1: 728, y1: 463, cx0: 729, cy0: 465, cx1: 728, cy1: 464)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 280, y0: 749, x1: 282, y1: 748, cx0: 280, cy0: 748, cx1: 281, cy1: 748) > BezierCurve(x0: 289, y0: 748, x1: 291, y1: 749, cx0: 289, cy0: 748, cx1: 290, cy1: 748) > BezierCurve(x0: 290, y0: 750, x1: 289, y1: 749, cx0: 290, cy0: 749, cx1: 289, cy1: 749) > BezierCurve(x0: 282, y0: 749, x1: 280, y1: 750, cx0: 281, cy0: 749, cx1: 281, cy1: 749)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 291, y0: 749, x1: 292, y1: 751, cx0: 291, cy0: 749, cx1: 292, cy1: 750) > BezierCurve(x0: 292, y0: 758, x1: 291, y1: 760, cx0: 292, cy0: 759, cx1: 291, cy1: 759) > BezierCurve(x0: 290, y0: 759, x1: 291, y1: 758, cx0: 290, cy0: 759, cx1: 291, cy1: 758) > BezierCurve(x0: 291, y0: 751, x1: 290, y1: 750, cx0: 291, cy0: 750, cx1: 290, cy1: 750)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 291, y0: 760, x1: 289, y1: 761, cx0: 290, cy0: 760, cx1: 289, cy1: 761) > BezierCurve(x0: 282, y0: 761, x1: 280, y1: 760, cx0: 281, cy0: 761, cx1: 280, cy1: 760) > BezierCurve(x0: 280, y0: 759, x1: 282, y1: 760, cx0: 281, cy0: 760, cx1: 281, cy1: 760) > BezierCurve(x0: 289, y0: 760, x1: 290, y1: 759, cx0: 289, cy0: 760, cx1: 290, cy1: 760)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 280, y0: 760, x1: 279, y1: 758, cx0: 279, cy0: 759, cx1: 279, cy1: 759) > BezierCurve(x0: 279, y0: 751, x1: 280, y1: 749, cx0: 279, cy0: 750, cx1: 279, cy1: 749) > BezierCurve(x0: 280, y0: 750, x1: 280, y1: 751, cx0: 280, cy0: 750, cx1: 280, cy1: 750) > BezierCurve(x0: 280, y0: 758, x1: 280, y1: 759, cx0: 280, cy0: 758, cx1: 280, cy1: 759)) -Transform: (359, 754) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 353, y0: 751, x1: 355, y1: 749, cx0: 353, cy0: 750, cx1: 354, cy1: 749) > BezierCurve(x0: 362, y0: 749, x1: 364, y1: 751, cx0: 363, cy0: 749, cx1: 364, cy1: 750) > BezierCurve(x0: 364, y0: 758, x1: 362, y1: 760, cx0: 364, cy0: 759, cx1: 363, cy1: 760) > BezierCurve(x0: 355, y0: 760, x1: 353, y1: 758, cx0: 354, cy0: 760, cx1: 353, cy1: 759)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 728, y0: 454, x1: 730, y1: 453, cx0: 728, cy0: 453, cx1: 729, cy1: 453) > BezierCurve(x0: 737, y0: 453, x1: 739, y1: 454, cx0: 737, cy0: 453, cx1: 738, cy1: 453) > BezierCurve(x0: 738, y0: 454, x1: 737, y1: 454, cx0: 738, cy0: 454, cx1: 737, cy1: 454) > BezierCurve(x0: 730, y0: 454, x1: 728, y1: 454, cx0: 729, cy0: 454, cx1: 729, cy1: 454)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 454, x1: 740, y1: 456, cx0: 739, cy0: 454, cx1: 740, cy1: 455) > BezierCurve(x0: 740, y0: 463, x1: 739, y1: 465, cx0: 740, cy0: 463, cx1: 739, cy1: 464) > BezierCurve(x0: 738, y0: 464, x1: 739, y1: 463, cx0: 738, cy0: 464, cx1: 739, cy1: 463) > BezierCurve(x0: 739, y0: 456, x1: 738, y1: 454, cx0: 739, cy0: 455, cx1: 738, cy1: 455)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 465, x1: 737, y1: 466, cx0: 738, cy0: 465, cx1: 737, cy1: 466) > BezierCurve(x0: 730, y0: 466, x1: 728, y1: 465, cx0: 729, cy0: 466, cx1: 728, cy1: 465) > BezierCurve(x0: 728, y0: 464, x1: 730, y1: 465, cx0: 729, cy0: 464, cx1: 729, cy1: 465) > BezierCurve(x0: 737, y0: 465, x1: 738, y1: 464, cx0: 737, cy0: 465, cx1: 738, cy1: 464)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 728, y0: 465, x1: 727, y1: 463, cx0: 727, cy0: 464, cx1: 727, cy1: 463) > BezierCurve(x0: 727, y0: 456, x1: 728, y1: 454, cx0: 727, cy0: 455, cx1: 727, cy1: 454) > BezierCurve(x0: 728, y0: 454, x1: 728, y1: 456, cx0: 728, cy0: 455, cx1: 728, cy1: 455) > BezierCurve(x0: 728, y0: 463, x1: 728, y1: 464, cx0: 728, cy0: 463, cx1: 728, cy1: 464)) +Transform: (24, 683) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 19, y0: 676, x1: 21, y1: 674, cx0: 19, cy0: 675, cx1: 20, cy1: 674) > BezierCurve(x0: 28, y0: 674, x1: 30, y1: 676, cx0: 29, cy0: 674, cx1: 30, cy1: 675) > BezierCurve(x0: 30, y0: 683, x1: 28, y1: 685, cx0: 30, cy0: 684, cx1: 29, cy1: 685) > BezierCurve(x0: 21, y0: 685, x1: 19, y1: 683, cx0: 20, cy0: 685, cx1: 19, cy1: 684)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 353, y0: 749, x1: 355, y1: 748, cx0: 354, cy0: 748, cx1: 355, cy1: 748) > BezierCurve(x0: 362, y0: 748, x1: 364, y1: 749, cx0: 363, cy0: 748, cx1: 364, cy1: 748) > BezierCurve(x0: 364, y0: 750, x1: 362, y1: 749, cx0: 363, cy0: 749, cx1: 363, cy1: 749) > BezierCurve(x0: 355, y0: 749, x1: 354, y1: 750, cx0: 355, cy0: 749, cx1: 354, cy1: 749)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 364, y0: 749, x1: 365, y1: 751, cx0: 365, cy0: 749, cx1: 365, cy1: 750) > BezierCurve(x0: 365, y0: 758, x1: 364, y1: 760, cx0: 365, cy0: 759, cx1: 365, cy1: 759) > BezierCurve(x0: 364, y0: 759, x1: 364, y1: 758, cx0: 364, cy0: 759, cx1: 364, cy1: 758) > BezierCurve(x0: 364, y0: 751, x1: 364, y1: 750, cx0: 364, cy0: 750, cx1: 364, cy1: 750)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 364, y0: 760, x1: 362, y1: 761, cx0: 364, cy0: 760, cx1: 363, cy1: 761) > BezierCurve(x0: 355, y0: 761, x1: 353, y1: 760, cx0: 355, cy0: 761, cx1: 354, cy1: 760) > BezierCurve(x0: 354, y0: 759, x1: 355, y1: 760, cx0: 354, cy0: 760, cx1: 355, cy1: 760) > BezierCurve(x0: 362, y0: 760, x1: 364, y1: 759, cx0: 363, cy0: 760, cx1: 363, cy1: 760)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 353, y0: 760, x1: 352, y1: 758, cx0: 353, cy0: 759, cx1: 352, cy1: 759) > BezierCurve(x0: 352, y0: 751, x1: 353, y1: 749, cx0: 352, cy0: 750, cx1: 353, cy1: 749) > BezierCurve(x0: 354, y0: 750, x1: 353, y1: 751, cx0: 354, cy0: 750, cx1: 353, cy1: 750) > BezierCurve(x0: 353, y0: 758, x1: 354, y1: 759, cx0: 353, cy0: 758, cx1: 354, cy1: 759)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 674, x1: 21, y1: 673, cx0: 19, cy0: 673, cx1: 20, cy1: 673) > BezierCurve(x0: 28, y0: 673, x1: 30, y1: 674, cx0: 29, cy0: 673, cx1: 29, cy1: 673) > BezierCurve(x0: 29, y0: 674, x1: 28, y1: 674, cx0: 29, cy0: 674, cx1: 28, cy1: 674) > BezierCurve(x0: 21, y0: 674, x1: 20, y1: 674, cx0: 20, cy0: 674, cx1: 20, cy1: 674)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 30, y0: 674, x1: 31, y1: 676, cx0: 30, cy0: 674, cx1: 31, cy1: 675) > BezierCurve(x0: 31, y0: 683, x1: 30, y1: 685, cx0: 31, cy0: 683, cx1: 30, cy1: 684) > BezierCurve(x0: 29, y0: 684, x1: 30, y1: 683, cx0: 30, cy0: 684, cx1: 30, cy1: 683) > BezierCurve(x0: 30, y0: 676, x1: 29, y1: 674, cx0: 30, cy0: 675, cx1: 30, cy1: 675)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 30, y0: 685, x1: 28, y1: 686, cx0: 29, cy0: 685, cx1: 29, cy1: 686) > BezierCurve(x0: 21, y0: 686, x1: 19, y1: 685, cx0: 20, cy0: 686, cx1: 19, cy1: 685) > BezierCurve(x0: 20, y0: 684, x1: 21, y1: 685, cx0: 20, cy0: 684, cx1: 20, cy1: 685) > BezierCurve(x0: 28, y0: 685, x1: 29, y1: 684, cx0: 28, cy0: 685, cx1: 29, cy1: 684)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 685, x1: 18, y1: 683, cx0: 18, cy0: 684, cx1: 18, cy1: 683) > BezierCurve(x0: 18, y0: 676, x1: 19, y1: 674, cx0: 18, cy0: 675, cx1: 18, cy1: 674) > BezierCurve(x0: 20, y0: 674, x1: 19, y1: 676, cx0: 19, cy0: 675, cx1: 19, cy1: 675) > BezierCurve(x0: 19, y0: 683, x1: 20, y1: 684, cx0: 19, cy0: 683, cx1: 19, cy1: 684)) Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial - [355, 760]: ✔ -Transform: (396, 754) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 390, y0: 751, x1: 392, y1: 749, cx0: 390, cy0: 750, cx1: 391, cy1: 749) > BezierCurve(x0: 399, y0: 749, x1: 401, y1: 751, cx0: 400, cy0: 749, cx1: 401, cy1: 750) > BezierCurve(x0: 401, y0: 758, x1: 399, y1: 760, cx0: 401, cy0: 759, cx1: 400, cy1: 760) > BezierCurve(x0: 392, y0: 760, x1: 390, y1: 758, cx0: 391, cy0: 760, cx1: 390, cy1: 759)) + [20, 685]: ✔ +Transform: (61, 683) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 56, y0: 676, x1: 58, y1: 674, cx0: 56, cy0: 675, cx1: 57, cy1: 674) > BezierCurve(x0: 65, y0: 674, x1: 67, y1: 676, cx0: 66, cy0: 674, cx1: 67, cy1: 675) > BezierCurve(x0: 67, y0: 683, x1: 65, y1: 685, cx0: 67, cy0: 684, cx1: 66, cy1: 685) > BezierCurve(x0: 58, y0: 685, x1: 56, y1: 683, cx0: 57, cy0: 685, cx1: 56, cy1: 684)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 390, y0: 749, x1: 392, y1: 748, cx0: 391, cy0: 748, cx1: 391, cy1: 748) > BezierCurve(x0: 399, y0: 748, x1: 401, y1: 749, cx0: 400, cy0: 748, cx1: 401, cy1: 748) > BezierCurve(x0: 400, y0: 750, x1: 399, y1: 749, cx0: 400, cy0: 749, cx1: 400, cy1: 749) > BezierCurve(x0: 392, y0: 749, x1: 391, y1: 750, cx0: 392, cy0: 749, cx1: 391, cy1: 749)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 401, y0: 749, x1: 402, y1: 751, cx0: 402, cy0: 749, cx1: 402, cy1: 750) > BezierCurve(x0: 402, y0: 758, x1: 401, y1: 760, cx0: 402, cy0: 759, cx1: 402, cy1: 759) > BezierCurve(x0: 400, y0: 759, x1: 401, y1: 758, cx0: 401, cy0: 759, cx1: 401, cy1: 758) > BezierCurve(x0: 401, y0: 751, x1: 400, y1: 750, cx0: 401, cy0: 750, cx1: 401, cy1: 750)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 401, y0: 760, x1: 399, y1: 761, cx0: 401, cy0: 760, cx1: 400, cy1: 761) > BezierCurve(x0: 392, y0: 761, x1: 390, y1: 760, cx0: 391, cy0: 761, cx1: 391, cy1: 760) > BezierCurve(x0: 391, y0: 759, x1: 392, y1: 760, cx0: 391, cy0: 760, cx1: 392, cy1: 760) > BezierCurve(x0: 399, y0: 760, x1: 400, y1: 759, cx0: 400, cy0: 760, cx1: 400, cy1: 760)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 390, y0: 760, x1: 389, y1: 758, cx0: 390, cy0: 759, cx1: 389, cy1: 759) > BezierCurve(x0: 389, y0: 751, x1: 390, y1: 749, cx0: 389, cy0: 750, cx1: 390, cy1: 749) > BezierCurve(x0: 391, y0: 750, x1: 390, y1: 751, cx0: 390, cy0: 750, cx1: 390, cy1: 750) > BezierCurve(x0: 390, y0: 758, x1: 391, y1: 759, cx0: 390, cy0: 758, cx1: 390, cy1: 759)) -Clip: Path (BezierCurve(x0: 8, y0: 994, x1: 11, y1: 991, cx0: 8, cy0: 992, cx1: 9, cy1: 991) > BezierCurve(x0: 17, y0: 991, x1: 20, y1: 994, cx0: 19, cy0: 991, cx1: 20, cy1: 992) > BezierCurve(x0: 20, y0: 1000, x1: 17, y1: 1003, cx0: 20, cy0: 1001, cx1: 19, cy1: 1003) > BezierCurve(x0: 11, y0: 1003, x1: 8, y1: 1000, cx0: 9, cy0: 1003, cx1: 8, cy1: 1001)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 56, y0: 674, x1: 58, y1: 673, cx0: 56, cy0: 673, cx1: 57, cy1: 673) > BezierCurve(x0: 65, y0: 673, x1: 67, y1: 674, cx0: 65, cy0: 673, cx1: 66, cy1: 673) > BezierCurve(x0: 66, y0: 674, x1: 65, y1: 674, cx0: 66, cy0: 674, cx1: 65, cy1: 674) > BezierCurve(x0: 58, y0: 674, x1: 56, y1: 674, cx0: 57, cy0: 674, cx1: 57, cy1: 674)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 67, y0: 674, x1: 68, y1: 676, cx0: 67, cy0: 674, cx1: 68, cy1: 675) > BezierCurve(x0: 68, y0: 683, x1: 67, y1: 685, cx0: 68, cy0: 683, cx1: 67, cy1: 684) > BezierCurve(x0: 66, y0: 684, x1: 67, y1: 683, cx0: 66, cy0: 684, cx1: 67, cy1: 683) > BezierCurve(x0: 67, y0: 676, x1: 66, y1: 674, cx0: 67, cy0: 675, cx1: 66, cy1: 675)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 67, y0: 685, x1: 65, y1: 686, cx0: 66, cy0: 685, cx1: 65, cy1: 686) > BezierCurve(x0: 58, y0: 686, x1: 56, y1: 685, cx0: 57, cy0: 686, cx1: 56, cy1: 685) > BezierCurve(x0: 56, y0: 684, x1: 58, y1: 685, cx0: 57, cy0: 684, cx1: 57, cy1: 685) > BezierCurve(x0: 65, y0: 685, x1: 66, y1: 684, cx0: 65, cy0: 685, cx1: 66, cy1: 684)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 56, y0: 685, x1: 55, y1: 683, cx0: 55, cy0: 684, cx1: 55, cy1: 683) > BezierCurve(x0: 55, y0: 676, x1: 56, y1: 674, cx0: 55, cy0: 675, cx1: 55, cy1: 674) > BezierCurve(x0: 56, y0: 674, x1: 56, y1: 676, cx0: 56, cy0: 675, cx1: 56, cy1: 675) > BezierCurve(x0: 56, y0: 683, x1: 56, y1: 684, cx0: 56, cy0: 683, cx1: 56, cy1: 684)) +Clip: Path (BezierCurve(x0: 8, y0: 702, x1: 11, y1: 699, cx0: 8, cy0: 701, cx1: 9, cy1: 699) > BezierCurve(x0: 17, y0: 699, x1: 20, y1: 702, cx0: 19, cy0: 699, cx1: 20, cy1: 701) > BezierCurve(x0: 20, y0: 708, x1: 17, y1: 711, cx0: 20, cy0: 710, cx1: 19, cy1: 711) > BezierCurve(x0: 11, y0: 711, x1: 8, y1: 708, cx0: 9, cy0: 711, cx1: 8, cy1: 710)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 992, x1: 11, y1: 991, cx0: 9, cy0: 991, cx1: 10, cy1: 991) > BezierCurve(x0: 17, y0: 991, x1: 19, y1: 992, cx0: 18, cy0: 991, cx1: 19, cy1: 991) > BezierCurve(x0: 18, y0: 992, x1: 17, y1: 992, cx0: 18, cy0: 992, cx1: 18, cy1: 992) > BezierCurve(x0: 11, y0: 992, x1: 10, y1: 992, cx0: 10, cy0: 992, cx1: 10, cy1: 992)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 992, x1: 20, y1: 994, cx0: 20, cy0: 992, cx1: 20, cy1: 993) > BezierCurve(x0: 20, y0: 1000, x1: 19, y1: 1002, cx0: 20, cy0: 1001, cx1: 20, cy1: 1001) > BezierCurve(x0: 18, y0: 1001, x1: 19, y1: 1000, cx0: 19, cy0: 1001, cx1: 19, cy1: 1000) > BezierCurve(x0: 19, y0: 994, x1: 18, y1: 992, cx0: 19, cy0: 993, cx1: 19, cy1: 993)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 1002, x1: 17, y1: 1003, cx0: 19, cy0: 1002, cx1: 18, cy1: 1003) > BezierCurve(x0: 11, y0: 1003, x1: 9, y1: 1002, cx0: 10, cy0: 1003, cx1: 9, cy1: 1002) > BezierCurve(x0: 10, y0: 1001, x1: 11, y1: 1002, cx0: 10, cy0: 1002, cx1: 10, cy1: 1002) > BezierCurve(x0: 17, y0: 1002, x1: 18, y1: 1001, cx0: 18, cy0: 1002, cx1: 18, cy1: 1002)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 1002, x1: 8, y1: 1000, cx0: 8, cy0: 1001, cx1: 8, cy1: 1001) > BezierCurve(x0: 8, y0: 994, x1: 9, y1: 992, cx0: 8, cy0: 993, cx1: 8, cy1: 992) > BezierCurve(x0: 10, y0: 992, x1: 9, y1: 994, cx0: 9, cy0: 993, cx1: 9, cy1: 993) > BezierCurve(x0: 9, y0: 1000, x1: 10, y1: 1001, cx0: 9, cy0: 1000, cx1: 9, cy1: 1001)) \ No newline at end of file +Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 700, x1: 11, y1: 699, cx0: 9, cy0: 700, cx1: 10, cy1: 699) > BezierCurve(x0: 17, y0: 699, x1: 19, y1: 700, cx0: 18, cy0: 699, cx1: 19, cy1: 700) > BezierCurve(x0: 18, y0: 701, x1: 17, y1: 700, cx0: 18, cy0: 700, cx1: 18, cy1: 700) > BezierCurve(x0: 11, y0: 700, x1: 10, y1: 701, cx0: 10, cy0: 700, cx1: 10, cy1: 700)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 700, x1: 20, y1: 702, cx0: 20, cy0: 701, cx1: 20, cy1: 701) > BezierCurve(x0: 20, y0: 708, x1: 19, y1: 710, cx0: 20, cy0: 709, cx1: 20, cy1: 710) > BezierCurve(x0: 18, y0: 710, x1: 19, y1: 708, cx0: 19, cy0: 709, cx1: 19, cy1: 709) > BezierCurve(x0: 19, y0: 702, x1: 18, y1: 701, cx0: 19, cy0: 702, cx1: 19, cy1: 701)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 710, x1: 17, y1: 711, cx0: 19, cy0: 711, cx1: 18, cy1: 711) > BezierCurve(x0: 11, y0: 711, x1: 9, y1: 710, cx0: 10, cy0: 711, cx1: 9, cy1: 711) > BezierCurve(x0: 10, y0: 710, x1: 11, y1: 710, cx0: 10, cy0: 710, cx1: 10, cy1: 710) > BezierCurve(x0: 17, y0: 710, x1: 18, y1: 710, cx0: 18, cy0: 710, cx1: 18, cy1: 710)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 710, x1: 8, y1: 708, cx0: 8, cy0: 710, cx1: 8, cy1: 709) > BezierCurve(x0: 8, y0: 702, x1: 9, y1: 700, cx0: 8, cy0: 701, cx1: 8, cy1: 701) > BezierCurve(x0: 10, y0: 701, x1: 9, y1: 702, cx0: 9, cy0: 701, cx1: 9, cy1: 702) > BezierCurve(x0: 9, y0: 708, x1: 10, y1: 710, cx0: 9, cy0: 709, cx1: 9, cy1: 709)) \ No newline at end of file diff --git a/tests/reftests/list/decimal-leading-zero.html b/tests/reftests/list/decimal-leading-zero.html index 7704a42ec..d994d3119 100644 --- a/tests/reftests/list/decimal-leading-zero.html +++ b/tests/reftests/list/decimal-leading-zero.html @@ -40,13 +40,14 @@ clear:both; } li{ - border:1px solid black; width:100px; margin:0; } ol{ margin:0; - + } + body { + font-family: Arial; } diff --git a/tests/reftests/list/decimal-leading-zero.txt b/tests/reftests/list/decimal-leading-zero.txt index ee4798ee0..ce20db718 100644 --- a/tests/reftests/list/decimal-leading-zero.txt +++ b/tests/reftests/list/decimal-leading-zero.txt @@ -1,603 +1,203 @@ -Window: [800, 5216] -Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Window: [800, 5016] +Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 23]: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 75]: 2 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 127]: 3 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 179]: 4 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 231]: 5 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 283]: 6 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 335]: 7 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 387]: 8 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 439]: 9 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 491]: 10 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 543]: 11 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 595]: 12 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 647]: 13 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 699]: 14 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 751]: 15 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 803]: 16 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 855]: 17 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 907]: 18 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 959]: 19 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1011]: 20 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1063]: 21 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1115]: 22 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1167]: 23 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1219]: 24 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1271]: 25 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1323]: 26 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1375]: 27 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1427]: 28 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1479]: 29 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1531]: 30 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1583]: 31 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1635]: 32 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1687]: 33 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1739]: 34 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1791]: 35 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1843]: 36 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1895]: 37 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1947]: 38 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1999]: 39 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2051]: 40 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2103]: 41 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2155]: 42 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2207]: 43 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2259]: 44 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2311]: 45 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2363]: 46 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2415]: 47 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2467]: 48 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2519]: 49 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2571]: 50 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2623]: 51 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2675]: 52 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2727]: 53 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2779]: 54 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2831]: 55 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2883]: 56 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2935]: 57 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2987]: 58 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3039]: 59 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3091]: 60 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3143]: 61 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3195]: 62 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3247]: 63 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3299]: 64 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3351]: 65 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3403]: 66 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3455]: 67 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3507]: 68 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3559]: 69 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3611]: 70 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3663]: 71 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3715]: 72 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3767]: 73 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3819]: 74 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3871]: 75 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3923]: 76 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3975]: 77 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4027]: 78 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4079]: 79 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4131]: 80 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4183]: 81 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4235]: 82 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4287]: 83 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4339]: 84 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4391]: 85 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4443]: 86 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4495]: 87 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4547]: 88 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4599]: 89 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4651]: 90 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4703]: 91 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4755]: 92 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4807]: 93 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4859]: 94 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4911]: 95 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4963]: 96 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5015]: 97 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5067]: 98 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5119]: 99 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [89, 5171]: 100 \ No newline at end of file +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 22]: 1 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 72]: 2 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 122]: 3 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 172]: 4 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 222]: 5 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 272]: 6 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 322]: 7 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 372]: 8 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 422]: 9 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 472]: 10 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 522]: 11 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 572]: 12 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 622]: 13 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 672]: 14 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 722]: 15 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 772]: 16 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 822]: 17 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 872]: 18 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 922]: 19 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 972]: 20 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1022]: 21 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1072]: 22 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1122]: 23 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1172]: 24 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1222]: 25 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1272]: 26 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1322]: 27 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1372]: 28 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1422]: 29 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1472]: 30 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1522]: 31 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1572]: 32 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1622]: 33 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1672]: 34 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1722]: 35 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1772]: 36 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1822]: 37 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1872]: 38 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1922]: 39 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1972]: 40 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2022]: 41 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2072]: 42 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2122]: 43 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2172]: 44 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2222]: 45 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2272]: 46 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2322]: 47 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2372]: 48 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2422]: 49 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2472]: 50 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2522]: 51 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2572]: 52 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2622]: 53 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2672]: 54 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2722]: 55 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2772]: 56 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2822]: 57 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2872]: 58 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2922]: 59 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2972]: 60 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3022]: 61 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3072]: 62 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3122]: 63 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3172]: 64 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3222]: 65 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3272]: 66 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3322]: 67 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3372]: 68 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3422]: 69 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3472]: 70 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3522]: 71 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3572]: 72 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3622]: 73 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3672]: 74 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3722]: 75 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3772]: 76 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3822]: 77 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3872]: 78 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3922]: 79 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3972]: 80 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4022]: 81 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4072]: 82 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4122]: 83 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4172]: 84 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4222]: 85 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4272]: 86 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4322]: 87 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4372]: 88 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4422]: 89 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4472]: 90 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4522]: 91 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4572]: 92 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4622]: 93 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4672]: 94 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4722]: 95 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4772]: 96 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4822]: 97 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4872]: 98 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4922]: 99 +Text: rgb(0,0,0) normal normal 400 20px Arial + [92, 4972]: 100 \ No newline at end of file diff --git a/tests/reftests/list/decimal.html b/tests/reftests/list/decimal.html index b92a401ad..6ba5ce6ce 100644 --- a/tests/reftests/list/decimal.html +++ b/tests/reftests/list/decimal.html @@ -40,13 +40,14 @@ clear:both; } li{ - border:1px solid black; width:100px; margin:0; } ol{ margin:0; - + } + body { + font-family: Arial; } diff --git a/tests/reftests/list/decimal.txt b/tests/reftests/list/decimal.txt index d97857c27..eb82c6f17 100644 --- a/tests/reftests/list/decimal.txt +++ b/tests/reftests/list/decimal.txt @@ -1,603 +1,203 @@ -Window: [800, 5216] -Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Window: [800, 5016] +Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 23]: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 75]: 2 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 127]: 3 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 179]: 4 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 231]: 5 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 283]: 6 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 335]: 7 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 387]: 8 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 439]: 9 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 491]: 10 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 543]: 11 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 595]: 12 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 647]: 13 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 699]: 14 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 751]: 15 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 803]: 16 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 855]: 17 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 907]: 18 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 959]: 19 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1011]: 20 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1063]: 21 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1115]: 22 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1167]: 23 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1219]: 24 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1271]: 25 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1323]: 26 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1375]: 27 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1427]: 28 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1479]: 29 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1531]: 30 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1583]: 31 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1635]: 32 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1687]: 33 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1739]: 34 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1791]: 35 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1843]: 36 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1895]: 37 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1947]: 38 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 1999]: 39 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2051]: 40 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2103]: 41 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2155]: 42 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2207]: 43 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2259]: 44 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2311]: 45 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2363]: 46 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2415]: 47 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2467]: 48 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2519]: 49 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2571]: 50 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2623]: 51 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2675]: 52 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2727]: 53 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2779]: 54 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2831]: 55 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2883]: 56 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2935]: 57 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2987]: 58 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3039]: 59 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3091]: 60 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3143]: 61 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3195]: 62 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3247]: 63 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3299]: 64 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3351]: 65 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3403]: 66 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3455]: 67 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3507]: 68 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3559]: 69 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3611]: 70 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3663]: 71 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3715]: 72 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3767]: 73 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3819]: 74 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3871]: 75 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3923]: 76 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3975]: 77 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4027]: 78 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4079]: 79 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4131]: 80 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4183]: 81 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4235]: 82 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4287]: 83 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4339]: 84 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4391]: 85 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4443]: 86 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4495]: 87 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4547]: 88 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4599]: 89 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4651]: 90 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4703]: 91 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4755]: 92 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4807]: 93 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4859]: 94 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4911]: 95 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 4963]: 96 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5015]: 97 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5067]: 98 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 5119]: 99 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [89, 5171]: 100 \ No newline at end of file +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 22]: 1 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 72]: 2 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 122]: 3 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 172]: 4 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 222]: 5 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 272]: 6 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 322]: 7 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 372]: 8 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 422]: 9 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 472]: 10 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 522]: 11 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 572]: 12 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 622]: 13 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 672]: 14 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 722]: 15 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 772]: 16 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 822]: 17 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 872]: 18 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 922]: 19 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 972]: 20 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1022]: 21 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1072]: 22 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1122]: 23 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1172]: 24 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1222]: 25 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1272]: 26 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1322]: 27 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1372]: 28 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1422]: 29 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1472]: 30 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1522]: 31 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1572]: 32 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1622]: 33 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1672]: 34 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1722]: 35 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1772]: 36 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1822]: 37 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1872]: 38 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1922]: 39 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1972]: 40 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2022]: 41 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2072]: 42 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2122]: 43 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2172]: 44 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2222]: 45 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2272]: 46 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2322]: 47 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2372]: 48 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2422]: 49 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2472]: 50 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2522]: 51 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2572]: 52 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2622]: 53 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2672]: 54 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2722]: 55 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2772]: 56 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2822]: 57 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2872]: 58 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2922]: 59 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2972]: 60 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3022]: 61 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3072]: 62 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3122]: 63 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3172]: 64 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3222]: 65 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3272]: 66 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3322]: 67 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3372]: 68 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3422]: 69 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3472]: 70 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3522]: 71 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3572]: 72 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3622]: 73 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3672]: 74 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3722]: 75 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3772]: 76 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3822]: 77 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3872]: 78 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3922]: 79 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3972]: 80 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4022]: 81 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4072]: 82 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4122]: 83 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4172]: 84 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4222]: 85 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4272]: 86 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4322]: 87 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4372]: 88 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4422]: 89 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4472]: 90 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4522]: 91 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4572]: 92 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4622]: 93 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4672]: 94 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4722]: 95 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4772]: 96 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4822]: 97 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4872]: 98 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 4922]: 99 +Text: rgb(0,0,0) normal normal 400 20px Arial + [92, 4972]: 100 \ No newline at end of file diff --git a/tests/reftests/list/lower-alpha.html b/tests/reftests/list/lower-alpha.html index 734339369..6124b1215 100644 --- a/tests/reftests/list/lower-alpha.html +++ b/tests/reftests/list/lower-alpha.html @@ -40,13 +40,14 @@ clear:both; } li{ - border:1px solid black; width:100px; margin:0; } ol{ margin:0; - + } + body { + font-family: Arial; } diff --git a/tests/reftests/list/lower-alpha.txt b/tests/reftests/list/lower-alpha.txt index 96a2b1167..13af8c585 100644 --- a/tests/reftests/list/lower-alpha.txt +++ b/tests/reftests/list/lower-alpha.txt @@ -1,603 +1,203 @@ -Window: [800, 5216] -Rectangle: [0, 0, 800, 5216] rgba(0,0,0,0) +Window: [800, 5016] +Rectangle: [0, 0, 800, 5016] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [68, 23]: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 75]: 2 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [68, 127]: 3 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 179]: 4 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [68, 231]: 5 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [66, 283]: 6 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 335]: 7 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 387]: 8 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [65, 439]: 9 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [65, 491]: 10 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 543]: 11 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [65, 595]: 12 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 647]: 13 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 699]: 14 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 751]: 15 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 803]: 16 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 855]: 17 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [66, 907]: 18 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [67, 959]: 19 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [65, 1011]: 20 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 1063]: 21 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 1115]: 22 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 1167]: 23 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 1219]: 24 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [69, 1271]: 25 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [68, 1323]: 26 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 1375]: 27 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 1427]: 28 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 1479]: 29 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 1531]: 30 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 1583]: 31 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 1635]: 32 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 1687]: 33 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 1739]: 34 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 1791]: 35 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 1843]: 36 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1931) > Vector(x: 149, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1931) > Vector(x: 149, y: 1931)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1931)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 1895]: 37 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1932) > Vector(x: 150, y: 1932) > Vector(x: 149, y: 1933) > Vector(x: 49, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1932) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1983) > Vector(x: 149, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1983) > Vector(x: 149, y: 1983)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 48, y: 1932) > Vector(x: 49, y: 1933) > Vector(x: 49, y: 1983)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 1947]: 38 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1984) > Vector(x: 150, y: 1984) > Vector(x: 149, y: 1985) > Vector(x: 49, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1984) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2035) > Vector(x: 149, y: 1985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2035) > Vector(x: 149, y: 2035)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 48, y: 1984) > Vector(x: 49, y: 1985) > Vector(x: 49, y: 2035)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [83, 1999]: 39 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2036) > Vector(x: 150, y: 2036) > Vector(x: 149, y: 2037) > Vector(x: 49, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2036) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2087) > Vector(x: 149, y: 2037)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2087) > Vector(x: 149, y: 2087)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 48, y: 2036) > Vector(x: 49, y: 2037) > Vector(x: 49, y: 2087)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2051]: 40 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2088) > Vector(x: 150, y: 2088) > Vector(x: 149, y: 2089) > Vector(x: 49, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2088) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2139) > Vector(x: 149, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2139) > Vector(x: 149, y: 2139)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 48, y: 2088) > Vector(x: 49, y: 2089) > Vector(x: 49, y: 2139)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2103]: 41 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2140) > Vector(x: 150, y: 2140) > Vector(x: 149, y: 2141) > Vector(x: 49, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2140) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2191) > Vector(x: 149, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2191) > Vector(x: 149, y: 2191)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 48, y: 2140) > Vector(x: 49, y: 2141) > Vector(x: 49, y: 2191)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2155]: 42 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2192) > Vector(x: 150, y: 2192) > Vector(x: 149, y: 2193) > Vector(x: 49, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2192) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2243) > Vector(x: 149, y: 2193)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2243) > Vector(x: 149, y: 2243)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 48, y: 2192) > Vector(x: 49, y: 2193) > Vector(x: 49, y: 2243)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2207]: 43 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2244) > Vector(x: 150, y: 2244) > Vector(x: 149, y: 2245) > Vector(x: 49, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2244) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2295) > Vector(x: 149, y: 2245)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2295) > Vector(x: 149, y: 2295)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 48, y: 2244) > Vector(x: 49, y: 2245) > Vector(x: 49, y: 2295)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 2259]: 44 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2296) > Vector(x: 150, y: 2296) > Vector(x: 149, y: 2297) > Vector(x: 49, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2296) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2347) > Vector(x: 149, y: 2297)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2347) > Vector(x: 149, y: 2347)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 48, y: 2296) > Vector(x: 49, y: 2297) > Vector(x: 49, y: 2347)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [76, 2311]: 45 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2348) > Vector(x: 150, y: 2348) > Vector(x: 149, y: 2349) > Vector(x: 49, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2348) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2399) > Vector(x: 149, y: 2349)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2399) > Vector(x: 149, y: 2399)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 48, y: 2348) > Vector(x: 49, y: 2349) > Vector(x: 49, y: 2399)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 2363]: 46 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2400) > Vector(x: 150, y: 2400) > Vector(x: 149, y: 2401) > Vector(x: 49, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2400) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2451) > Vector(x: 149, y: 2401)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2451) > Vector(x: 149, y: 2451)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 48, y: 2400) > Vector(x: 49, y: 2401) > Vector(x: 49, y: 2451)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2415]: 47 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2452) > Vector(x: 150, y: 2452) > Vector(x: 149, y: 2453) > Vector(x: 49, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2452) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2503) > Vector(x: 149, y: 2453)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2503) > Vector(x: 149, y: 2503)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 48, y: 2452) > Vector(x: 49, y: 2453) > Vector(x: 49, y: 2503)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2467]: 48 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2504) > Vector(x: 150, y: 2504) > Vector(x: 149, y: 2505) > Vector(x: 49, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2504) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2555) > Vector(x: 149, y: 2505)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2555) > Vector(x: 149, y: 2555)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 48, y: 2504) > Vector(x: 49, y: 2505) > Vector(x: 49, y: 2555)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [82, 2519]: 49 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2556) > Vector(x: 150, y: 2556) > Vector(x: 149, y: 2557) > Vector(x: 49, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2556) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2607) > Vector(x: 149, y: 2557)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2607) > Vector(x: 149, y: 2607)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 48, y: 2556) > Vector(x: 49, y: 2557) > Vector(x: 49, y: 2607)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2571]: 50 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2608) > Vector(x: 150, y: 2608) > Vector(x: 149, y: 2609) > Vector(x: 49, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2608) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2659) > Vector(x: 149, y: 2609)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2659) > Vector(x: 149, y: 2659)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 48, y: 2608) > Vector(x: 49, y: 2609) > Vector(x: 49, y: 2659)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2623]: 51 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2660) > Vector(x: 150, y: 2660) > Vector(x: 149, y: 2661) > Vector(x: 49, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2660) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2711) > Vector(x: 149, y: 2661)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2711) > Vector(x: 149, y: 2711)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 48, y: 2660) > Vector(x: 49, y: 2661) > Vector(x: 49, y: 2711)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 2675]: 52 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2712) > Vector(x: 150, y: 2712) > Vector(x: 149, y: 2713) > Vector(x: 49, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2712) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2763) > Vector(x: 149, y: 2713)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2763) > Vector(x: 149, y: 2763)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 48, y: 2712) > Vector(x: 49, y: 2713) > Vector(x: 49, y: 2763)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2727]: 53 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2764) > Vector(x: 150, y: 2764) > Vector(x: 149, y: 2765) > Vector(x: 49, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2764) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2815) > Vector(x: 149, y: 2765)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2815) > Vector(x: 149, y: 2815)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 48, y: 2764) > Vector(x: 49, y: 2765) > Vector(x: 49, y: 2815)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2779]: 54 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2816) > Vector(x: 150, y: 2816) > Vector(x: 149, y: 2817) > Vector(x: 49, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2816) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2867) > Vector(x: 149, y: 2817)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2867) > Vector(x: 149, y: 2867)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 48, y: 2816) > Vector(x: 49, y: 2817) > Vector(x: 49, y: 2867)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2831]: 55 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2868) > Vector(x: 150, y: 2868) > Vector(x: 149, y: 2869) > Vector(x: 49, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2868) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2919) > Vector(x: 149, y: 2869)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2919) > Vector(x: 149, y: 2919)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 48, y: 2868) > Vector(x: 49, y: 2869) > Vector(x: 49, y: 2919)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 2883]: 56 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2920) > Vector(x: 150, y: 2920) > Vector(x: 149, y: 2921) > Vector(x: 49, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2920) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2971) > Vector(x: 149, y: 2921)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2971) > Vector(x: 149, y: 2971)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 48, y: 2920) > Vector(x: 49, y: 2921) > Vector(x: 49, y: 2971)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2935]: 57 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2972) > Vector(x: 150, y: 2972) > Vector(x: 149, y: 2973) > Vector(x: 49, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2972) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3023) > Vector(x: 149, y: 2973)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3023) > Vector(x: 149, y: 3023)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 48, y: 2972) > Vector(x: 49, y: 2973) > Vector(x: 49, y: 3023)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [76, 2987]: 58 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3024) > Vector(x: 150, y: 3024) > Vector(x: 149, y: 3025) > Vector(x: 49, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3024) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3075) > Vector(x: 149, y: 3025)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3075) > Vector(x: 149, y: 3075)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 48, y: 3024) > Vector(x: 49, y: 3025) > Vector(x: 49, y: 3075)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3039]: 59 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3076) > Vector(x: 150, y: 3076) > Vector(x: 149, y: 3077) > Vector(x: 49, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3076) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3127) > Vector(x: 149, y: 3077)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3127) > Vector(x: 149, y: 3127)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 48, y: 3076) > Vector(x: 49, y: 3077) > Vector(x: 49, y: 3127)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3091]: 60 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3128) > Vector(x: 150, y: 3128) > Vector(x: 149, y: 3129) > Vector(x: 49, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3128) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3179) > Vector(x: 149, y: 3129)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3179) > Vector(x: 149, y: 3179)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 48, y: 3128) > Vector(x: 49, y: 3129) > Vector(x: 49, y: 3179)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 3143]: 61 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3180) > Vector(x: 150, y: 3180) > Vector(x: 149, y: 3181) > Vector(x: 49, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3180) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3231) > Vector(x: 149, y: 3181)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3231) > Vector(x: 149, y: 3231)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 48, y: 3180) > Vector(x: 49, y: 3181) > Vector(x: 49, y: 3231)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 3195]: 62 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3232) > Vector(x: 150, y: 3232) > Vector(x: 149, y: 3233) > Vector(x: 49, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3232) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3283) > Vector(x: 149, y: 3233)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3283) > Vector(x: 149, y: 3283)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 48, y: 3232) > Vector(x: 49, y: 3233) > Vector(x: 49, y: 3283)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3247]: 63 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3284) > Vector(x: 150, y: 3284) > Vector(x: 149, y: 3285) > Vector(x: 49, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3284) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3335) > Vector(x: 149, y: 3285)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3335) > Vector(x: 149, y: 3335)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 48, y: 3284) > Vector(x: 49, y: 3285) > Vector(x: 49, y: 3335)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 3299]: 64 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3336) > Vector(x: 150, y: 3336) > Vector(x: 149, y: 3337) > Vector(x: 49, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3336) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3387) > Vector(x: 149, y: 3337)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3387) > Vector(x: 149, y: 3387)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 48, y: 3336) > Vector(x: 49, y: 3337) > Vector(x: 49, y: 3387)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [85, 3351]: 65 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3388) > Vector(x: 150, y: 3388) > Vector(x: 149, y: 3389) > Vector(x: 49, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3388) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3439) > Vector(x: 149, y: 3389)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3439) > Vector(x: 149, y: 3439)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 48, y: 3388) > Vector(x: 49, y: 3389) > Vector(x: 49, y: 3439)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3403]: 66 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3440) > Vector(x: 150, y: 3440) > Vector(x: 149, y: 3441) > Vector(x: 49, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3440) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3491) > Vector(x: 149, y: 3441)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3491) > Vector(x: 149, y: 3491)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 48, y: 3440) > Vector(x: 49, y: 3441) > Vector(x: 49, y: 3491)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3455]: 67 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3492) > Vector(x: 150, y: 3492) > Vector(x: 149, y: 3493) > Vector(x: 49, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3492) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3543) > Vector(x: 149, y: 3493)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3543) > Vector(x: 149, y: 3543)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 48, y: 3492) > Vector(x: 49, y: 3493) > Vector(x: 49, y: 3543)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3507]: 68 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3544) > Vector(x: 150, y: 3544) > Vector(x: 149, y: 3545) > Vector(x: 49, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3544) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3595) > Vector(x: 149, y: 3545)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3595) > Vector(x: 149, y: 3595)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 48, y: 3544) > Vector(x: 49, y: 3545) > Vector(x: 49, y: 3595)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3559]: 69 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3596) > Vector(x: 150, y: 3596) > Vector(x: 149, y: 3597) > Vector(x: 49, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3596) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3647) > Vector(x: 149, y: 3597)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3647) > Vector(x: 149, y: 3647)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 48, y: 3596) > Vector(x: 49, y: 3597) > Vector(x: 49, y: 3647)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [76, 3611]: 70 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3648) > Vector(x: 150, y: 3648) > Vector(x: 149, y: 3649) > Vector(x: 49, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3648) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3699) > Vector(x: 149, y: 3649)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3699) > Vector(x: 149, y: 3699)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 48, y: 3648) > Vector(x: 49, y: 3649) > Vector(x: 49, y: 3699)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 3663]: 71 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3700) > Vector(x: 150, y: 3700) > Vector(x: 149, y: 3701) > Vector(x: 49, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3700) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3751) > Vector(x: 149, y: 3701)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3751) > Vector(x: 149, y: 3751)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 48, y: 3700) > Vector(x: 49, y: 3701) > Vector(x: 49, y: 3751)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 3715]: 72 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3752) > Vector(x: 150, y: 3752) > Vector(x: 149, y: 3753) > Vector(x: 49, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3752) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3803) > Vector(x: 149, y: 3753)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3803) > Vector(x: 149, y: 3803)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 48, y: 3752) > Vector(x: 49, y: 3753) > Vector(x: 49, y: 3803)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3767]: 73 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3804) > Vector(x: 150, y: 3804) > Vector(x: 149, y: 3805) > Vector(x: 49, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3804) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3855) > Vector(x: 149, y: 3805)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3855) > Vector(x: 149, y: 3855)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 48, y: 3804) > Vector(x: 49, y: 3805) > Vector(x: 49, y: 3855)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3819]: 74 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3856) > Vector(x: 150, y: 3856) > Vector(x: 149, y: 3857) > Vector(x: 49, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3856) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3907) > Vector(x: 149, y: 3857)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3907) > Vector(x: 149, y: 3907)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 48, y: 3856) > Vector(x: 49, y: 3857) > Vector(x: 49, y: 3907)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [83, 3871]: 75 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3908) > Vector(x: 150, y: 3908) > Vector(x: 149, y: 3909) > Vector(x: 49, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3908) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3959) > Vector(x: 149, y: 3909)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3959) > Vector(x: 149, y: 3959)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 48, y: 3908) > Vector(x: 49, y: 3909) > Vector(x: 49, y: 3959)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3923]: 76 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3960) > Vector(x: 150, y: 3960) > Vector(x: 149, y: 3961) > Vector(x: 49, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3960) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4011) > Vector(x: 149, y: 3961)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4011) > Vector(x: 149, y: 4011)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 48, y: 3960) > Vector(x: 49, y: 3961) > Vector(x: 49, y: 4011)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 3975]: 77 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4012) > Vector(x: 150, y: 4012) > Vector(x: 149, y: 4013) > Vector(x: 49, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4012) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4063) > Vector(x: 149, y: 4013)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4063) > Vector(x: 149, y: 4063)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 48, y: 4012) > Vector(x: 49, y: 4013) > Vector(x: 49, y: 4063)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4027]: 78 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4064) > Vector(x: 150, y: 4064) > Vector(x: 149, y: 4065) > Vector(x: 49, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4064) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4115) > Vector(x: 149, y: 4065)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4115) > Vector(x: 149, y: 4115)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 48, y: 4064) > Vector(x: 49, y: 4065) > Vector(x: 49, y: 4115)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 4079]: 79 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4116) > Vector(x: 150, y: 4116) > Vector(x: 149, y: 4117) > Vector(x: 49, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4116) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4167) > Vector(x: 149, y: 4117)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4167) > Vector(x: 149, y: 4167)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 48, y: 4116) > Vector(x: 49, y: 4117) > Vector(x: 49, y: 4167)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4131]: 80 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4168) > Vector(x: 150, y: 4168) > Vector(x: 149, y: 4169) > Vector(x: 49, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4168) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4219) > Vector(x: 149, y: 4169)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4219) > Vector(x: 149, y: 4219)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 48, y: 4168) > Vector(x: 49, y: 4169) > Vector(x: 49, y: 4219)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 4183]: 81 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4220) > Vector(x: 150, y: 4220) > Vector(x: 149, y: 4221) > Vector(x: 49, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4220) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4271) > Vector(x: 149, y: 4221)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4271) > Vector(x: 149, y: 4271)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 48, y: 4220) > Vector(x: 49, y: 4221) > Vector(x: 49, y: 4271)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4235]: 82 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4272) > Vector(x: 150, y: 4272) > Vector(x: 149, y: 4273) > Vector(x: 49, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4272) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4323) > Vector(x: 149, y: 4273)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4323) > Vector(x: 149, y: 4323)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 48, y: 4272) > Vector(x: 49, y: 4273) > Vector(x: 49, y: 4323)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [77, 4287]: 83 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4324) > Vector(x: 150, y: 4324) > Vector(x: 149, y: 4325) > Vector(x: 49, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4324) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4375) > Vector(x: 149, y: 4325)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4375) > Vector(x: 149, y: 4375)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 48, y: 4324) > Vector(x: 49, y: 4325) > Vector(x: 49, y: 4375)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 4339]: 84 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4376) > Vector(x: 150, y: 4376) > Vector(x: 149, y: 4377) > Vector(x: 49, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4376) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4427) > Vector(x: 149, y: 4377)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4427) > Vector(x: 149, y: 4427)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 48, y: 4376) > Vector(x: 49, y: 4377) > Vector(x: 49, y: 4427)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4391]: 85 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4428) > Vector(x: 150, y: 4428) > Vector(x: 149, y: 4429) > Vector(x: 49, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4428) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4479) > Vector(x: 149, y: 4429)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4479) > Vector(x: 149, y: 4479)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 48, y: 4428) > Vector(x: 49, y: 4429) > Vector(x: 49, y: 4479)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4443]: 86 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4480) > Vector(x: 150, y: 4480) > Vector(x: 149, y: 4481) > Vector(x: 49, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4480) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4531) > Vector(x: 149, y: 4481)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4531) > Vector(x: 149, y: 4531)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 48, y: 4480) > Vector(x: 49, y: 4481) > Vector(x: 49, y: 4531)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 4495]: 87 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4532) > Vector(x: 150, y: 4532) > Vector(x: 149, y: 4533) > Vector(x: 49, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4532) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4583) > Vector(x: 149, y: 4533)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4583) > Vector(x: 149, y: 4583)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 48, y: 4532) > Vector(x: 49, y: 4533) > Vector(x: 49, y: 4583)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 4547]: 88 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4584) > Vector(x: 150, y: 4584) > Vector(x: 149, y: 4585) > Vector(x: 49, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4584) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4635) > Vector(x: 149, y: 4585)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4635) > Vector(x: 149, y: 4635)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 48, y: 4584) > Vector(x: 49, y: 4585) > Vector(x: 49, y: 4635)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4599]: 89 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4636) > Vector(x: 150, y: 4636) > Vector(x: 149, y: 4637) > Vector(x: 49, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4636) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4687) > Vector(x: 149, y: 4637)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4687) > Vector(x: 149, y: 4687)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 48, y: 4636) > Vector(x: 49, y: 4637) > Vector(x: 49, y: 4687)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 4651]: 90 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4688) > Vector(x: 150, y: 4688) > Vector(x: 149, y: 4689) > Vector(x: 49, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4688) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4739) > Vector(x: 149, y: 4689)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4739) > Vector(x: 149, y: 4739)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 48, y: 4688) > Vector(x: 49, y: 4689) > Vector(x: 49, y: 4739)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [83, 4703]: 91 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4740) > Vector(x: 150, y: 4740) > Vector(x: 149, y: 4741) > Vector(x: 49, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4740) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4791) > Vector(x: 149, y: 4741)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4791) > Vector(x: 149, y: 4791)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 48, y: 4740) > Vector(x: 49, y: 4741) > Vector(x: 49, y: 4791)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4755]: 92 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4792) > Vector(x: 150, y: 4792) > Vector(x: 149, y: 4793) > Vector(x: 49, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4792) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4843) > Vector(x: 149, y: 4793)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4843) > Vector(x: 149, y: 4843)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 48, y: 4792) > Vector(x: 49, y: 4793) > Vector(x: 49, y: 4843)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4807]: 93 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4844) > Vector(x: 150, y: 4844) > Vector(x: 149, y: 4845) > Vector(x: 49, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4844) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4895) > Vector(x: 149, y: 4845)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4895) > Vector(x: 149, y: 4895)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 48, y: 4844) > Vector(x: 49, y: 4845) > Vector(x: 49, y: 4895)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4859]: 94 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4896) > Vector(x: 150, y: 4896) > Vector(x: 149, y: 4897) > Vector(x: 49, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4896) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4947) > Vector(x: 149, y: 4897)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4947) > Vector(x: 149, y: 4947)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 48, y: 4896) > Vector(x: 49, y: 4897) > Vector(x: 49, y: 4947)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 4911]: 95 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4948) > Vector(x: 150, y: 4948) > Vector(x: 149, y: 4949) > Vector(x: 49, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4948) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 4999) > Vector(x: 149, y: 4949)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 4999) > Vector(x: 149, y: 4999)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 48, y: 4948) > Vector(x: 49, y: 4949) > Vector(x: 49, y: 4999)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [75, 4963]: 96 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5000) > Vector(x: 150, y: 5000) > Vector(x: 149, y: 5001) > Vector(x: 49, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5000) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5051) > Vector(x: 149, y: 5001)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5051) > Vector(x: 149, y: 5051)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 48, y: 5000) > Vector(x: 49, y: 5001) > Vector(x: 49, y: 5051)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [76, 5015]: 97 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5052) > Vector(x: 150, y: 5052) > Vector(x: 149, y: 5053) > Vector(x: 49, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5052) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5103) > Vector(x: 149, y: 5053)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5103) > Vector(x: 149, y: 5103)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 48, y: 5052) > Vector(x: 49, y: 5053) > Vector(x: 49, y: 5103)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 5067]: 98 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5104) > Vector(x: 150, y: 5104) > Vector(x: 149, y: 5105) > Vector(x: 49, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5104) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5155) > Vector(x: 149, y: 5105)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5155) > Vector(x: 149, y: 5155)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 48, y: 5104) > Vector(x: 49, y: 5105) > Vector(x: 49, y: 5155)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 5119]: 99 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5156) > Vector(x: 150, y: 5156) > Vector(x: 149, y: 5157) > Vector(x: 49, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5156) > Vector(x: 150, y: 5208) > Vector(x: 149, y: 5207) > Vector(x: 149, y: 5157)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5208) > Vector(x: 48, y: 5208) > Vector(x: 49, y: 5207) > Vector(x: 149, y: 5207)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5208) > Vector(x: 48, y: 5156) > Vector(x: 49, y: 5157) > Vector(x: 49, y: 5207)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 5171]: 100 \ No newline at end of file +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 22]: 1 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 72]: 2 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 122]: 3 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 172]: 4 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 222]: 5 +Text: rgb(0,0,0) normal normal 400 20px Arial + [65, 272]: 6 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 322]: 7 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 372]: 8 +Text: rgb(0,0,0) normal normal 400 20px Arial + [64, 422]: 9 +Text: rgb(0,0,0) normal normal 400 20px Arial + [64, 472]: 10 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 522]: 11 +Text: rgb(0,0,0) normal normal 400 20px Arial + [64, 572]: 12 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 622]: 13 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 672]: 14 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 722]: 15 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 772]: 16 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 822]: 17 +Text: rgb(0,0,0) normal normal 400 20px Arial + [66, 872]: 18 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 922]: 19 +Text: rgb(0,0,0) normal normal 400 20px Arial + [65, 972]: 20 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 1022]: 21 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 1072]: 22 +Text: rgb(0,0,0) normal normal 400 20px Arial + [74, 1122]: 23 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 1172]: 24 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 1222]: 25 +Text: rgb(0,0,0) normal normal 400 20px Arial + [69, 1272]: 26 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1322]: 27 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1372]: 28 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 1422]: 29 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1472]: 30 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1522]: 31 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 1572]: 32 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1622]: 33 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1672]: 34 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 1722]: 35 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 1772]: 36 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 1822]: 37 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 1872]: 38 +Text: rgb(0,0,0) normal normal 400 20px Arial + [87, 1922]: 39 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 1972]: 40 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2022]: 41 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2072]: 42 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2122]: 43 +Text: rgb(0,0,0) normal normal 400 20px Arial + [77, 2172]: 44 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2222]: 45 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 2272]: 46 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2322]: 47 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2372]: 48 +Text: rgb(0,0,0) normal normal 400 20px Arial + [85, 2422]: 49 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2472]: 50 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2522]: 51 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2572]: 52 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2622]: 53 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2672]: 54 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 2722]: 55 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2772]: 56 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2822]: 57 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 2872]: 58 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2922]: 59 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2972]: 60 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 3022]: 61 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 3072]: 62 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3122]: 63 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 3172]: 64 +Text: rgb(0,0,0) normal normal 400 20px Arial + [87, 3222]: 65 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3272]: 66 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3322]: 67 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3372]: 68 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3422]: 69 +Text: rgb(0,0,0) normal normal 400 20px Arial + [77, 3472]: 70 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3522]: 71 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 3572]: 72 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 3622]: 73 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3672]: 74 +Text: rgb(0,0,0) normal normal 400 20px Arial + [85, 3722]: 75 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3772]: 76 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3822]: 77 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3872]: 78 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3922]: 79 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 3972]: 80 +Text: rgb(0,0,0) normal normal 400 20px Arial + [79, 4022]: 81 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4072]: 82 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4122]: 83 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 4172]: 84 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4222]: 85 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4272]: 86 +Text: rgb(0,0,0) normal normal 400 20px Arial + [74, 4322]: 87 +Text: rgb(0,0,0) normal normal 400 20px Arial + [74, 4372]: 88 +Text: rgb(0,0,0) normal normal 400 20px Arial + [79, 4422]: 89 +Text: rgb(0,0,0) normal normal 400 20px Arial + [74, 4472]: 90 +Text: rgb(0,0,0) normal normal 400 20px Arial + [86, 4522]: 91 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4572]: 92 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4622]: 93 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4672]: 94 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4722]: 95 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 4772]: 96 +Text: rgb(0,0,0) normal normal 400 20px Arial + [79, 4822]: 97 +Text: rgb(0,0,0) normal normal 400 20px Arial + [75, 4872]: 98 +Text: rgb(0,0,0) normal normal 400 20px Arial + [80, 4922]: 99 +Text: rgb(0,0,0) normal normal 400 20px Arial + [79, 4972]: 100 \ No newline at end of file diff --git a/tests/reftests/list/upper-roman.html b/tests/reftests/list/upper-roman.html index 8eb3ddc91..d8389f4fb 100644 --- a/tests/reftests/list/upper-roman.html +++ b/tests/reftests/list/upper-roman.html @@ -40,13 +40,14 @@ clear:both; } li{ - border:1px solid black; width:100px; margin:0; } ol{ margin:0; - + } + body { + font-family: Arial; } diff --git a/tests/reftests/list/upper-roman.txt b/tests/reftests/list/upper-roman.txt index 1e556c97b..5b22d1785 100644 --- a/tests/reftests/list/upper-roman.txt +++ b/tests/reftests/list/upper-roman.txt @@ -1,603 +1,203 @@ -Window: [800, 5666] -Rectangle: [0, 0, 800, 5666] rgba(0,0,0,0) +Window: [800, 5416] +Rectangle: [0, 0, 800, 5416] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 8) > Vector(x: 150, y: 8) > Vector(x: 149, y: 9) > Vector(x: 49, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 8) > Vector(x: 150, y: 60) > Vector(x: 149, y: 59) > Vector(x: 149, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 48, y: 60) > Vector(x: 49, y: 59) > Vector(x: 149, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 48, y: 8) > Vector(x: 49, y: 9) > Vector(x: 49, y: 59)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [66, 23]: 1 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 60) > Vector(x: 150, y: 60) > Vector(x: 149, y: 61) > Vector(x: 49, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 60) > Vector(x: 150, y: 112) > Vector(x: 149, y: 111) > Vector(x: 149, y: 61)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 48, y: 112) > Vector(x: 49, y: 111) > Vector(x: 149, y: 111)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 48, y: 60) > Vector(x: 49, y: 61) > Vector(x: 49, y: 111)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [72, 75]: 2 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 112) > Vector(x: 150, y: 112) > Vector(x: 149, y: 113) > Vector(x: 49, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 112) > Vector(x: 150, y: 164) > Vector(x: 149, y: 163) > Vector(x: 149, y: 113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 48, y: 164) > Vector(x: 49, y: 163) > Vector(x: 149, y: 163)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 48, y: 112) > Vector(x: 49, y: 113) > Vector(x: 49, y: 163)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [79, 127]: 3 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 164) > Vector(x: 150, y: 164) > Vector(x: 149, y: 165) > Vector(x: 49, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 164) > Vector(x: 150, y: 216) > Vector(x: 149, y: 215) > Vector(x: 149, y: 165)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 48, y: 216) > Vector(x: 49, y: 215) > Vector(x: 149, y: 215)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 48, y: 164) > Vector(x: 49, y: 165) > Vector(x: 49, y: 215)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [80, 179]: 4 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 216) > Vector(x: 150, y: 216) > Vector(x: 149, y: 217) > Vector(x: 49, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 216) > Vector(x: 150, y: 268) > Vector(x: 149, y: 267) > Vector(x: 149, y: 217)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 48, y: 268) > Vector(x: 49, y: 267) > Vector(x: 149, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 48, y: 216) > Vector(x: 49, y: 217) > Vector(x: 49, y: 267)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 231]: 5 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 268) > Vector(x: 150, y: 268) > Vector(x: 149, y: 269) > Vector(x: 49, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 268) > Vector(x: 150, y: 320) > Vector(x: 149, y: 319) > Vector(x: 149, y: 269)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 48, y: 320) > Vector(x: 49, y: 319) > Vector(x: 149, y: 319)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 48, y: 268) > Vector(x: 49, y: 269) > Vector(x: 49, y: 319)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [80, 283]: 6 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 320) > Vector(x: 150, y: 320) > Vector(x: 149, y: 321) > Vector(x: 49, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 320) > Vector(x: 150, y: 372) > Vector(x: 149, y: 371) > Vector(x: 149, y: 321)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 48, y: 372) > Vector(x: 49, y: 371) > Vector(x: 149, y: 371)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 48, y: 320) > Vector(x: 49, y: 321) > Vector(x: 49, y: 371)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [87, 335]: 7 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 372) > Vector(x: 150, y: 372) > Vector(x: 149, y: 373) > Vector(x: 49, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 372) > Vector(x: 150, y: 424) > Vector(x: 149, y: 423) > Vector(x: 149, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 48, y: 424) > Vector(x: 49, y: 423) > Vector(x: 149, y: 423)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 48, y: 372) > Vector(x: 49, y: 373) > Vector(x: 49, y: 423)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [93, 387]: 8 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 424) > Vector(x: 150, y: 424) > Vector(x: 149, y: 425) > Vector(x: 49, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 424) > Vector(x: 150, y: 476) > Vector(x: 149, y: 475) > Vector(x: 149, y: 425)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 48, y: 476) > Vector(x: 49, y: 475) > Vector(x: 149, y: 475)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 48, y: 424) > Vector(x: 49, y: 425) > Vector(x: 49, y: 475)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [80, 439]: 9 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 476) > Vector(x: 150, y: 476) > Vector(x: 149, y: 477) > Vector(x: 49, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 476) > Vector(x: 150, y: 528) > Vector(x: 149, y: 527) > Vector(x: 149, y: 477)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 48, y: 528) > Vector(x: 49, y: 527) > Vector(x: 149, y: 527)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 48, y: 476) > Vector(x: 49, y: 477) > Vector(x: 49, y: 527)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [73, 491]: 10 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 528) > Vector(x: 150, y: 528) > Vector(x: 149, y: 529) > Vector(x: 49, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 528) > Vector(x: 150, y: 580) > Vector(x: 149, y: 579) > Vector(x: 149, y: 529)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 48, y: 580) > Vector(x: 49, y: 579) > Vector(x: 149, y: 579)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 48, y: 528) > Vector(x: 49, y: 529) > Vector(x: 49, y: 579)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [80, 543]: 11 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 580) > Vector(x: 150, y: 580) > Vector(x: 149, y: 581) > Vector(x: 49, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 580) > Vector(x: 150, y: 632) > Vector(x: 149, y: 631) > Vector(x: 149, y: 581)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 48, y: 632) > Vector(x: 49, y: 631) > Vector(x: 149, y: 631)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 48, y: 580) > Vector(x: 49, y: 581) > Vector(x: 49, y: 631)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [87, 595]: 12 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 632) > Vector(x: 150, y: 632) > Vector(x: 149, y: 633) > Vector(x: 49, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 632) > Vector(x: 150, y: 684) > Vector(x: 149, y: 683) > Vector(x: 149, y: 633)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 48, y: 684) > Vector(x: 49, y: 683) > Vector(x: 149, y: 683)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 48, y: 632) > Vector(x: 49, y: 633) > Vector(x: 49, y: 683)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [93, 647]: 13 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 684) > Vector(x: 150, y: 684) > Vector(x: 149, y: 685) > Vector(x: 49, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 684) > Vector(x: 150, y: 736) > Vector(x: 149, y: 735) > Vector(x: 149, y: 685)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 48, y: 736) > Vector(x: 49, y: 735) > Vector(x: 149, y: 735)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 48, y: 684) > Vector(x: 49, y: 685) > Vector(x: 49, y: 735)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [95, 699]: 14 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 736) > Vector(x: 150, y: 736) > Vector(x: 149, y: 737) > Vector(x: 49, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 736) > Vector(x: 150, y: 788) > Vector(x: 149, y: 787) > Vector(x: 149, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 48, y: 788) > Vector(x: 49, y: 787) > Vector(x: 149, y: 787)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 48, y: 736) > Vector(x: 49, y: 737) > Vector(x: 49, y: 787)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [88, 751]: 15 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 788) > Vector(x: 150, y: 788) > Vector(x: 149, y: 789) > Vector(x: 49, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 788) > Vector(x: 150, y: 840) > Vector(x: 149, y: 839) > Vector(x: 149, y: 789)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 48, y: 840) > Vector(x: 49, y: 839) > Vector(x: 149, y: 839)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 48, y: 788) > Vector(x: 49, y: 789) > Vector(x: 49, y: 839)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [95, 803]: 16 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 840) > Vector(x: 150, y: 840) > Vector(x: 149, y: 841) > Vector(x: 49, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 840) > Vector(x: 150, y: 892) > Vector(x: 149, y: 891) > Vector(x: 149, y: 841)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 48, y: 892) > Vector(x: 49, y: 891) > Vector(x: 149, y: 891)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 48, y: 840) > Vector(x: 49, y: 841) > Vector(x: 49, y: 891)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [101, 855]: 17 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 892) > Vector(x: 150, y: 892) > Vector(x: 149, y: 893) > Vector(x: 49, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 892) > Vector(x: 150, y: 944) > Vector(x: 149, y: 943) > Vector(x: 149, y: 893)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 48, y: 944) > Vector(x: 49, y: 943) > Vector(x: 149, y: 943)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 48, y: 892) > Vector(x: 49, y: 893) > Vector(x: 49, y: 943)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [108, 907]: 18 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 944) > Vector(x: 150, y: 944) > Vector(x: 149, y: 945) > Vector(x: 49, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 944) > Vector(x: 150, y: 996) > Vector(x: 149, y: 995) > Vector(x: 149, y: 945)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 48, y: 996) > Vector(x: 49, y: 995) > Vector(x: 149, y: 995)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 48, y: 944) > Vector(x: 49, y: 945) > Vector(x: 49, y: 995)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [95, 959]: 19 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 996) > Vector(x: 150, y: 996) > Vector(x: 149, y: 997) > Vector(x: 49, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 996) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1047) > Vector(x: 149, y: 997)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1047) > Vector(x: 149, y: 1047)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 48, y: 996) > Vector(x: 49, y: 997) > Vector(x: 49, y: 1047)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [88, 1011]: 20 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1048) > Vector(x: 150, y: 1048) > Vector(x: 149, y: 1049) > Vector(x: 49, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1048) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1099) > Vector(x: 149, y: 1049)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1099) > Vector(x: 149, y: 1099)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 48, y: 1048) > Vector(x: 49, y: 1049) > Vector(x: 49, y: 1099)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [95, 1063]: 21 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1100) > Vector(x: 150, y: 1100) > Vector(x: 149, y: 1101) > Vector(x: 49, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1100) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1151) > Vector(x: 149, y: 1101)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1151) > Vector(x: 149, y: 1151)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 48, y: 1100) > Vector(x: 49, y: 1101) > Vector(x: 49, y: 1151)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [101, 1115]: 22 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1152) > Vector(x: 150, y: 1152) > Vector(x: 149, y: 1153) > Vector(x: 49, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1152) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1203) > Vector(x: 149, y: 1153)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1203) > Vector(x: 149, y: 1203)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 48, y: 1152) > Vector(x: 49, y: 1153) > Vector(x: 49, y: 1203)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [108, 1167]: 23 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1204) > Vector(x: 150, y: 1204) > Vector(x: 149, y: 1205) > Vector(x: 49, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1204) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1255) > Vector(x: 149, y: 1205)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1255) > Vector(x: 149, y: 1255)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 48, y: 1204) > Vector(x: 49, y: 1205) > Vector(x: 49, y: 1255)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [109, 1219]: 24 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1256) > Vector(x: 150, y: 1256) > Vector(x: 149, y: 1257) > Vector(x: 49, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1256) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1307) > Vector(x: 149, y: 1257)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1307) > Vector(x: 149, y: 1307)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 48, y: 1256) > Vector(x: 49, y: 1257) > Vector(x: 49, y: 1307)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [102, 1271]: 25 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1308) > Vector(x: 150, y: 1308) > Vector(x: 149, y: 1309) > Vector(x: 49, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1308) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1359) > Vector(x: 149, y: 1309)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1359) > Vector(x: 149, y: 1359)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 48, y: 1308) > Vector(x: 49, y: 1309) > Vector(x: 49, y: 1359)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [109, 1323]: 26 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1360) > Vector(x: 150, y: 1360) > Vector(x: 149, y: 1361) > Vector(x: 49, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1360) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1411) > Vector(x: 149, y: 1361)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1411) > Vector(x: 149, y: 1411)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 48, y: 1360) > Vector(x: 49, y: 1361) > Vector(x: 49, y: 1411)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [116, 1375]: 27 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1412) > Vector(x: 150, y: 1412) > Vector(x: 149, y: 1413) > Vector(x: 49, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1412) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1463) > Vector(x: 149, y: 1413)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1463) > Vector(x: 149, y: 1463)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 48, y: 1412) > Vector(x: 49, y: 1413) > Vector(x: 49, y: 1463)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [122, 1427]: 28 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1464) > Vector(x: 150, y: 1464) > Vector(x: 149, y: 1465) > Vector(x: 49, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1464) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1515) > Vector(x: 149, y: 1465)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1515) > Vector(x: 149, y: 1515)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 48, y: 1464) > Vector(x: 49, y: 1465) > Vector(x: 49, y: 1515)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [109, 1479]: 29 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1516) > Vector(x: 150, y: 1516) > Vector(x: 149, y: 1517) > Vector(x: 49, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1516) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1567) > Vector(x: 149, y: 1517)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1567) > Vector(x: 149, y: 1567)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 48, y: 1516) > Vector(x: 49, y: 1517) > Vector(x: 49, y: 1567)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [102, 1531]: 30 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1568) > Vector(x: 150, y: 1568) > Vector(x: 149, y: 1569) > Vector(x: 49, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1568) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1619) > Vector(x: 149, y: 1569)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1619) > Vector(x: 149, y: 1619)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 48, y: 1568) > Vector(x: 49, y: 1569) > Vector(x: 49, y: 1619)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [109, 1583]: 31 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1620) > Vector(x: 150, y: 1620) > Vector(x: 149, y: 1621) > Vector(x: 49, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1620) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1671) > Vector(x: 149, y: 1621)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1671) > Vector(x: 149, y: 1671)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 48, y: 1620) > Vector(x: 49, y: 1621) > Vector(x: 49, y: 1671)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [116, 1635]: 32 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1672) > Vector(x: 150, y: 1672) > Vector(x: 149, y: 1673) > Vector(x: 49, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1672) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1723) > Vector(x: 149, y: 1673)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1723) > Vector(x: 149, y: 1723)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 48, y: 1672) > Vector(x: 49, y: 1673) > Vector(x: 49, y: 1723)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [122, 1687]: 33 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1724) > Vector(x: 150, y: 1724) > Vector(x: 149, y: 1725) > Vector(x: 49, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1724) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1775) > Vector(x: 149, y: 1725)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1775) > Vector(x: 149, y: 1775)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 48, y: 1724) > Vector(x: 49, y: 1725) > Vector(x: 49, y: 1775)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [123, 1739]: 34 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1776) > Vector(x: 150, y: 1776) > Vector(x: 149, y: 1777) > Vector(x: 49, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1776) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1827) > Vector(x: 149, y: 1777)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1827) > Vector(x: 149, y: 1827)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 48, y: 1776) > Vector(x: 49, y: 1777) > Vector(x: 49, y: 1827)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [117, 1791]: 35 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1828) > Vector(x: 150, y: 1828) > Vector(x: 149, y: 1829) > Vector(x: 49, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1828) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1879) > Vector(x: 149, y: 1829)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1879) > Vector(x: 149, y: 1879)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 48, y: 1828) > Vector(x: 49, y: 1829) > Vector(x: 49, y: 1879)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [123, 1843]: 36 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1880) > Vector(x: 150, y: 1880) > Vector(x: 149, y: 1881) > Vector(x: 49, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1880) > Vector(x: 150, y: 1982) > Vector(x: 149, y: 1981) > Vector(x: 149, y: 1881)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1982) > Vector(x: 48, y: 1982) > Vector(x: 49, y: 1981) > Vector(x: 149, y: 1981)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1982) > Vector(x: 48, y: 1880) > Vector(x: 49, y: 1881) > Vector(x: 49, y: 1981)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 1945]: 37 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 1982) > Vector(x: 150, y: 1982) > Vector(x: 149, y: 1983) > Vector(x: 49, y: 1983)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 1982) > Vector(x: 150, y: 2084) > Vector(x: 149, y: 2083) > Vector(x: 149, y: 1983)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2084) > Vector(x: 48, y: 2084) > Vector(x: 49, y: 2083) > Vector(x: 149, y: 2083)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2084) > Vector(x: 48, y: 1982) > Vector(x: 49, y: 1983) > Vector(x: 49, y: 2083)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 2047]: 38 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2084) > Vector(x: 150, y: 2084) > Vector(x: 149, y: 2085) > Vector(x: 49, y: 2085)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2084) > Vector(x: 150, y: 2136) > Vector(x: 149, y: 2135) > Vector(x: 149, y: 2085)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2136) > Vector(x: 48, y: 2136) > Vector(x: 49, y: 2135) > Vector(x: 149, y: 2135)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2136) > Vector(x: 48, y: 2084) > Vector(x: 49, y: 2085) > Vector(x: 49, y: 2135)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [123, 2099]: 39 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2136) > Vector(x: 150, y: 2136) > Vector(x: 149, y: 2137) > Vector(x: 49, y: 2137)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2136) > Vector(x: 150, y: 2188) > Vector(x: 149, y: 2187) > Vector(x: 149, y: 2137)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2188) > Vector(x: 48, y: 2188) > Vector(x: 49, y: 2187) > Vector(x: 149, y: 2187)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2188) > Vector(x: 48, y: 2136) > Vector(x: 49, y: 2137) > Vector(x: 49, y: 2187)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [86, 2151]: 40 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2188) > Vector(x: 150, y: 2188) > Vector(x: 149, y: 2189) > Vector(x: 49, y: 2189)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2188) > Vector(x: 150, y: 2240) > Vector(x: 149, y: 2239) > Vector(x: 149, y: 2189)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2240) > Vector(x: 48, y: 2240) > Vector(x: 49, y: 2239) > Vector(x: 149, y: 2239)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2240) > Vector(x: 48, y: 2188) > Vector(x: 49, y: 2189) > Vector(x: 49, y: 2239)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [92, 2203]: 41 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2240) > Vector(x: 150, y: 2240) > Vector(x: 149, y: 2241) > Vector(x: 49, y: 2241)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2240) > Vector(x: 150, y: 2292) > Vector(x: 149, y: 2291) > Vector(x: 149, y: 2241)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2292) > Vector(x: 48, y: 2292) > Vector(x: 49, y: 2291) > Vector(x: 149, y: 2291)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2292) > Vector(x: 48, y: 2240) > Vector(x: 49, y: 2241) > Vector(x: 49, y: 2291)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [99, 2255]: 42 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2292) > Vector(x: 150, y: 2292) > Vector(x: 149, y: 2293) > Vector(x: 49, y: 2293)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2292) > Vector(x: 150, y: 2344) > Vector(x: 149, y: 2343) > Vector(x: 149, y: 2293)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2344) > Vector(x: 48, y: 2344) > Vector(x: 49, y: 2343) > Vector(x: 149, y: 2343)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2344) > Vector(x: 48, y: 2292) > Vector(x: 49, y: 2293) > Vector(x: 49, y: 2343)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [106, 2307]: 43 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2344) > Vector(x: 150, y: 2344) > Vector(x: 149, y: 2345) > Vector(x: 49, y: 2345)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2344) > Vector(x: 150, y: 2396) > Vector(x: 149, y: 2395) > Vector(x: 149, y: 2345)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2396) > Vector(x: 48, y: 2396) > Vector(x: 49, y: 2395) > Vector(x: 149, y: 2395)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2396) > Vector(x: 48, y: 2344) > Vector(x: 49, y: 2345) > Vector(x: 49, y: 2395)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 2359]: 44 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2396) > Vector(x: 150, y: 2396) > Vector(x: 149, y: 2397) > Vector(x: 49, y: 2397)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2396) > Vector(x: 150, y: 2448) > Vector(x: 149, y: 2447) > Vector(x: 149, y: 2397)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2448) > Vector(x: 48, y: 2448) > Vector(x: 49, y: 2447) > Vector(x: 149, y: 2447)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2448) > Vector(x: 48, y: 2396) > Vector(x: 49, y: 2397) > Vector(x: 49, y: 2447)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [98, 2411]: 45 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2448) > Vector(x: 150, y: 2448) > Vector(x: 149, y: 2449) > Vector(x: 49, y: 2449)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2448) > Vector(x: 150, y: 2500) > Vector(x: 149, y: 2499) > Vector(x: 149, y: 2449)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2500) > Vector(x: 48, y: 2500) > Vector(x: 49, y: 2499) > Vector(x: 149, y: 2499)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2500) > Vector(x: 48, y: 2448) > Vector(x: 49, y: 2449) > Vector(x: 49, y: 2499)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [105, 2463]: 46 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2500) > Vector(x: 150, y: 2500) > Vector(x: 149, y: 2501) > Vector(x: 49, y: 2501)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2500) > Vector(x: 150, y: 2552) > Vector(x: 149, y: 2551) > Vector(x: 149, y: 2501)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2552) > Vector(x: 48, y: 2552) > Vector(x: 49, y: 2551) > Vector(x: 149, y: 2551)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2552) > Vector(x: 48, y: 2500) > Vector(x: 49, y: 2501) > Vector(x: 49, y: 2551)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [112, 2515]: 47 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2552) > Vector(x: 150, y: 2552) > Vector(x: 149, y: 2553) > Vector(x: 49, y: 2553)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2552) > Vector(x: 150, y: 2604) > Vector(x: 149, y: 2603) > Vector(x: 149, y: 2553)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2604) > Vector(x: 48, y: 2604) > Vector(x: 49, y: 2603) > Vector(x: 149, y: 2603)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2604) > Vector(x: 48, y: 2552) > Vector(x: 49, y: 2553) > Vector(x: 49, y: 2603)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [118, 2567]: 48 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2604) > Vector(x: 150, y: 2604) > Vector(x: 149, y: 2605) > Vector(x: 49, y: 2605)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2604) > Vector(x: 150, y: 2656) > Vector(x: 149, y: 2655) > Vector(x: 149, y: 2605)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2656) > Vector(x: 48, y: 2656) > Vector(x: 49, y: 2655) > Vector(x: 149, y: 2655)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2656) > Vector(x: 48, y: 2604) > Vector(x: 49, y: 2605) > Vector(x: 49, y: 2655)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 2619]: 49 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2656) > Vector(x: 150, y: 2656) > Vector(x: 149, y: 2657) > Vector(x: 49, y: 2657)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2656) > Vector(x: 150, y: 2708) > Vector(x: 149, y: 2707) > Vector(x: 149, y: 2657)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2708) > Vector(x: 48, y: 2708) > Vector(x: 49, y: 2707) > Vector(x: 149, y: 2707)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2708) > Vector(x: 48, y: 2656) > Vector(x: 49, y: 2657) > Vector(x: 49, y: 2707)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [71, 2671]: 50 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2708) > Vector(x: 150, y: 2708) > Vector(x: 149, y: 2709) > Vector(x: 49, y: 2709)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2708) > Vector(x: 150, y: 2760) > Vector(x: 149, y: 2759) > Vector(x: 149, y: 2709)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2760) > Vector(x: 48, y: 2760) > Vector(x: 49, y: 2759) > Vector(x: 149, y: 2759)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2760) > Vector(x: 48, y: 2708) > Vector(x: 49, y: 2709) > Vector(x: 49, y: 2759)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [78, 2723]: 51 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2760) > Vector(x: 150, y: 2760) > Vector(x: 149, y: 2761) > Vector(x: 49, y: 2761)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2760) > Vector(x: 150, y: 2812) > Vector(x: 149, y: 2811) > Vector(x: 149, y: 2761)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2812) > Vector(x: 48, y: 2812) > Vector(x: 49, y: 2811) > Vector(x: 149, y: 2811)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2812) > Vector(x: 48, y: 2760) > Vector(x: 49, y: 2761) > Vector(x: 49, y: 2811)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [85, 2775]: 52 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2812) > Vector(x: 150, y: 2812) > Vector(x: 149, y: 2813) > Vector(x: 49, y: 2813)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2812) > Vector(x: 150, y: 2864) > Vector(x: 149, y: 2863) > Vector(x: 149, y: 2813)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2864) > Vector(x: 48, y: 2864) > Vector(x: 49, y: 2863) > Vector(x: 149, y: 2863)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2864) > Vector(x: 48, y: 2812) > Vector(x: 49, y: 2813) > Vector(x: 49, y: 2863)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [91, 2827]: 53 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2864) > Vector(x: 150, y: 2864) > Vector(x: 149, y: 2865) > Vector(x: 49, y: 2865)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2864) > Vector(x: 150, y: 2916) > Vector(x: 149, y: 2915) > Vector(x: 149, y: 2865)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2916) > Vector(x: 48, y: 2916) > Vector(x: 49, y: 2915) > Vector(x: 149, y: 2915)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2916) > Vector(x: 48, y: 2864) > Vector(x: 49, y: 2865) > Vector(x: 49, y: 2915)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [92, 2879]: 54 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2916) > Vector(x: 150, y: 2916) > Vector(x: 149, y: 2917) > Vector(x: 49, y: 2917)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2916) > Vector(x: 150, y: 2968) > Vector(x: 149, y: 2967) > Vector(x: 149, y: 2917)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2968) > Vector(x: 48, y: 2968) > Vector(x: 49, y: 2967) > Vector(x: 149, y: 2967)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2968) > Vector(x: 48, y: 2916) > Vector(x: 49, y: 2917) > Vector(x: 49, y: 2967)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [84, 2931]: 55 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 2968) > Vector(x: 150, y: 2968) > Vector(x: 149, y: 2969) > Vector(x: 49, y: 2969)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 2968) > Vector(x: 150, y: 3020) > Vector(x: 149, y: 3019) > Vector(x: 149, y: 2969)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3020) > Vector(x: 48, y: 3020) > Vector(x: 49, y: 3019) > Vector(x: 149, y: 3019)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3020) > Vector(x: 48, y: 2968) > Vector(x: 49, y: 2969) > Vector(x: 49, y: 3019)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [90, 2983]: 56 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3020) > Vector(x: 150, y: 3020) > Vector(x: 149, y: 3021) > Vector(x: 49, y: 3021)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3020) > Vector(x: 150, y: 3072) > Vector(x: 149, y: 3071) > Vector(x: 149, y: 3021)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3072) > Vector(x: 48, y: 3072) > Vector(x: 49, y: 3071) > Vector(x: 149, y: 3071)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3072) > Vector(x: 48, y: 3020) > Vector(x: 49, y: 3021) > Vector(x: 49, y: 3071)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [97, 3035]: 57 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3072) > Vector(x: 150, y: 3072) > Vector(x: 149, y: 3073) > Vector(x: 49, y: 3073)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3072) > Vector(x: 150, y: 3124) > Vector(x: 149, y: 3123) > Vector(x: 149, y: 3073)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3124) > Vector(x: 48, y: 3124) > Vector(x: 49, y: 3123) > Vector(x: 149, y: 3123)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3124) > Vector(x: 48, y: 3072) > Vector(x: 49, y: 3073) > Vector(x: 49, y: 3123)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [104, 3087]: 58 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3124) > Vector(x: 150, y: 3124) > Vector(x: 149, y: 3125) > Vector(x: 49, y: 3125)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3124) > Vector(x: 150, y: 3176) > Vector(x: 149, y: 3175) > Vector(x: 149, y: 3125)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3176) > Vector(x: 48, y: 3176) > Vector(x: 49, y: 3175) > Vector(x: 149, y: 3175)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3176) > Vector(x: 48, y: 3124) > Vector(x: 49, y: 3125) > Vector(x: 49, y: 3175)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [92, 3139]: 59 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3176) > Vector(x: 150, y: 3176) > Vector(x: 149, y: 3177) > Vector(x: 49, y: 3177)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3176) > Vector(x: 150, y: 3228) > Vector(x: 149, y: 3227) > Vector(x: 149, y: 3177)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3228) > Vector(x: 48, y: 3228) > Vector(x: 49, y: 3227) > Vector(x: 149, y: 3227)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3228) > Vector(x: 48, y: 3176) > Vector(x: 49, y: 3177) > Vector(x: 49, y: 3227)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [86, 3191]: 60 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3228) > Vector(x: 150, y: 3228) > Vector(x: 149, y: 3229) > Vector(x: 49, y: 3229)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3228) > Vector(x: 150, y: 3280) > Vector(x: 149, y: 3279) > Vector(x: 149, y: 3229)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3280) > Vector(x: 48, y: 3280) > Vector(x: 49, y: 3279) > Vector(x: 149, y: 3279)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3280) > Vector(x: 48, y: 3228) > Vector(x: 49, y: 3229) > Vector(x: 49, y: 3279)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [92, 3243]: 61 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3280) > Vector(x: 150, y: 3280) > Vector(x: 149, y: 3281) > Vector(x: 49, y: 3281)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3280) > Vector(x: 150, y: 3332) > Vector(x: 149, y: 3331) > Vector(x: 149, y: 3281)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3332) > Vector(x: 48, y: 3332) > Vector(x: 49, y: 3331) > Vector(x: 149, y: 3331)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3332) > Vector(x: 48, y: 3280) > Vector(x: 49, y: 3281) > Vector(x: 49, y: 3331)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [99, 3295]: 62 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3332) > Vector(x: 150, y: 3332) > Vector(x: 149, y: 3333) > Vector(x: 49, y: 3333)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3332) > Vector(x: 150, y: 3384) > Vector(x: 149, y: 3383) > Vector(x: 149, y: 3333)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3384) > Vector(x: 48, y: 3384) > Vector(x: 49, y: 3383) > Vector(x: 149, y: 3383)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3384) > Vector(x: 48, y: 3332) > Vector(x: 49, y: 3333) > Vector(x: 49, y: 3383)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [106, 3347]: 63 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3384) > Vector(x: 150, y: 3384) > Vector(x: 149, y: 3385) > Vector(x: 49, y: 3385)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3384) > Vector(x: 150, y: 3436) > Vector(x: 149, y: 3435) > Vector(x: 149, y: 3385)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3436) > Vector(x: 48, y: 3436) > Vector(x: 49, y: 3435) > Vector(x: 149, y: 3435)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3436) > Vector(x: 48, y: 3384) > Vector(x: 49, y: 3385) > Vector(x: 49, y: 3435)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 3399]: 64 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3436) > Vector(x: 150, y: 3436) > Vector(x: 149, y: 3437) > Vector(x: 49, y: 3437)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3436) > Vector(x: 150, y: 3488) > Vector(x: 149, y: 3487) > Vector(x: 149, y: 3437)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3488) > Vector(x: 48, y: 3488) > Vector(x: 49, y: 3487) > Vector(x: 149, y: 3487)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3488) > Vector(x: 48, y: 3436) > Vector(x: 49, y: 3437) > Vector(x: 49, y: 3487)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [100, 3451]: 65 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3488) > Vector(x: 150, y: 3488) > Vector(x: 149, y: 3489) > Vector(x: 49, y: 3489)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3488) > Vector(x: 150, y: 3540) > Vector(x: 149, y: 3539) > Vector(x: 149, y: 3489)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3540) > Vector(x: 48, y: 3540) > Vector(x: 49, y: 3539) > Vector(x: 149, y: 3539)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3540) > Vector(x: 48, y: 3488) > Vector(x: 49, y: 3489) > Vector(x: 49, y: 3539)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 3503]: 66 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3540) > Vector(x: 150, y: 3540) > Vector(x: 149, y: 3541) > Vector(x: 49, y: 3541)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3540) > Vector(x: 150, y: 3592) > Vector(x: 149, y: 3591) > Vector(x: 149, y: 3541)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3592) > Vector(x: 48, y: 3592) > Vector(x: 49, y: 3591) > Vector(x: 149, y: 3591)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3592) > Vector(x: 48, y: 3540) > Vector(x: 49, y: 3541) > Vector(x: 49, y: 3591)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [113, 3555]: 67 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3592) > Vector(x: 150, y: 3592) > Vector(x: 149, y: 3593) > Vector(x: 49, y: 3593)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3592) > Vector(x: 150, y: 3644) > Vector(x: 149, y: 3643) > Vector(x: 149, y: 3593)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3644) > Vector(x: 48, y: 3644) > Vector(x: 49, y: 3643) > Vector(x: 149, y: 3643)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3644) > Vector(x: 48, y: 3592) > Vector(x: 49, y: 3593) > Vector(x: 49, y: 3643)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [120, 3607]: 68 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3644) > Vector(x: 150, y: 3644) > Vector(x: 149, y: 3645) > Vector(x: 49, y: 3645)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3644) > Vector(x: 150, y: 3696) > Vector(x: 149, y: 3695) > Vector(x: 149, y: 3645)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3696) > Vector(x: 48, y: 3696) > Vector(x: 49, y: 3695) > Vector(x: 149, y: 3695)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3696) > Vector(x: 48, y: 3644) > Vector(x: 49, y: 3645) > Vector(x: 49, y: 3695)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 3659]: 69 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3696) > Vector(x: 150, y: 3696) > Vector(x: 149, y: 3697) > Vector(x: 49, y: 3697)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3696) > Vector(x: 150, y: 3748) > Vector(x: 149, y: 3747) > Vector(x: 149, y: 3697)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3748) > Vector(x: 48, y: 3748) > Vector(x: 49, y: 3747) > Vector(x: 149, y: 3747)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3748) > Vector(x: 48, y: 3696) > Vector(x: 49, y: 3697) > Vector(x: 49, y: 3747)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [100, 3711]: 70 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3748) > Vector(x: 150, y: 3748) > Vector(x: 149, y: 3749) > Vector(x: 49, y: 3749)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3748) > Vector(x: 150, y: 3800) > Vector(x: 149, y: 3799) > Vector(x: 149, y: 3749)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3800) > Vector(x: 48, y: 3800) > Vector(x: 49, y: 3799) > Vector(x: 149, y: 3799)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3800) > Vector(x: 48, y: 3748) > Vector(x: 49, y: 3749) > Vector(x: 49, y: 3799)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 3763]: 71 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3800) > Vector(x: 150, y: 3800) > Vector(x: 149, y: 3801) > Vector(x: 49, y: 3801)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3800) > Vector(x: 150, y: 3852) > Vector(x: 149, y: 3851) > Vector(x: 149, y: 3801)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3852) > Vector(x: 48, y: 3852) > Vector(x: 49, y: 3851) > Vector(x: 149, y: 3851)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3852) > Vector(x: 48, y: 3800) > Vector(x: 49, y: 3801) > Vector(x: 49, y: 3851)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [113, 3815]: 72 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3852) > Vector(x: 150, y: 3852) > Vector(x: 149, y: 3853) > Vector(x: 49, y: 3853)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3852) > Vector(x: 150, y: 3904) > Vector(x: 149, y: 3903) > Vector(x: 149, y: 3853)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3904) > Vector(x: 48, y: 3904) > Vector(x: 49, y: 3903) > Vector(x: 149, y: 3903)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3904) > Vector(x: 48, y: 3852) > Vector(x: 49, y: 3853) > Vector(x: 49, y: 3903)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [120, 3867]: 73 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3904) > Vector(x: 150, y: 3904) > Vector(x: 149, y: 3905) > Vector(x: 49, y: 3905)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3904) > Vector(x: 150, y: 3956) > Vector(x: 149, y: 3955) > Vector(x: 149, y: 3905)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3956) > Vector(x: 48, y: 3956) > Vector(x: 49, y: 3955) > Vector(x: 149, y: 3955)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3956) > Vector(x: 48, y: 3904) > Vector(x: 49, y: 3905) > Vector(x: 49, y: 3955)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [121, 3919]: 74 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 3956) > Vector(x: 150, y: 3956) > Vector(x: 149, y: 3957) > Vector(x: 49, y: 3957)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 3956) > Vector(x: 150, y: 4008) > Vector(x: 149, y: 4007) > Vector(x: 149, y: 3957)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4008) > Vector(x: 48, y: 4008) > Vector(x: 49, y: 4007) > Vector(x: 149, y: 4007)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4008) > Vector(x: 48, y: 3956) > Vector(x: 49, y: 3957) > Vector(x: 49, y: 4007)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [115, 3971]: 75 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4008) > Vector(x: 150, y: 4008) > Vector(x: 149, y: 4009) > Vector(x: 49, y: 4009)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4008) > Vector(x: 150, y: 4060) > Vector(x: 149, y: 4059) > Vector(x: 149, y: 4009)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4060) > Vector(x: 48, y: 4060) > Vector(x: 49, y: 4059) > Vector(x: 149, y: 4059)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4060) > Vector(x: 48, y: 4008) > Vector(x: 49, y: 4009) > Vector(x: 49, y: 4059)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [121, 4023]: 76 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4060) > Vector(x: 150, y: 4060) > Vector(x: 149, y: 4061) > Vector(x: 49, y: 4061)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4060) > Vector(x: 150, y: 4112) > Vector(x: 149, y: 4111) > Vector(x: 149, y: 4061)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4112) > Vector(x: 48, y: 4112) > Vector(x: 49, y: 4111) > Vector(x: 149, y: 4111)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4112) > Vector(x: 48, y: 4060) > Vector(x: 49, y: 4061) > Vector(x: 49, y: 4111)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [128, 4075]: 77 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4112) > Vector(x: 150, y: 4112) > Vector(x: 149, y: 4113) > Vector(x: 49, y: 4113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4112) > Vector(x: 150, y: 4214) > Vector(x: 149, y: 4213) > Vector(x: 149, y: 4113)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4214) > Vector(x: 48, y: 4214) > Vector(x: 49, y: 4213) > Vector(x: 149, y: 4213)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4214) > Vector(x: 48, y: 4112) > Vector(x: 49, y: 4113) > Vector(x: 49, y: 4213)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4177]: 78 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4214) > Vector(x: 150, y: 4214) > Vector(x: 149, y: 4215) > Vector(x: 49, y: 4215)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4214) > Vector(x: 150, y: 4266) > Vector(x: 149, y: 4265) > Vector(x: 149, y: 4215)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4266) > Vector(x: 48, y: 4266) > Vector(x: 49, y: 4265) > Vector(x: 149, y: 4265)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4266) > Vector(x: 48, y: 4214) > Vector(x: 49, y: 4215) > Vector(x: 49, y: 4265)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [121, 4229]: 79 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4266) > Vector(x: 150, y: 4266) > Vector(x: 149, y: 4267) > Vector(x: 49, y: 4267)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4266) > Vector(x: 150, y: 4318) > Vector(x: 149, y: 4317) > Vector(x: 149, y: 4267)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4318) > Vector(x: 48, y: 4318) > Vector(x: 49, y: 4317) > Vector(x: 149, y: 4317)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4318) > Vector(x: 48, y: 4266) > Vector(x: 49, y: 4267) > Vector(x: 49, y: 4317)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [115, 4281]: 80 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4318) > Vector(x: 150, y: 4318) > Vector(x: 149, y: 4319) > Vector(x: 49, y: 4319)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4318) > Vector(x: 150, y: 4370) > Vector(x: 149, y: 4369) > Vector(x: 149, y: 4319)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4370) > Vector(x: 48, y: 4370) > Vector(x: 49, y: 4369) > Vector(x: 149, y: 4369)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4370) > Vector(x: 48, y: 4318) > Vector(x: 49, y: 4319) > Vector(x: 49, y: 4369)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [121, 4333]: 81 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4370) > Vector(x: 150, y: 4370) > Vector(x: 149, y: 4371) > Vector(x: 49, y: 4371)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4370) > Vector(x: 150, y: 4422) > Vector(x: 149, y: 4421) > Vector(x: 149, y: 4371)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4422) > Vector(x: 48, y: 4422) > Vector(x: 49, y: 4421) > Vector(x: 149, y: 4421)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4422) > Vector(x: 48, y: 4370) > Vector(x: 49, y: 4371) > Vector(x: 49, y: 4421)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [128, 4385]: 82 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4422) > Vector(x: 150, y: 4422) > Vector(x: 149, y: 4423) > Vector(x: 49, y: 4423)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4422) > Vector(x: 150, y: 4524) > Vector(x: 149, y: 4523) > Vector(x: 149, y: 4423)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4524) > Vector(x: 48, y: 4524) > Vector(x: 49, y: 4523) > Vector(x: 149, y: 4523)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4524) > Vector(x: 48, y: 4422) > Vector(x: 49, y: 4423) > Vector(x: 49, y: 4523)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4487]: 83 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4524) > Vector(x: 150, y: 4524) > Vector(x: 149, y: 4525) > Vector(x: 49, y: 4525)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4524) > Vector(x: 150, y: 4626) > Vector(x: 149, y: 4625) > Vector(x: 149, y: 4525)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4626) > Vector(x: 48, y: 4626) > Vector(x: 49, y: 4625) > Vector(x: 149, y: 4625)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4626) > Vector(x: 48, y: 4524) > Vector(x: 49, y: 4525) > Vector(x: 49, y: 4625)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4589]: 84 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4626) > Vector(x: 150, y: 4626) > Vector(x: 149, y: 4627) > Vector(x: 49, y: 4627)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4626) > Vector(x: 150, y: 4678) > Vector(x: 149, y: 4677) > Vector(x: 149, y: 4627)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4678) > Vector(x: 48, y: 4678) > Vector(x: 49, y: 4677) > Vector(x: 149, y: 4677)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4678) > Vector(x: 48, y: 4626) > Vector(x: 49, y: 4627) > Vector(x: 49, y: 4677)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [129, 4641]: 85 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4678) > Vector(x: 150, y: 4678) > Vector(x: 149, y: 4679) > Vector(x: 49, y: 4679)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4678) > Vector(x: 150, y: 4780) > Vector(x: 149, y: 4779) > Vector(x: 149, y: 4679)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4780) > Vector(x: 48, y: 4780) > Vector(x: 49, y: 4779) > Vector(x: 149, y: 4779)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4780) > Vector(x: 48, y: 4678) > Vector(x: 49, y: 4679) > Vector(x: 49, y: 4779)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4743]: 86 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4780) > Vector(x: 150, y: 4780) > Vector(x: 149, y: 4781) > Vector(x: 49, y: 4781)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4780) > Vector(x: 150, y: 4882) > Vector(x: 149, y: 4881) > Vector(x: 149, y: 4781)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4882) > Vector(x: 48, y: 4882) > Vector(x: 49, y: 4881) > Vector(x: 149, y: 4881)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4882) > Vector(x: 48, y: 4780) > Vector(x: 49, y: 4781) > Vector(x: 49, y: 4881)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4845]: 87 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4882) > Vector(x: 150, y: 4882) > Vector(x: 149, y: 4883) > Vector(x: 49, y: 4883)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4882) > Vector(x: 150, y: 4984) > Vector(x: 149, y: 4983) > Vector(x: 149, y: 4883)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4984) > Vector(x: 48, y: 4984) > Vector(x: 49, y: 4983) > Vector(x: 149, y: 4983)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4984) > Vector(x: 48, y: 4882) > Vector(x: 49, y: 4883) > Vector(x: 49, y: 4983)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 4947]: 88 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 4984) > Vector(x: 150, y: 4984) > Vector(x: 149, y: 4985) > Vector(x: 49, y: 4985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 4984) > Vector(x: 150, y: 5086) > Vector(x: 149, y: 5085) > Vector(x: 149, y: 4985)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5086) > Vector(x: 48, y: 5086) > Vector(x: 49, y: 5085) > Vector(x: 149, y: 5085)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5086) > Vector(x: 48, y: 4984) > Vector(x: 49, y: 4985) > Vector(x: 49, y: 5085)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [49, 5049]: 89 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5086) > Vector(x: 150, y: 5086) > Vector(x: 149, y: 5087) > Vector(x: 49, y: 5087)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5086) > Vector(x: 150, y: 5138) > Vector(x: 149, y: 5137) > Vector(x: 149, y: 5087)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5138) > Vector(x: 48, y: 5138) > Vector(x: 49, y: 5137) > Vector(x: 149, y: 5137)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5138) > Vector(x: 48, y: 5086) > Vector(x: 49, y: 5087) > Vector(x: 49, y: 5137)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [87, 5101]: 90 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5138) > Vector(x: 150, y: 5138) > Vector(x: 149, y: 5139) > Vector(x: 49, y: 5139)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5138) > Vector(x: 150, y: 5190) > Vector(x: 149, y: 5189) > Vector(x: 149, y: 5139)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5190) > Vector(x: 48, y: 5190) > Vector(x: 49, y: 5189) > Vector(x: 149, y: 5189)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5190) > Vector(x: 48, y: 5138) > Vector(x: 49, y: 5139) > Vector(x: 49, y: 5189)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [93, 5153]: 91 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5190) > Vector(x: 150, y: 5190) > Vector(x: 149, y: 5191) > Vector(x: 49, y: 5191)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5190) > Vector(x: 150, y: 5242) > Vector(x: 149, y: 5241) > Vector(x: 149, y: 5191)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5242) > Vector(x: 48, y: 5242) > Vector(x: 49, y: 5241) > Vector(x: 149, y: 5241)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5242) > Vector(x: 48, y: 5190) > Vector(x: 49, y: 5191) > Vector(x: 49, y: 5241)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [100, 5205]: 92 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5242) > Vector(x: 150, y: 5242) > Vector(x: 149, y: 5243) > Vector(x: 49, y: 5243)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5242) > Vector(x: 150, y: 5294) > Vector(x: 149, y: 5293) > Vector(x: 149, y: 5243)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5294) > Vector(x: 48, y: 5294) > Vector(x: 49, y: 5293) > Vector(x: 149, y: 5293)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5294) > Vector(x: 48, y: 5242) > Vector(x: 49, y: 5243) > Vector(x: 49, y: 5293)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [107, 5257]: 93 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5294) > Vector(x: 150, y: 5294) > Vector(x: 149, y: 5295) > Vector(x: 49, y: 5295)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5294) > Vector(x: 150, y: 5346) > Vector(x: 149, y: 5345) > Vector(x: 149, y: 5295)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5346) > Vector(x: 48, y: 5346) > Vector(x: 49, y: 5345) > Vector(x: 149, y: 5345)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5346) > Vector(x: 48, y: 5294) > Vector(x: 49, y: 5295) > Vector(x: 49, y: 5345)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [108, 5309]: 94 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5346) > Vector(x: 150, y: 5346) > Vector(x: 149, y: 5347) > Vector(x: 49, y: 5347)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5346) > Vector(x: 150, y: 5398) > Vector(x: 149, y: 5397) > Vector(x: 149, y: 5347)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5398) > Vector(x: 48, y: 5398) > Vector(x: 49, y: 5397) > Vector(x: 149, y: 5397)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5398) > Vector(x: 48, y: 5346) > Vector(x: 49, y: 5347) > Vector(x: 49, y: 5397)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [101, 5361]: 95 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5398) > Vector(x: 150, y: 5398) > Vector(x: 149, y: 5399) > Vector(x: 49, y: 5399)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5398) > Vector(x: 150, y: 5450) > Vector(x: 149, y: 5449) > Vector(x: 149, y: 5399)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5450) > Vector(x: 48, y: 5450) > Vector(x: 49, y: 5449) > Vector(x: 149, y: 5449)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5450) > Vector(x: 48, y: 5398) > Vector(x: 49, y: 5399) > Vector(x: 49, y: 5449)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [108, 5413]: 96 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5450) > Vector(x: 150, y: 5450) > Vector(x: 149, y: 5451) > Vector(x: 49, y: 5451)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5450) > Vector(x: 150, y: 5502) > Vector(x: 149, y: 5501) > Vector(x: 149, y: 5451)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5502) > Vector(x: 48, y: 5502) > Vector(x: 49, y: 5501) > Vector(x: 149, y: 5501)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5502) > Vector(x: 48, y: 5450) > Vector(x: 49, y: 5451) > Vector(x: 49, y: 5501)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [115, 5465]: 97 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5502) > Vector(x: 150, y: 5502) > Vector(x: 149, y: 5503) > Vector(x: 49, y: 5503)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5502) > Vector(x: 150, y: 5554) > Vector(x: 149, y: 5553) > Vector(x: 149, y: 5503)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5554) > Vector(x: 48, y: 5554) > Vector(x: 49, y: 5553) > Vector(x: 149, y: 5553)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5554) > Vector(x: 48, y: 5502) > Vector(x: 49, y: 5503) > Vector(x: 49, y: 5553)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [121, 5517]: 98 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5554) > Vector(x: 150, y: 5554) > Vector(x: 149, y: 5555) > Vector(x: 49, y: 5555)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5554) > Vector(x: 150, y: 5606) > Vector(x: 149, y: 5605) > Vector(x: 149, y: 5555)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5606) > Vector(x: 48, y: 5606) > Vector(x: 49, y: 5605) > Vector(x: 149, y: 5605)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5606) > Vector(x: 48, y: 5554) > Vector(x: 49, y: 5555) > Vector(x: 49, y: 5605)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [108, 5569]: 99 -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5606) > Vector(x: 150, y: 5606) > Vector(x: 149, y: 5607) > Vector(x: 49, y: 5607)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5606) > Vector(x: 150, y: 5658) > Vector(x: 149, y: 5657) > Vector(x: 149, y: 5607)) -Shape: rgb(0,0,0) Path (Vector(x: 150, y: 5658) > Vector(x: 48, y: 5658) > Vector(x: 49, y: 5657) > Vector(x: 149, y: 5657)) -Shape: rgb(0,0,0) Path (Vector(x: 48, y: 5658) > Vector(x: 48, y: 5606) > Vector(x: 49, y: 5607) > Vector(x: 49, y: 5657)) -Text: rgb(0,0,0) normal normal 400 20px Times New Roman - [72, 5621]: 100 \ No newline at end of file +Text: rgb(0,0,0) normal normal 400 20px Arial + [65, 22]: 1 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 72]: 2 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 122]: 3 +Text: rgb(0,0,0) normal normal 400 20px Arial + [78, 172]: 4 +Text: rgb(0,0,0) normal normal 400 20px Arial + [72, 222]: 5 +Text: rgb(0,0,0) normal normal 400 20px Arial + [78, 272]: 6 +Text: rgb(0,0,0) normal normal 400 20px Arial + [84, 322]: 7 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 372]: 8 +Text: rgb(0,0,0) normal normal 400 20px Arial + [78, 422]: 9 +Text: rgb(0,0,0) normal normal 400 20px Arial + [72, 472]: 10 +Text: rgb(0,0,0) normal normal 400 20px Arial + [78, 522]: 11 +Text: rgb(0,0,0) normal normal 400 20px Arial + [84, 572]: 12 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 622]: 13 +Text: rgb(0,0,0) normal normal 400 20px Arial + [91, 672]: 14 +Text: rgb(0,0,0) normal normal 400 20px Arial + [86, 722]: 15 +Text: rgb(0,0,0) normal normal 400 20px Arial + [91, 772]: 16 +Text: rgb(0,0,0) normal normal 400 20px Arial + [97, 822]: 17 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 872]: 18 +Text: rgb(0,0,0) normal normal 400 20px Arial + [91, 922]: 19 +Text: rgb(0,0,0) normal normal 400 20px Arial + [86, 972]: 20 +Text: rgb(0,0,0) normal normal 400 20px Arial + [91, 1022]: 21 +Text: rgb(0,0,0) normal normal 400 20px Arial + [97, 1072]: 22 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 1122]: 23 +Text: rgb(0,0,0) normal normal 400 20px Arial + [105, 1172]: 24 +Text: rgb(0,0,0) normal normal 400 20px Arial + [99, 1222]: 25 +Text: rgb(0,0,0) normal normal 400 20px Arial + [105, 1272]: 26 +Text: rgb(0,0,0) normal normal 400 20px Arial + [110, 1322]: 27 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 1372]: 28 +Text: rgb(0,0,0) normal normal 400 20px Arial + [105, 1422]: 29 +Text: rgb(0,0,0) normal normal 400 20px Arial + [99, 1472]: 30 +Text: rgb(0,0,0) normal normal 400 20px Arial + [105, 1522]: 31 +Text: rgb(0,0,0) normal normal 400 20px Arial + [110, 1572]: 32 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 1622]: 33 +Text: rgb(0,0,0) normal normal 400 20px Arial + [118, 1672]: 34 +Text: rgb(0,0,0) normal normal 400 20px Arial + [112, 1722]: 35 +Text: rgb(0,0,0) normal normal 400 20px Arial + [118, 1772]: 36 +Text: rgb(0,0,0) normal normal 400 20px Arial + [124, 1822]: 37 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 1922]: 38 +Text: rgb(0,0,0) normal normal 400 20px Arial + [118, 1972]: 39 +Text: rgb(0,0,0) normal normal 400 20px Arial + [84, 2022]: 40 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 2072]: 41 +Text: rgb(0,0,0) normal normal 400 20px Arial + [95, 2122]: 42 +Text: rgb(0,0,0) normal normal 400 20px Arial + [100, 2172]: 43 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 2222]: 44 +Text: rgb(0,0,0) normal normal 400 20px Arial + [95, 2272]: 45 +Text: rgb(0,0,0) normal normal 400 20px Arial + [101, 2322]: 46 +Text: rgb(0,0,0) normal normal 400 20px Arial + [107, 2372]: 47 +Text: rgb(0,0,0) normal normal 400 20px Arial + [112, 2422]: 48 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 2472]: 49 +Text: rgb(0,0,0) normal normal 400 20px Arial + [70, 2522]: 50 +Text: rgb(0,0,0) normal normal 400 20px Arial + [76, 2572]: 51 +Text: rgb(0,0,0) normal normal 400 20px Arial + [81, 2622]: 52 +Text: rgb(0,0,0) normal normal 400 20px Arial + [87, 2672]: 53 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 2722]: 54 +Text: rgb(0,0,0) normal normal 400 20px Arial + [82, 2772]: 55 +Text: rgb(0,0,0) normal normal 400 20px Arial + [88, 2822]: 56 +Text: rgb(0,0,0) normal normal 400 20px Arial + [93, 2872]: 57 +Text: rgb(0,0,0) normal normal 400 20px Arial + [99, 2922]: 58 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 2972]: 59 +Text: rgb(0,0,0) normal normal 400 20px Arial + [84, 3022]: 60 +Text: rgb(0,0,0) normal normal 400 20px Arial + [89, 3072]: 61 +Text: rgb(0,0,0) normal normal 400 20px Arial + [95, 3122]: 62 +Text: rgb(0,0,0) normal normal 400 20px Arial + [100, 3172]: 63 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 3222]: 64 +Text: rgb(0,0,0) normal normal 400 20px Arial + [97, 3272]: 65 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 3322]: 66 +Text: rgb(0,0,0) normal normal 400 20px Arial + [108, 3372]: 67 +Text: rgb(0,0,0) normal normal 400 20px Arial + [114, 3422]: 68 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 3472]: 69 +Text: rgb(0,0,0) normal normal 400 20px Arial + [97, 3522]: 70 +Text: rgb(0,0,0) normal normal 400 20px Arial + [102, 3572]: 71 +Text: rgb(0,0,0) normal normal 400 20px Arial + [108, 3622]: 72 +Text: rgb(0,0,0) normal normal 400 20px Arial + [114, 3672]: 73 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 3722]: 74 +Text: rgb(0,0,0) normal normal 400 20px Arial + [110, 3772]: 75 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 3822]: 76 +Text: rgb(0,0,0) normal normal 400 20px Arial + [121, 3872]: 77 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 3972]: 78 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 4022]: 79 +Text: rgb(0,0,0) normal normal 400 20px Arial + [110, 4072]: 80 +Text: rgb(0,0,0) normal normal 400 20px Arial + [116, 4122]: 81 +Text: rgb(0,0,0) normal normal 400 20px Arial + [121, 4172]: 82 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4272]: 83 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4372]: 84 +Text: rgb(0,0,0) normal normal 400 20px Arial + [124, 4422]: 85 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4522]: 86 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4622]: 87 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4722]: 88 +Text: rgb(0,0,0) normal normal 400 20px Arial + [48, 4822]: 89 +Text: rgb(0,0,0) normal normal 400 20px Arial + [87, 4872]: 90 +Text: rgb(0,0,0) normal normal 400 20px Arial + [92, 4922]: 91 +Text: rgb(0,0,0) normal normal 400 20px Arial + [98, 4972]: 92 +Text: rgb(0,0,0) normal normal 400 20px Arial + [104, 5022]: 93 +Text: rgb(0,0,0) normal normal 400 20px Arial + [106, 5072]: 94 +Text: rgb(0,0,0) normal normal 400 20px Arial + [100, 5122]: 95 +Text: rgb(0,0,0) normal normal 400 20px Arial + [106, 5172]: 96 +Text: rgb(0,0,0) normal normal 400 20px Arial + [111, 5222]: 97 +Text: rgb(0,0,0) normal normal 400 20px Arial + [117, 5272]: 98 +Text: rgb(0,0,0) normal normal 400 20px Arial + [106, 5322]: 99 +Text: rgb(0,0,0) normal normal 400 20px Arial + [74, 5372]: 100 \ No newline at end of file diff --git a/tests/reftests/overflow/overflow-transform.html b/tests/reftests/overflow/overflow-transform.html index d513eba06..77b5c5eaf 100644 --- a/tests/reftests/overflow/overflow-transform.html +++ b/tests/reftests/overflow/overflow-transform.html @@ -10,6 +10,7 @@ overflow: hidden; position: relative; border:2px solid #000; + height: 300px; } .img-1{ display: inline-block; @@ -36,6 +37,8 @@ } body { font-family: Arial; + line-height: 17px; + font-size: 1em; } diff --git a/tests/reftests/overflow/overflow-transform.txt b/tests/reftests/overflow/overflow-transform.txt index 66394e137..30cf1c245 100644 --- a/tests/reftests/overflow/overflow-transform.txt +++ b/tests/reftests/overflow/overflow-transform.txt @@ -2,11 +2,11 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 312, y: 8) > Vector(x: 310, y: 10) > Vector(x: 10, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 368) > Vector(x: 310, y: 366) > Vector(x: 310, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 312, y: 368) > Vector(x: 8, y: 368) > Vector(x: 10, y: 366) > Vector(x: 310, y: 366)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 368) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 366)) -Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) -Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 8) > Vector(x: 312, y: 312) > Vector(x: 310, y: 310) > Vector(x: 310, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 312, y: 312) > Vector(x: 8, y: 312) > Vector(x: 10, y: 310) > Vector(x: 310, y: 310)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 312) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 310)) +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) +Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) Text: rgb(0,0,0) normal normal 400 16px Arial [10, 26]: Le [32, 26]: Lorem @@ -15,120 +15,120 @@ Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366 [156, 26]: simplement [242, 26]: du [264, 26]: faux - [10, 44]: texte - [49, 44]: employé - [114, 44]: dans - [153, 44]: la - [170, 44]: composition - [260, 44]: et - [278, 44]: la - [10, 62]: mise - [48, 62]: en - [70, 62]: page - [110, 62]: avant - [154, 62]: impression. - [240, 62]: Le - [262, 62]: Lorem - [10, 80]: Ipsum - [58, 80]: est - [84, 80]: le - [101, 80]: faux - [135, 80]: texte - [174, 80]: standard - [241, 80]: de - [10, 98]: l'imprimerie - [96, 98]: depuis - [147, 98]: les - [172, 98]: années - [229, 98]: 1500, - [10, 116]: quand - [59, 116]: un - [81, 116]: peintre - [134, 116]: anonyme - [205, 116]: assembla - [10, 134]: ensemble - [84, 134]: des - [114, 134]: morceaux - [189, 134]: de - [211, 134]: texte - [250, 134]: pour - [10, 152]: réaliser - [67, 152]: un - [89, 152]: livre - [123, 152]: spécimen - [196, 152]: de - [218, 152]: polices - [272, 152]: de - [10, 170]: texte. - [54, 170]: Il - [66, 170]: n'a - [91, 170]: pas - [122, 170]: fait - [147, 170]: que - [178, 170]: survivre - [239, 170]: cinq - [10, 188]: siècles, - [68, 188]: mais - [106, 188]: s'est - [143, 188]: aussi - [185, 188]: adapté - [238, 188]: à - [251, 188]: la - [10, 206]: bureautique - [99, 206]: informatique, - [196, 206]: sans - [234, 206]: que - [265, 206]: son - [10, 224]: contenu - [71, 224]: n'en - [106, 224]: soit - [135, 224]: modifié. - [195, 224]: Il - [208, 224]: a - [221, 224]: été - [10, 242]: popularisé - [88, 242]: dans - [128, 242]: les - [152, 242]: années - [209, 242]: 1960 - [249, 242]: grâce - [294, 242]: à - [10, 260]: la - [27, 260]: vente - [70, 260]: de - [93, 260]: feuilles - [147, 260]: Letraset - [209, 260]: contenant - [284, 260]: des - [10, 278]: passages - [83, 278]: du - [105, 278]: Lorem - [155, 278]: Ipsum, - [208, 278]: et, - [230, 278]: plus - [10, 296]: récemment, - [99, 296]: par - [126, 296]: son - [157, 296]: inclusion - [224, 296]: dans - [262, 296]: des - [10, 314]: applications - [99, 314]: de - [121, 314]: mise - [160, 314]: en - [182, 314]: page - [222, 314]: de - [244, 314]: texte, - [10, 332]: comme - [67, 332]: Aldus - [111, 332]: PageMaker. + [10, 42]: texte + [49, 42]: employé + [114, 42]: dans + [153, 42]: la + [170, 42]: composition + [260, 42]: et + [278, 42]: la + [10, 59]: mise + [48, 59]: en + [70, 59]: page + [110, 59]: avant + [154, 59]: impression. + [240, 59]: Le + [262, 59]: Lorem + [10, 76]: Ipsum + [58, 76]: est + [84, 76]: le + [101, 76]: faux + [135, 76]: texte + [174, 76]: standard + [241, 76]: de + [10, 93]: l'imprimerie + [96, 93]: depuis + [147, 93]: les + [172, 93]: années + [229, 93]: 1500, + [10, 110]: quand + [59, 110]: un + [81, 110]: peintre + [134, 110]: anonyme + [205, 110]: assembla + [10, 126]: ensemble + [84, 126]: des + [114, 126]: morceaux + [189, 126]: de + [211, 126]: texte + [250, 126]: pour + [10, 143]: réaliser + [67, 143]: un + [89, 143]: livre + [123, 143]: spécimen + [196, 143]: de + [218, 143]: polices + [272, 143]: de + [10, 160]: texte. + [54, 160]: Il + [66, 160]: n'a + [91, 160]: pas + [122, 160]: fait + [147, 160]: que + [178, 160]: survivre + [239, 160]: cinq + [10, 177]: siècles, + [68, 177]: mais + [106, 177]: s'est + [143, 177]: aussi + [185, 177]: adapté + [238, 177]: à + [251, 177]: la + [10, 194]: bureautique + [99, 194]: informatique, + [196, 194]: sans + [234, 194]: que + [265, 194]: son + [10, 210]: contenu + [71, 210]: n'en + [106, 210]: soit + [135, 210]: modifié. + [195, 210]: Il + [208, 210]: a + [221, 210]: été + [10, 227]: popularisé + [88, 227]: dans + [128, 227]: les + [152, 227]: années + [209, 227]: 1960 + [249, 227]: grâce + [294, 227]: à + [10, 244]: la + [27, 244]: vente + [70, 244]: de + [93, 244]: feuilles + [147, 244]: Letraset + [209, 244]: contenant + [284, 244]: des + [10, 261]: passages + [83, 261]: du + [105, 261]: Lorem + [155, 261]: Ipsum, + [208, 261]: et, + [230, 261]: plus + [10, 278]: récemment, + [99, 278]: par + [126, 278]: son + [157, 278]: inclusion + [224, 278]: dans + [262, 278]: des + [10, 294]: applications + [99, 294]: de + [121, 294]: mise + [160, 294]: en + [182, 294]: page + [222, 294]: de + [244, 294]: texte, + [10, 311]: comme + [67, 311]: Aldus + [111, 311]: PageMaker. Transform: (91, 525) [-0.92, -0.39, 0.39, -0.92, 0, 0] - Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) Clip: Path (Vector(x: -140, y: 215) > Vector(x: 321, y: 215) > Vector(x: 321, y: 835) > Vector(x: -140, y: 835)) Fill: rgb(255,0,0) - Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) Transform: (268, -94) [-0.92, -0.39, 0.39, -0.92, 0, 0] - Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) Clip: Path (Vector(x: -47, y: -402) > Vector(x: 582, y: -402) > Vector(x: 582, y: 215) > Vector(x: -47, y: 215)) Fill: rgb(255,0,255) - Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 366) > Vector(x: 10, y: 366)) \ No newline at end of file + Clip: Path (Vector(x: 10, y: 10) > Vector(x: 310, y: 10) > Vector(x: 310, y: 310) > Vector(x: 10, y: 310)) \ No newline at end of file diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index 05dce7888..6528dc487 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -24,9 +24,12 @@ } h1 { margin:0; + line-height: 40px; } body { font-family: Arial; + line-height: 17px; + font-size: 1em; } diff --git a/tests/reftests/overflow/overflow.txt b/tests/reftests/overflow/overflow.txt index 75f8527e6..6b7d4141d 100644 --- a/tests/reftests/overflow/overflow.txt +++ b/tests/reftests/overflow/overflow.txt @@ -1,151 +1,151 @@ -Window: [800, 626] -Rectangle: [0, 0, 800, 626] rgba(0,0,0,0) +Window: [800, 632] +Rectangle: [0, 0, 800, 632] rgba(0,0,0,0) Opacity: 1 Text: rgb(0,0,0) normal normal 700 32px Arial - [8, 8]: Overflow: - [164, 8]: visible -Clip: Path (Vector(x: 8, y: 45) > Vector(x: 320, y: 45) > Vector(x: 320, y: 257) > Vector(x: 8, y: 257)) + [8, 10]: Overflow: + [164, 10]: visible +Clip: Path (Vector(x: 8, y: 48) > Vector(x: 320, y: 48) > Vector(x: 320, y: 260) > Vector(x: 8, y: 260)) Fill: rgb(204,204,204) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 45) > Vector(x: 320, y: 45) > Vector(x: 314, y: 51) > Vector(x: 14, y: 51)) -Shape: rgb(0,0,0) Path (Vector(x: 320, y: 45) > Vector(x: 320, y: 257) > Vector(x: 314, y: 251) > Vector(x: 314, y: 51)) -Shape: rgb(0,0,0) Path (Vector(x: 320, y: 257) > Vector(x: 8, y: 257) > Vector(x: 14, y: 251) > Vector(x: 314, y: 251)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 257) > Vector(x: 8, y: 45) > Vector(x: 14, y: 51) > Vector(x: 14, y: 251)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 48) > Vector(x: 320, y: 48) > Vector(x: 314, y: 54) > Vector(x: 14, y: 54)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 48) > Vector(x: 320, y: 260) > Vector(x: 314, y: 254) > Vector(x: 314, y: 54)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 260) > Vector(x: 8, y: 260) > Vector(x: 14, y: 254) > Vector(x: 314, y: 254)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 260) > Vector(x: 8, y: 48) > Vector(x: 14, y: 54) > Vector(x: 14, y: 254)) Text: rgb(0,0,0) normal normal 400 16px Arial - [14, 51]: Lorem - [64, 51]: Ipsum - [112, 51]: is - [128, 51]: simply - [178, 51]: dummy - [234, 51]: text - [265, 51]: of - [282, 51]: the - [14, 69]: printing - [71, 69]: and - [102, 69]: typesetting - [184, 69]: industry. - [248, 69]: Lorem + [14, 54]: Lorem + [64, 54]: Ipsum + [112, 54]: is + [128, 54]: simply + [178, 54]: dummy + [234, 54]: text + [265, 54]: of + [282, 54]: the + [14, 70]: printing + [71, 70]: and + [102, 70]: typesetting + [184, 70]: industry. + [248, 70]: Lorem [14, 87]: Ipsum [62, 87]: has [92, 87]: been [132, 87]: the [159, 87]: industry's [230, 87]: standard - [14, 105]: dummy - [71, 105]: text - [101, 105]: ever - [137, 105]: since - [178, 105]: the - [205, 105]: 1500s, - [258, 105]: when - [14, 123]: an - [36, 123]: unknown - [105, 123]: printer - [154, 123]: took - [189, 123]: a - [202, 123]: galley - [249, 123]: of - [267, 123]: type - [14, 141]: and - [45, 141]: scrambled - [123, 141]: it - [136, 141]: to - [154, 141]: make - [197, 141]: a - [210, 141]: type - [245, 141]: specimen - [14, 159]: book. - [58, 159]: It - [71, 159]: has - [101, 159]: survived - [165, 159]: not - [192, 159]: only - [226, 159]: five - [14, 177]: centuries, - [88, 177]: but - [114, 177]: also - [148, 177]: the - [175, 177]: leap - [210, 177]: into - [240, 177]: electronic - [14, 195]: typesetting, - [100, 195]: remaining - [175, 195]: essentially - [14, 213]: unchanged. - [102, 213]: It - [116, 213]: was - [148, 213]: popularised - [236, 213]: in - [252, 213]: the - [14, 231]: 1960s - [62, 231]: with - [95, 231]: the - [122, 231]: release - [178, 231]: of - [196, 231]: Letraset - [258, 231]: sheets - [14, 249]: containing - [91, 249]: Lorem - [141, 249]: Ipsum - [189, 249]: passages, - [266, 249]: and - [14, 267]: more - [55, 267]: recently - [115, 267]: with - [148, 267]: desktop - [209, 267]: publishing - [14, 285]: software - [79, 285]: like + [14, 104]: dummy + [71, 104]: text + [101, 104]: ever + [137, 104]: since + [178, 104]: the + [205, 104]: 1500s, + [258, 104]: when + [14, 121]: an + [36, 121]: unknown + [105, 121]: printer + [154, 121]: took + [189, 121]: a + [202, 121]: galley + [249, 121]: of + [267, 121]: type + [14, 138]: and + [45, 138]: scrambled + [123, 138]: it + [136, 138]: to + [154, 138]: make + [197, 138]: a + [210, 138]: type + [245, 138]: specimen + [14, 154]: book. + [58, 154]: It + [71, 154]: has + [101, 154]: survived + [165, 154]: not + [192, 154]: only + [226, 154]: five + [14, 171]: centuries, + [88, 171]: but + [114, 171]: also + [148, 171]: the + [175, 171]: leap + [210, 171]: into + [240, 171]: electronic + [14, 188]: typesetting, + [100, 188]: remaining + [175, 188]: essentially + [14, 205]: unchanged. + [102, 205]: It + [116, 205]: was + [148, 205]: popularised + [236, 205]: in + [252, 205]: the + [14, 222]: 1960s + [62, 222]: with + [95, 222]: the + [122, 222]: release + [178, 222]: of + [196, 222]: Letraset + [258, 222]: sheets + [14, 238]: containing + [91, 238]: Lorem + [141, 238]: Ipsum + [189, 238]: passages, + [266, 238]: and + [14, 255]: more + [55, 255]: recently + [115, 255]: with + [148, 255]: desktop + [209, 255]: publishing + [14, 272]: software + [79, 272]: like Text: rgb(0,0,0) normal normal 400 16px Arial - [245, 285]: including - [14, 303]: versions - [78, 303]: of - [96, 303]: Lorem - [146, 303]: Ipsum. + [245, 272]: including + [14, 289]: versions + [78, 289]: of + [96, 289]: Lorem + [146, 289]: Ipsum. Text: rgb(0,0,0) normal normal 700 32px Arial - [8, 317]: Overflow: - [164, 317]: hidden -Clip: Path (Vector(x: 8, y: 354) > Vector(x: 320, y: 354) > Vector(x: 320, y: 566) > Vector(x: 8, y: 566)) + [8, 322]: Overflow: + [164, 322]: hidden +Clip: Path (Vector(x: 8, y: 360) > Vector(x: 320, y: 360) > Vector(x: 320, y: 572) > Vector(x: 8, y: 572)) Fill: rgb(204,204,204) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 354) > Vector(x: 320, y: 354) > Vector(x: 314, y: 360) > Vector(x: 14, y: 360)) -Shape: rgb(0,0,0) Path (Vector(x: 320, y: 354) > Vector(x: 320, y: 566) > Vector(x: 314, y: 560) > Vector(x: 314, y: 360)) -Shape: rgb(0,0,0) Path (Vector(x: 320, y: 566) > Vector(x: 8, y: 566) > Vector(x: 14, y: 560) > Vector(x: 314, y: 560)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 566) > Vector(x: 8, y: 354) > Vector(x: 14, y: 360) > Vector(x: 14, y: 560)) -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 360) > Vector(x: 320, y: 360) > Vector(x: 314, y: 366) > Vector(x: 14, y: 366)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 360) > Vector(x: 320, y: 572) > Vector(x: 314, y: 566) > Vector(x: 314, y: 366)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 572) > Vector(x: 8, y: 572) > Vector(x: 14, y: 566) > Vector(x: 314, y: 566)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 572) > Vector(x: 8, y: 360) > Vector(x: 14, y: 366) > Vector(x: 14, y: 566)) +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 400 16px Arial - [14, 360]: Lorem - [64, 360]: Ipsum - [112, 360]: is - [128, 360]: simply - [178, 360]: dummy - [234, 360]: text - [265, 360]: of - [282, 360]: the - [14, 378]: printing - [71, 378]: and - [102, 378]: typesetting - [184, 378]: industry. - [248, 378]: Lorem - [14, 396]: Ipsum - [62, 396]: has - [92, 396]: been - [132, 396]: the - [159, 396]: industry's - [230, 396]: standard - [14, 414]: dummy - [71, 414]: text - [101, 414]: ever - [137, 414]: since - [178, 414]: the - [205, 414]: 1500s, - [258, 414]: when - [14, 432]: an - [36, 432]: unknown - [105, 432]: printer - [154, 432]: took - [189, 432]: a - [202, 432]: galley - [249, 432]: of - [267, 432]: type + [14, 366]: Lorem + [64, 366]: Ipsum + [112, 366]: is + [128, 366]: simply + [178, 366]: dummy + [234, 366]: text + [265, 366]: of + [282, 366]: the + [14, 382]: printing + [71, 382]: and + [102, 382]: typesetting + [184, 382]: industry. + [248, 382]: Lorem + [14, 399]: Ipsum + [62, 399]: has + [92, 399]: been + [132, 399]: the + [159, 399]: industry's + [230, 399]: standard + [14, 416]: dummy + [71, 416]: text + [101, 416]: ever + [137, 416]: since + [178, 416]: the + [205, 416]: 1500s, + [258, 416]: when + [14, 433]: an + [36, 433]: unknown + [105, 433]: printer + [154, 433]: took + [189, 433]: a + [202, 433]: galley + [249, 433]: of + [267, 433]: type [14, 450]: and [45, 450]: scrambled [123, 450]: it @@ -154,104 +154,104 @@ Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 5 [197, 450]: a [210, 450]: type [245, 450]: specimen - [14, 468]: book. - [58, 468]: It - [71, 468]: has - [101, 468]: survived - [165, 468]: not - [192, 468]: only - [226, 468]: five - [14, 486]: centuries, - [88, 486]: but - [114, 486]: also - [148, 486]: the - [175, 486]: leap - [210, 486]: into - [240, 486]: electronic - [14, 504]: typesetting, - [100, 504]: remaining - [175, 504]: essentially - [14, 522]: unchanged. - [102, 522]: It - [116, 522]: was - [148, 522]: popularised - [236, 522]: in - [252, 522]: the - [14, 540]: 1960s - [62, 540]: with - [95, 540]: the - [122, 540]: release - [178, 540]: of + [14, 466]: book. + [58, 466]: It + [71, 466]: has + [101, 466]: survived + [165, 466]: not + [192, 466]: only + [226, 466]: five + [14, 483]: centuries, + [88, 483]: but + [114, 483]: also + [148, 483]: the + [175, 483]: leap + [210, 483]: into + [240, 483]: electronic + [14, 500]: typesetting, + [100, 500]: remaining + [175, 500]: essentially + [14, 517]: unchanged. + [102, 517]: It + [116, 517]: was + [148, 517]: popularised + [236, 517]: in + [252, 517]: the + [14, 534]: 1960s + [62, 534]: with + [95, 534]: the + [122, 534]: release + [178, 534]: of Text: rgb(0,0,0) normal normal 400 16px Arial - [14, 833]: Letraset - [76, 833]: sheets - [128, 833]: containing - [205, 833]: Lorem - [255, 833]: Ipsum - [14, 911]: passages, + [14, 825]: Letraset + [76, 825]: sheets + [128, 825]: containing + [205, 825]: Lorem + [255, 825]: Ipsum + [14, 903]: passages, Text: rgb(0,0,0) normal normal 400 16px Arial - [171, 911]: and - [202, 911]: more - [243, 911]: recently - [14, 929]: with - [47, 929]: desktop - [107, 929]: publishing - [184, 929]: software - [249, 929]: like + [171, 903]: and + [202, 903]: more + [243, 903]: recently + [14, 920]: with + [47, 920]: desktop + [107, 920]: publishing + [184, 920]: software + [249, 920]: like Text: rgb(0,0,0) normal normal 400 16px Arial - [152, 947]: including - [220, 947]: versions - [284, 947]: of - [14, 965]: Lorem - [64, 965]: Ipsum. -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) - Clip: Path (Vector(x: 14, y: 558) > Vector(x: 314, y: 558) > Vector(x: 314, y: 773) > Vector(x: 14, y: 773)) + [152, 937]: including + [220, 937]: versions + [284, 937]: of + [14, 954]: Lorem + [64, 954]: Ipsum. +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) + Clip: Path (Vector(x: 14, y: 551) > Vector(x: 314, y: 551) > Vector(x: 314, y: 766) > Vector(x: 14, y: 766)) Fill: rgb(0,128,0) - Shape: rgb(0,0,0) Path (Vector(x: 14, y: 558) > Vector(x: 314, y: 558) > Vector(x: 314, y: 568) > Vector(x: 14, y: 568)) - Shape: rgb(0,0,0) Path (Vector(x: 314, y: 558) > Vector(x: 314, y: 773) > Vector(x: 314, y: 768) > Vector(x: 314, y: 568)) - Shape: rgb(0,0,0) Path (Vector(x: 314, y: 773) > Vector(x: 14, y: 773) > Vector(x: 14, y: 768) > Vector(x: 314, y: 768)) - Shape: rgb(0,0,0) Path (Vector(x: 14, y: 773) > Vector(x: 14, y: 558) > Vector(x: 14, y: 568) > Vector(x: 14, y: 768)) -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 551) > Vector(x: 314, y: 551) > Vector(x: 314, y: 561) > Vector(x: 14, y: 561)) + Shape: rgb(0,0,0) Path (Vector(x: 314, y: 551) > Vector(x: 314, y: 766) > Vector(x: 314, y: 761) > Vector(x: 314, y: 561)) + Shape: rgb(0,0,0) Path (Vector(x: 314, y: 766) > Vector(x: 14, y: 766) > Vector(x: 14, y: 761) > Vector(x: 314, y: 761)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 766) > Vector(x: 14, y: 551) > Vector(x: 14, y: 561) > Vector(x: 14, y: 761)) +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 400 16px Arial - [14, 568]: a -Clip: Path (BezierCurve(x0: 480, y0: 410, x1: 636, y1: 354, cx0: 480, cy0: 379, cx1: 550, cy1: 354) > BezierCurve(x0: 636, y0: 354, x1: 792, y1: 410, cx0: 722, cy0: 354, cx1: 792, cy1: 379) > BezierCurve(x0: 792, y0: 410, x1: 636, y1: 466, cx0: 792, cy0: 441, cx1: 722, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 480, y1: 410, cx0: 550, cy0: 466, cx1: 480, cy1: 441)) + [14, 560]: a +Clip: Path (BezierCurve(x0: 480, y0: 416, x1: 636, y1: 360, cx0: 480, cy0: 385, cx1: 550, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 792, y1: 416, cx0: 722, cy0: 360, cx1: 792, cy1: 385) > BezierCurve(x0: 792, y0: 416, x1: 636, y1: 472, cx0: 792, cy0: 447, cx1: 722, cy1: 472) > BezierCurve(x0: 636, y0: 472, x1: 480, y1: 416, cx0: 550, cy0: 472, cx1: 480, cy1: 447)) Fill: rgb(204,204,204) -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 400 16px Arial - [486, 360]: Lorem - [536, 360]: Ipsum - [584, 360]: is - [600, 360]: simply - [650, 360]: dummy - [706, 360]: text - [737, 360]: of - [754, 360]: the - [486, 378]: printing - [543, 378]: and - [574, 378]: typesetting - [656, 378]: industry. - [720, 378]: Lorem - [486, 396]: Ipsum - [534, 396]: has - [564, 396]: been - [604, 396]: the - [631, 396]: industry's - [702, 396]: standard - [486, 414]: dummy - [543, 414]: text - [573, 414]: ever - [609, 414]: since - [650, 414]: the - [677, 414]: 1500s, - [730, 414]: when - [486, 432]: an - [508, 432]: unknown - [577, 432]: printer - [626, 432]: took - [661, 432]: a - [674, 432]: galley - [721, 432]: of - [739, 432]: type + [486, 366]: Lorem + [536, 366]: Ipsum + [584, 366]: is + [600, 366]: simply + [650, 366]: dummy + [706, 366]: text + [737, 366]: of + [754, 366]: the + [486, 382]: printing + [543, 382]: and + [574, 382]: typesetting + [656, 382]: industry. + [720, 382]: Lorem + [486, 399]: Ipsum + [534, 399]: has + [564, 399]: been + [604, 399]: the + [631, 399]: industry's + [702, 399]: standard + [486, 416]: dummy + [543, 416]: text + [573, 416]: ever + [609, 416]: since + [650, 416]: the + [677, 416]: 1500s, + [730, 416]: when + [486, 433]: an + [508, 433]: unknown + [577, 433]: printer + [626, 433]: took + [661, 433]: a + [674, 433]: galley + [721, 433]: of + [739, 433]: type [486, 450]: and [517, 450]: scrambled [595, 450]: it @@ -260,308 +260,308 @@ Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, [669, 450]: a [682, 450]: type [717, 450]: specimen - [486, 468]: book. - [530, 468]: It - [543, 468]: has - [573, 468]: survived - [637, 468]: not - [664, 468]: only - [698, 468]: five - [486, 486]: centuries, - [560, 486]: but - [586, 486]: also - [620, 486]: the - [647, 486]: leap - [682, 486]: into - [712, 486]: electronic - [486, 504]: typesetting, - [572, 504]: remaining - [647, 504]: essentially - [486, 522]: unchanged. - [574, 522]: It - [588, 522]: was - [620, 522]: popularised - [708, 522]: in - [724, 522]: the - [486, 540]: 1960s - [534, 540]: with - [567, 540]: the - [594, 540]: release - [650, 540]: of + [486, 466]: book. + [530, 466]: It + [543, 466]: has + [573, 466]: survived + [637, 466]: not + [664, 466]: only + [698, 466]: five + [486, 483]: centuries, + [560, 483]: but + [586, 483]: also + [620, 483]: the + [647, 483]: leap + [682, 483]: into + [712, 483]: electronic + [486, 500]: typesetting, + [572, 500]: remaining + [647, 500]: essentially + [486, 517]: unchanged. + [574, 517]: It + [588, 517]: was + [620, 517]: popularised + [708, 517]: in + [724, 517]: the + [486, 534]: 1960s + [534, 534]: with + [567, 534]: the + [594, 534]: release + [650, 534]: of Text: rgb(0,0,0) normal normal 400 16px Arial - [486, 833]: Letraset - [548, 833]: sheets - [600, 833]: containing - [677, 833]: Lorem - [727, 833]: Ipsum - [486, 911]: passages, + [486, 825]: Letraset + [548, 825]: sheets + [600, 825]: containing + [677, 825]: Lorem + [727, 825]: Ipsum + [486, 903]: passages, Text: rgb(0,0,0) normal normal 400 16px Arial - [643, 911]: and - [674, 911]: more - [715, 911]: recently - [486, 929]: with - [519, 929]: desktop - [579, 929]: publishing - [656, 929]: software - [721, 929]: like + [643, 903]: and + [674, 903]: more + [715, 903]: recently + [486, 920]: with + [519, 920]: desktop + [579, 920]: publishing + [656, 920]: software + [721, 920]: like Text: rgb(0,0,0) normal normal 400 16px Arial - [624, 947]: including - [692, 947]: versions - [756, 947]: of - [486, 965]: Lorem - [536, 965]: Ipsum. -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) - Clip: Path (Vector(x: 486, y: 558) > Vector(x: 786, y: 558) > Vector(x: 786, y: 773) > Vector(x: 486, y: 773)) + [624, 937]: including + [692, 937]: versions + [756, 937]: of + [486, 954]: Lorem + [536, 954]: Ipsum. +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) + Clip: Path (Vector(x: 486, y: 551) > Vector(x: 786, y: 551) > Vector(x: 786, y: 766) > Vector(x: 486, y: 766)) Fill: rgb(0,128,0) - Shape: rgb(0,0,0) Path (Vector(x: 486, y: 558) > Vector(x: 786, y: 558) > Vector(x: 786, y: 568) > Vector(x: 486, y: 568)) - Shape: rgb(0,0,0) Path (Vector(x: 786, y: 558) > Vector(x: 786, y: 773) > Vector(x: 786, y: 768) > Vector(x: 786, y: 568)) - Shape: rgb(0,0,0) Path (Vector(x: 786, y: 773) > Vector(x: 486, y: 773) > Vector(x: 486, y: 768) > Vector(x: 786, y: 768)) - Shape: rgb(0,0,0) Path (Vector(x: 486, y: 773) > Vector(x: 486, y: 558) > Vector(x: 486, y: 568) > Vector(x: 486, y: 768)) -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 551) > Vector(x: 786, y: 551) > Vector(x: 786, y: 561) > Vector(x: 486, y: 561)) + Shape: rgb(0,0,0) Path (Vector(x: 786, y: 551) > Vector(x: 786, y: 766) > Vector(x: 786, y: 761) > Vector(x: 786, y: 561)) + Shape: rgb(0,0,0) Path (Vector(x: 786, y: 766) > Vector(x: 486, y: 766) > Vector(x: 486, y: 761) > Vector(x: 786, y: 761)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 766) > Vector(x: 486, y: 551) > Vector(x: 486, y: 561) > Vector(x: 486, y: 761)) +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 400 16px Arial - [486, 568]: a -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) - Clip: Path (Vector(x: 563, y: 851) > Vector(x: 638, y: 851) > Vector(x: 638, y: 926) > Vector(x: 563, y: 926)) + [486, 560]: a +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) + Clip: Path (Vector(x: 563, y: 843) > Vector(x: 638, y: 843) > Vector(x: 638, y: 918) > Vector(x: 563, y: 918)) Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 700 16px Arial - [486, 947]: Aldus - [535, 947]: PageMaker + [486, 937]: Aldus + [535, 937]: PageMaker Text: rgb(0,0,0) normal normal 700 16px Arial - [107, 285]: Aldus - [156, 285]: PageMaker -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) - Clip: Path (Vector(x: 91, y: 851) > Vector(x: 166, y: 851) > Vector(x: 166, y: 926) > Vector(x: 91, y: 926)) + [107, 272]: Aldus + [156, 272]: PageMaker +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) + Clip: Path (Vector(x: 91, y: 843) > Vector(x: 166, y: 843) > Vector(x: 166, y: 918) > Vector(x: 91, y: 918)) Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 700 16px Arial - [14, 947]: Aldus - [63, 947]: PageMaker -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) - Clip: Path (Vector(x: 486, y: 983) > Vector(x: 798, y: 983) > Vector(x: 798, y: 1195) > Vector(x: 486, y: 1195)) + [14, 937]: Aldus + [63, 937]: PageMaker +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) + Clip: Path (Vector(x: 486, y: 971) > Vector(x: 798, y: 971) > Vector(x: 798, y: 1183) > Vector(x: 486, y: 1183)) Fill: rgb(204,204,204) - Shape: rgb(0,0,0) Path (Vector(x: 486, y: 983) > Vector(x: 798, y: 983) > Vector(x: 792, y: 989) > Vector(x: 492, y: 989)) - Shape: rgb(0,0,0) Path (Vector(x: 798, y: 983) > Vector(x: 798, y: 1195) > Vector(x: 792, y: 1189) > Vector(x: 792, y: 989)) - Shape: rgb(0,0,0) Path (Vector(x: 798, y: 1195) > Vector(x: 486, y: 1195) > Vector(x: 492, y: 1189) > Vector(x: 792, y: 1189)) - Shape: rgb(0,0,0) Path (Vector(x: 486, y: 1195) > Vector(x: 486, y: 983) > Vector(x: 492, y: 989) > Vector(x: 492, y: 1189)) -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 971) > Vector(x: 798, y: 971) > Vector(x: 792, y: 977) > Vector(x: 492, y: 977)) + Shape: rgb(0,0,0) Path (Vector(x: 798, y: 971) > Vector(x: 798, y: 1183) > Vector(x: 792, y: 1177) > Vector(x: 792, y: 977)) + Shape: rgb(0,0,0) Path (Vector(x: 798, y: 1183) > Vector(x: 486, y: 1183) > Vector(x: 492, y: 1177) > Vector(x: 792, y: 1177)) + Shape: rgb(0,0,0) Path (Vector(x: 486, y: 1183) > Vector(x: 486, y: 971) > Vector(x: 492, y: 977) > Vector(x: 492, y: 1177)) +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 400 16px Arial - [492, 1043]: Lorem - [542, 1043]: Ipsum - [590, 1043]: is - [606, 1043]: simply - [656, 1043]: dummy - [712, 1043]: text - [743, 1043]: of - [760, 1043]: the - [492, 1061]: printing - [549, 1061]: and - [580, 1061]: typesetting - [662, 1061]: industry. - [726, 1061]: Lorem - [492, 1079]: Ipsum - [540, 1079]: has - [570, 1079]: been - [610, 1079]: the - [637, 1079]: industry's - [708, 1079]: standard - [492, 1097]: dummy - [549, 1097]: text - [579, 1097]: ever - [615, 1097]: since - [656, 1097]: the - [683, 1097]: 1500s, - [736, 1097]: when - [492, 1115]: an - [514, 1115]: unknown - [583, 1115]: printer - [632, 1115]: took - [667, 1115]: a - [680, 1115]: galley - [727, 1115]: of - [745, 1115]: type - [492, 1133]: and - [523, 1133]: scrambled - [601, 1133]: it - [614, 1133]: to - [632, 1133]: make - [675, 1133]: a - [688, 1133]: type - [723, 1133]: specimen - [492, 1151]: book. - [536, 1151]: It - [549, 1151]: has - [579, 1151]: survived - [643, 1151]: not - [670, 1151]: only - [704, 1151]: five - [492, 1169]: centuries, - [566, 1169]: but - [592, 1169]: also - [626, 1169]: the - [653, 1169]: leap - [688, 1169]: into - [718, 1169]: electronic - [492, 1187]: typesetting, - [578, 1187]: remaining - [653, 1187]: essentially - [492, 1205]: unchanged. - [580, 1205]: It - [594, 1205]: was - [626, 1205]: popularised - [714, 1205]: in - [730, 1205]: the - [492, 1223]: 1960s - [540, 1223]: with - [573, 1223]: the - [600, 1223]: release - [656, 1223]: of - [674, 1223]: Letraset - [736, 1223]: sheets - [492, 1241]: containing - [569, 1241]: Lorem - [619, 1241]: Ipsum - [667, 1241]: passages, - [744, 1241]: and - [492, 1259]: more - [533, 1259]: recently - [593, 1259]: with - [626, 1259]: desktop - [687, 1259]: publishing - [492, 1277]: software - [557, 1277]: like + [492, 1027]: Lorem + [542, 1027]: Ipsum + [590, 1027]: is + [606, 1027]: simply + [656, 1027]: dummy + [712, 1027]: text + [743, 1027]: of + [760, 1027]: the + [492, 1044]: printing + [549, 1044]: and + [580, 1044]: typesetting + [662, 1044]: industry. + [726, 1044]: Lorem + [492, 1061]: Ipsum + [540, 1061]: has + [570, 1061]: been + [610, 1061]: the + [637, 1061]: industry's + [708, 1061]: standard + [492, 1077]: dummy + [549, 1077]: text + [579, 1077]: ever + [615, 1077]: since + [656, 1077]: the + [683, 1077]: 1500s, + [736, 1077]: when + [492, 1094]: an + [514, 1094]: unknown + [583, 1094]: printer + [632, 1094]: took + [667, 1094]: a + [680, 1094]: galley + [727, 1094]: of + [745, 1094]: type + [492, 1111]: and + [523, 1111]: scrambled + [601, 1111]: it + [614, 1111]: to + [632, 1111]: make + [675, 1111]: a + [688, 1111]: type + [723, 1111]: specimen + [492, 1128]: book. + [536, 1128]: It + [549, 1128]: has + [579, 1128]: survived + [643, 1128]: not + [670, 1128]: only + [704, 1128]: five + [492, 1145]: centuries, + [566, 1145]: but + [592, 1145]: also + [626, 1145]: the + [653, 1145]: leap + [688, 1145]: into + [718, 1145]: electronic + [492, 1161]: typesetting, + [578, 1161]: remaining + [653, 1161]: essentially + [492, 1178]: unchanged. + [580, 1178]: It + [594, 1178]: was + [626, 1178]: popularised + [714, 1178]: in + [730, 1178]: the + [492, 1195]: 1960s + [540, 1195]: with + [573, 1195]: the + [600, 1195]: release + [656, 1195]: of + [674, 1195]: Letraset + [736, 1195]: sheets + [492, 1212]: containing + [569, 1212]: Lorem + [619, 1212]: Ipsum + [667, 1212]: passages, + [744, 1212]: and + [492, 1229]: more + [533, 1229]: recently + [593, 1229]: with + [626, 1229]: desktop + [687, 1229]: publishing + [492, 1245]: software + [557, 1245]: like Text: rgb(0,0,0) normal normal 400 16px Arial - [723, 1277]: including - [492, 1295]: versions - [556, 1295]: of - [574, 1295]: Lorem - [624, 1295]: Ipsum. -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + [723, 1245]: including + [492, 1262]: versions + [556, 1262]: of + [574, 1262]: Lorem + [624, 1262]: Ipsum. +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 400 16px Arial solid rgb(0,0,0) underline - [492, 989]: position:relative - [603, 989]: - [608, 989]: within - [648, 989]: - [653, 989]: a - [662, 989]: - [666, 989]: overflow:hidden - [778, 989]: - [492, 1007]: element -Clip: Path (BezierCurve(x0: 486, y0: 410, x1: 636, y1: 360, cx0: 486, cy0: 382, cx1: 553, cy1: 360) > BezierCurve(x0: 636, y0: 360, x1: 786, y1: 410, cx0: 719, cy0: 360, cx1: 786, cy1: 382) > BezierCurve(x0: 786, y0: 410, x1: 636, y1: 460, cx0: 786, cy0: 437, cx1: 719, cy1: 460) > BezierCurve(x0: 636, y0: 460, x1: 486, y1: 410, cx0: 553, cy0: 460, cx1: 486, cy1: 437)) + [492, 977]: position:relative + [603, 977]: + [608, 977]: within + [648, 977]: + [653, 977]: a + [662, 977]: + [666, 977]: overflow:hidden + [778, 976]: + [492, 993]: element +Clip: Path (BezierCurve(x0: 486, y0: 416, x1: 636, y1: 366, cx0: 486, cy0: 388, cx1: 553, cy1: 366) > BezierCurve(x0: 636, y0: 366, x1: 786, y1: 416, cx0: 719, cy0: 366, cx1: 786, cy1: 388) > BezierCurve(x0: 786, y0: 416, x1: 636, y1: 466, cx0: 786, cy0: 444, cx1: 719, cy1: 466) > BezierCurve(x0: 636, y0: 466, x1: 486, y1: 416, cx0: 553, cy0: 466, cx1: 486, cy1: 444)) Text: rgb(0,0,0) normal normal 700 16px Arial - [585, 1277]: Aldus - [634, 1277]: PageMaker -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) - Clip: Path (Vector(x: 14, y: 983) > Vector(x: 326, y: 983) > Vector(x: 326, y: 1195) > Vector(x: 14, y: 1195)) + [585, 1245]: Aldus + [634, 1245]: PageMaker +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) + Clip: Path (Vector(x: 14, y: 971) > Vector(x: 326, y: 971) > Vector(x: 326, y: 1183) > Vector(x: 14, y: 1183)) Fill: rgb(204,204,204) - Shape: rgb(0,0,0) Path (Vector(x: 14, y: 983) > Vector(x: 326, y: 983) > Vector(x: 320, y: 989) > Vector(x: 20, y: 989)) - Shape: rgb(0,0,0) Path (Vector(x: 326, y: 983) > Vector(x: 326, y: 1195) > Vector(x: 320, y: 1189) > Vector(x: 320, y: 989)) - Shape: rgb(0,0,0) Path (Vector(x: 326, y: 1195) > Vector(x: 14, y: 1195) > Vector(x: 20, y: 1189) > Vector(x: 320, y: 1189)) - Shape: rgb(0,0,0) Path (Vector(x: 14, y: 1195) > Vector(x: 14, y: 983) > Vector(x: 20, y: 989) > Vector(x: 20, y: 1189)) -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 971) > Vector(x: 326, y: 971) > Vector(x: 320, y: 977) > Vector(x: 20, y: 977)) + Shape: rgb(0,0,0) Path (Vector(x: 326, y: 971) > Vector(x: 326, y: 1183) > Vector(x: 320, y: 1177) > Vector(x: 320, y: 977)) + Shape: rgb(0,0,0) Path (Vector(x: 326, y: 1183) > Vector(x: 14, y: 1183) > Vector(x: 20, y: 1177) > Vector(x: 320, y: 1177)) + Shape: rgb(0,0,0) Path (Vector(x: 14, y: 1183) > Vector(x: 14, y: 971) > Vector(x: 20, y: 977) > Vector(x: 20, y: 1177)) +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 400 16px Arial - [20, 1043]: Lorem - [70, 1043]: Ipsum - [118, 1043]: is - [134, 1043]: simply - [184, 1043]: dummy - [240, 1043]: text - [271, 1043]: of - [288, 1043]: the - [20, 1061]: printing - [77, 1061]: and - [108, 1061]: typesetting - [190, 1061]: industry. - [254, 1061]: Lorem - [20, 1079]: Ipsum - [68, 1079]: has - [98, 1079]: been - [138, 1079]: the - [165, 1079]: industry's - [236, 1079]: standard - [20, 1097]: dummy - [77, 1097]: text - [107, 1097]: ever - [143, 1097]: since - [184, 1097]: the - [211, 1097]: 1500s, - [264, 1097]: when - [20, 1115]: an - [42, 1115]: unknown - [111, 1115]: printer - [160, 1115]: took - [195, 1115]: a - [208, 1115]: galley - [255, 1115]: of - [273, 1115]: type - [20, 1133]: and - [51, 1133]: scrambled - [129, 1133]: it - [142, 1133]: to - [160, 1133]: make - [203, 1133]: a - [216, 1133]: type - [251, 1133]: specimen - [20, 1151]: book. - [64, 1151]: It - [77, 1151]: has - [107, 1151]: survived - [171, 1151]: not - [198, 1151]: only - [232, 1151]: five - [20, 1169]: centuries, - [94, 1169]: but - [120, 1169]: also - [154, 1169]: the - [181, 1169]: leap - [216, 1169]: into - [246, 1169]: electronic - [20, 1187]: typesetting, - [106, 1187]: remaining - [181, 1187]: essentially - [20, 1205]: unchanged. - [108, 1205]: It - [122, 1205]: was - [154, 1205]: popularised - [242, 1205]: in - [258, 1205]: the - [20, 1223]: 1960s - [68, 1223]: with - [101, 1223]: the - [128, 1223]: release - [184, 1223]: of - [202, 1223]: Letraset - [264, 1223]: sheets - [20, 1241]: containing - [97, 1241]: Lorem - [147, 1241]: Ipsum - [195, 1241]: passages, - [272, 1241]: and - [20, 1259]: more - [61, 1259]: recently - [121, 1259]: with - [154, 1259]: desktop - [215, 1259]: publishing - [20, 1277]: software - [85, 1277]: like + [20, 1027]: Lorem + [70, 1027]: Ipsum + [118, 1027]: is + [134, 1027]: simply + [184, 1027]: dummy + [240, 1027]: text + [271, 1027]: of + [288, 1027]: the + [20, 1044]: printing + [77, 1044]: and + [108, 1044]: typesetting + [190, 1044]: industry. + [254, 1044]: Lorem + [20, 1061]: Ipsum + [68, 1061]: has + [98, 1061]: been + [138, 1061]: the + [165, 1061]: industry's + [236, 1061]: standard + [20, 1077]: dummy + [77, 1077]: text + [107, 1077]: ever + [143, 1077]: since + [184, 1077]: the + [211, 1077]: 1500s, + [264, 1077]: when + [20, 1094]: an + [42, 1094]: unknown + [111, 1094]: printer + [160, 1094]: took + [195, 1094]: a + [208, 1094]: galley + [255, 1094]: of + [273, 1094]: type + [20, 1111]: and + [51, 1111]: scrambled + [129, 1111]: it + [142, 1111]: to + [160, 1111]: make + [203, 1111]: a + [216, 1111]: type + [251, 1111]: specimen + [20, 1128]: book. + [64, 1128]: It + [77, 1128]: has + [107, 1128]: survived + [171, 1128]: not + [198, 1128]: only + [232, 1128]: five + [20, 1145]: centuries, + [94, 1145]: but + [120, 1145]: also + [154, 1145]: the + [181, 1145]: leap + [216, 1145]: into + [246, 1145]: electronic + [20, 1161]: typesetting, + [106, 1161]: remaining + [181, 1161]: essentially + [20, 1178]: unchanged. + [108, 1178]: It + [122, 1178]: was + [154, 1178]: popularised + [242, 1178]: in + [258, 1178]: the + [20, 1195]: 1960s + [68, 1195]: with + [101, 1195]: the + [128, 1195]: release + [184, 1195]: of + [202, 1195]: Letraset + [264, 1195]: sheets + [20, 1212]: containing + [97, 1212]: Lorem + [147, 1212]: Ipsum + [195, 1212]: passages, + [272, 1212]: and + [20, 1229]: more + [61, 1229]: recently + [121, 1229]: with + [154, 1229]: desktop + [215, 1229]: publishing + [20, 1245]: software + [85, 1245]: like Text: rgb(0,0,0) normal normal 400 16px Arial - [251, 1277]: including - [20, 1295]: versions - [84, 1295]: of - [102, 1295]: Lorem - [152, 1295]: Ipsum. -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + [251, 1245]: including + [20, 1262]: versions + [84, 1262]: of + [102, 1262]: Lorem + [152, 1262]: Ipsum. +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 400 16px Arial solid rgb(0,0,0) underline - [20, 989]: position:relative - [131, 989]: - [136, 989]: within - [176, 989]: - [181, 989]: a - [190, 989]: - [194, 989]: overflow:hidden - [306, 989]: - [20, 1007]: element -Clip: Path (Vector(x: 14, y: 360) > Vector(x: 314, y: 360) > Vector(x: 314, y: 560) > Vector(x: 14, y: 560)) + [20, 977]: position:relative + [131, 977]: + [136, 977]: within + [176, 977]: + [181, 977]: a + [190, 977]: + [194, 977]: overflow:hidden + [306, 976]: + [20, 993]: element +Clip: Path (Vector(x: 14, y: 366) > Vector(x: 314, y: 366) > Vector(x: 314, y: 566) > Vector(x: 14, y: 566)) Text: rgb(0,0,0) normal normal 700 16px Arial - [113, 1277]: Aldus - [162, 1277]: PageMaker \ No newline at end of file + [113, 1245]: Aldus + [162, 1245]: PageMaker \ No newline at end of file diff --git a/tests/reftests/text/chinese.html b/tests/reftests/text/chinese.html index 8b56736ff..1852ec674 100644 --- a/tests/reftests/text/chinese.html +++ b/tests/reftests/text/chinese.html @@ -7,7 +7,7 @@ diff --git a/tests/reftests/text/text.txt b/tests/reftests/text/text.txt index b671a6f9e..46b4a4bd5 100644 --- a/tests/reftests/text/text.txt +++ b/tests/reftests/text/text.txt @@ -1,266 +1,266 @@ -Window: [800, 1231] -Rectangle: [0, 0, 800, 1231] rgba(0,0,0,0) +Window: [800, 1046] +Rectangle: [0, 0, 800, 1046] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 700 32px Times New Roman - [8, 22]:

      - [86, 22]: text - [138, 22]: - - [148, 22]: decoration -Text: rgb(0,0,0) normal normal 700 24px Times New Roman - [8, 889]:

      - [67, 889]: text - [105, 889]: - - [113, 889]: transform -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 936]: text - [72, 936]: - - [77, 936]: transform:none; -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 955]: Text - [76, 955]: - - [82, 955]: Transform: - [157, 955]: Capitalize; - [230, 955]: (Including - [301, 955]: Foreign - [355, 955]: Characters - [427, 955]: Such - [463, 955]: As - [485, 955]: Öaäå) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 974]: TEXT - [88, 974]: - - [93, 974]: TRANSFORM:UPPERCASE; -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 992]: text - [72, 992]: - - [77, 992]: transform:lowercase; -Text: rgb(0,0,0) normal normal 700 18.72px Times New Roman - [8, 1030]:

      - [54, 1030]: misc - [95, 1030]: text - [130, 1030]: alignments -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 1070]: word - [81, 1070]: - - [86, 1070]: spacing:5px; - [177, 1070]: (as - [205, 1070]: each - [243, 1070]: letter - [285, 1070]: is - [304, 1070]: rendered - [370, 1070]: individually, - [459, 1070]: the - [487, 1070]: bounds - [542, 1070]: will - [576, 1070]: always - [630, 1070]: be - [654, 1070]: correct) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 1097]: line - [72, 1097]: - - [77, 1097]: height:35px; -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 1132]: (same - [90, 1132]: goes - [124, 1132]: for - [146, 1132]: line - [170, 1132]: - - [176, 1132]: height) -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [48, 1159]: l - [58, 1159]: e - [70, 1159]: t - [79, 1159]: t - [88, 1159]: e - [100, 1159]: r - [110, 1159]: - - [121, 1159]: s - [132, 1159]: p - [145, 1159]: a - [157, 1159]: c - [169, 1159]: i - [179, 1159]: n - [192, 1159]: g - [205, 1159]: : - [214, 1159]: 5 - [227, 1159]: p - [240, 1159]: x - [253, 1159]: ; -Text: rgb(0,0,0) normal normal 400 16px Times New Roman - [162, 1178]: text - [186, 1178]: - - [192, 1178]: align:right;width:300px; -Text: rgb(0,0,0) normal small-caps 400 16px Times New Roman - [48, 1196]: font - [79, 1196]: - - [84, 1196]: variant:small - [180, 1196]: - - [186, 1196]: caps; +Text: rgb(0,0,0) normal normal 700 36px Arial + [8, 20]:

      + [102, 20]: text + [166, 20]: - + [178, 20]: decoration Text: rgb(0,0,0) normal normal 700 24px Arial - [8, 100]: Arial + [8, 722]:

      + [71, 722]: text + [113, 722]: - + [121, 722]: transform +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 768]: text + [74, 768]: - + [79, 768]: transform:none; +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 786]: Text + [77, 786]: - + [83, 786]: Transform: + [164, 786]: Capitalize; + [243, 786]: (Including + [317, 786]: Foreign + [376, 786]: Characters + [458, 786]: Such + [499, 786]: As + [522, 786]: Öaäå) +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 804]: TEXT + [88, 804]: - + [93, 804]: TRANSFORM:UPPERCASE; +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 822]: text + [74, 822]: - + [79, 822]: transform:lowercase; +Text: rgb(0,0,0) normal normal 700 16px Arial + [8, 855]:

      + [50, 855]: misc + [91, 855]: text + [124, 855]: alignments +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 888]: word + [83, 888]: - + [88, 888]: spacing:5px; + [187, 888]: (as + [219, 888]: each + [263, 888]: letter + [308, 888]: is + [329, 888]: rendered + [403, 888]: individually, + [494, 888]: the + [525, 888]: bounds + [587, 888]: will + [619, 888]: always + [677, 888]: be + [704, 888]: correct) +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 914]: line + [73, 914]: - + [78, 914]: height:35px; +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 949]: (same + [97, 949]: goes + [136, 949]: for + [159, 949]: line + [184, 949]: - + [189, 949]: height) +Text: rgb(0,0,0) normal normal 400 16px Arial + [48, 975]: l + [56, 975]: e + [70, 975]: t + [80, 975]: t + [89, 975]: e + [103, 975]: r + [114, 975]: - + [124, 975]: s + [137, 975]: p + [151, 975]: a + [165, 975]: c + [178, 975]: i + [186, 975]: n + [200, 975]: g + [214, 975]: : + [224, 975]: 5 + [237, 975]: p + [251, 975]: x + [264, 975]: ; +Text: rgb(0,0,0) normal normal 400 16px Arial + [153, 993]: text + [179, 993]: - + [184, 993]: align:right;width:300px; +Text: rgb(0,0,0) normal small-caps 400 16px Arial + [48, 1011]: font + [84, 1011]: - + [89, 1011]: variant:small + [194, 1011]: - + [200, 1011]: caps; +Text: rgb(0,0,0) normal normal 700 24px Arial + [8, 99]: Arial Text: rgb(0,0,0) normal normal 400 14px Arial - [48, 147]: text - [70, 147]: - - [75, 147]: decoration:none; + [48, 140]: text + [70, 140]: - + [75, 140]: decoration:none; Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) underline - [48, 163]: text - [70, 163]: - - [75, 163]: decoration:underline; + [48, 148]: text + [70, 148]: - + [75, 148]: decoration:underline; Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) overline - [48, 179]: text - [70, 179]: - - [75, 179]: decoration:overline; + [48, 156]: text + [70, 156]: - + [75, 156]: decoration:overline; Text: rgb(0,0,0) normal normal 400 14px Arial solid rgb(0,0,0) line-through - [48, 195]: text - [70, 195]: - - [75, 195]: decoration:line - [166, 195]: - - [171, 195]: through; + [48, 164]: text + [70, 164]: - + [75, 164]: decoration:line + [166, 164]: - + [171, 164]: through; Text: rgb(0,0,0) normal normal 400 18px Arial - [48, 229]: text - [77, 229]: - - [83, 229]: decoration:none; + [48, 192]: text + [77, 192]: - + [83, 192]: decoration:none; Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) underline - [48, 250]: text - [77, 250]: - - [83, 250]: decoration:underline; + [48, 208]: text + [77, 208]: - + [83, 208]: decoration:underline; Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) overline - [48, 270]: text - [77, 270]: - - [83, 270]: decoration:overline; + [48, 224]: text + [77, 224]: - + [83, 224]: decoration:overline; Text: rgb(0,0,0) normal normal 400 18px Arial solid rgb(0,0,0) line-through - [48, 291]: text - [77, 291]: - - [83, 291]: decoration:line - [200, 291]: - - [206, 291]: through; + [48, 240]: text + [77, 240]: - + [83, 240]: decoration:line + [200, 240]: - + [206, 240]: through; Text: rgb(0,0,0) normal normal 400 24px Arial - [48, 336]: text - [87, 336]: - - [95, 336]: decoration:none; + [48, 280]: text + [87, 280]: - + [95, 280]: decoration:none; Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) underline - [48, 364]: text - [87, 364]: - - [95, 364]: decoration:underline; + [48, 304]: text + [87, 304]: - + [95, 304]: decoration:underline; Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) overline - [48, 392]: text - [87, 392]: - - [95, 392]: decoration:overline; + [48, 328]: text + [87, 328]: - + [95, 328]: decoration:overline; Text: rgb(0,0,0) normal normal 400 24px Arial solid rgb(0,0,0) line-through - [48, 419]: text - [87, 419]: - - [95, 419]: decoration:line - [251, 419]: - - [259, 419]: through; + [48, 352]: text + [87, 352]: - + [95, 352]: decoration:line + [251, 352]: - + [259, 352]: through; Text: rgb(0,0,0) normal normal 700 24px Verdana - [347, 99]: Verdana + [347, 97]: Verdana Text: rgb(0,0,0) normal normal 400 14px Verdana + [387, 140]: text + [414, 140]: - + [420, 140]: decoration:none; +Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) underline [387, 148]: text [414, 148]: - - [420, 148]: decoration:none; -Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) underline - [387, 165]: text - [414, 165]: - - [420, 165]: decoration:underline; + [420, 148]: decoration:underline; Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) overline - [387, 182]: text - [414, 182]: - - [420, 182]: decoration:overline; + [387, 156]: text + [414, 156]: - + [420, 156]: decoration:overline; Text: rgb(0,0,0) normal normal 400 14px Verdana solid rgb(0,0,0) line-through - [387, 199]: text - [414, 199]: - - [420, 199]: decoration:line - [526, 199]: - - [532, 199]: through; + [387, 164]: text + [414, 164]: - + [420, 164]: decoration:line + [526, 164]: - + [532, 164]: through; Text: rgb(0,0,0) normal normal 400 18px Verdana - [387, 234]: text - [422, 234]: - - [430, 234]: decoration:none; + [387, 191]: text + [422, 191]: - + [430, 191]: decoration:none; Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) underline - [387, 255]: text - [422, 255]: - - [430, 255]: decoration:underline; + [387, 207]: text + [422, 207]: - + [430, 207]: decoration:underline; Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) overline - [387, 277]: text - [422, 277]: - - [430, 277]: decoration:overline; + [387, 223]: text + [422, 223]: - + [430, 223]: decoration:overline; Text: rgb(0,0,0) normal normal 400 18px Verdana solid rgb(0,0,0) line-through - [387, 298]: text - [422, 298]: - - [430, 298]: decoration:line - [565, 298]: - - [573, 298]: through; + [387, 239]: text + [422, 239]: - + [430, 239]: decoration:line + [565, 239]: - + [573, 239]: through; Text: rgb(0,0,0) normal normal 400 24px Verdana - [387, 344]: text - [434, 344]: - - [445, 344]: decoration:none; + [387, 279]: text + [434, 279]: - + [445, 279]: decoration:none; Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) underline - [387, 373]: text - [434, 373]: - - [445, 373]: decoration:underline; + [387, 303]: text + [434, 303]: - + [445, 303]: decoration:underline; Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) overline - [387, 402]: text - [434, 402]: - - [445, 402]: decoration:overline; + [387, 327]: text + [434, 327]: - + [445, 327]: decoration:overline; Text: rgb(0,0,0) normal normal 400 24px Verdana solid rgb(0,0,0) line-through - [387, 432]: text - [434, 432]: - - [445, 432]: decoration:line - [624, 432]: - - [636, 432]: through; + [387, 351]: text + [434, 351]: - + [445, 351]: decoration:line + [624, 351]: - + [636, 351]: through; Text: rgb(0,0,0) normal normal 700 24px Tahoma - [8, 505]: Tahoma + [8, 420]: Tahoma Text: rgb(0,0,0) normal normal 400 14px Tahoma - [48, 553]: text - [72, 553]: - - [77, 553]: decoration:none; + [48, 462]: text + [72, 462]: - + [77, 462]: decoration:none; Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) underline - [48, 570]: text - [72, 570]: - - [77, 570]: decoration:underline; + [48, 470]: text + [72, 470]: - + [77, 470]: decoration:underline; Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) overline - [48, 587]: text - [72, 587]: - - [77, 587]: decoration:overline; + [48, 478]: text + [72, 478]: - + [77, 478]: decoration:overline; Text: rgb(0,0,0) normal normal 400 14px Tahoma solid rgb(0,0,0) line-through - [48, 604]: text - [72, 604]: - - [77, 604]: decoration:line - [168, 604]: - - [173, 604]: through; + [48, 486]: text + [72, 486]: - + [77, 486]: decoration:line + [168, 486]: - + [173, 486]: through; Text: rgb(0,0,0) normal normal 400 18px Tahoma - [48, 639]: text - [78, 639]: - - [85, 639]: decoration:none; + [48, 513]: text + [78, 513]: - + [85, 513]: decoration:none; Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) underline - [48, 660]: text - [78, 660]: - - [85, 660]: decoration:underline; + [48, 529]: text + [78, 529]: - + [85, 529]: decoration:underline; Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) overline - [48, 682]: text - [78, 682]: - - [85, 682]: decoration:overline; + [48, 545]: text + [78, 545]: - + [85, 545]: decoration:overline; Text: rgb(0,0,0) normal normal 400 18px Tahoma solid rgb(0,0,0) line-through - [48, 703]: text - [78, 703]: - - [85, 703]: decoration:line - [202, 703]: - - [209, 703]: through; + [48, 561]: text + [78, 561]: - + [85, 561]: decoration:line + [202, 561]: - + [209, 561]: through; Text: rgb(0,0,0) normal normal 400 24px Tahoma - [48, 749]: text - [88, 749]: - - [97, 749]: decoration:none; + [48, 602]: text + [88, 602]: - + [97, 602]: decoration:none; Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) underline - [48, 778]: text - [88, 778]: - - [97, 778]: decoration:underline; + [48, 626]: text + [88, 626]: - + [97, 626]: decoration:underline; Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) overline - [48, 807]: text - [88, 807]: - - [97, 807]: decoration:overline; + [48, 650]: text + [88, 650]: - + [97, 650]: decoration:overline; Text: rgb(0,0,0) normal normal 400 24px Tahoma solid rgb(0,0,0) line-through - [48, 835]: text - [88, 835]: - - [97, 835]: decoration:line - [254, 835]: - - [263, 835]: through; \ No newline at end of file + [48, 674]: text + [88, 674]: - + [97, 674]: decoration:line + [254, 674]: - + [263, 674]: through; \ No newline at end of file diff --git a/tests/reftests/text/underline-lineheight.html b/tests/reftests/text/underline-lineheight.html index b556b9c91..e5b373e02 100644 --- a/tests/reftests/text/underline-lineheight.html +++ b/tests/reftests/text/underline-lineheight.html @@ -10,7 +10,7 @@ $.each(['arial','verdana','tahoma','courier new'],function(i,e){ var div = $('
      ').css('font-family',e).appendTo('body'); for(var i=0;i<=10;i++){ - $('
      ').text('Testing texts').css('margin-top',1).css('border','1px solid black').css('font-size',(16+i*6)).appendTo(div); + $('
      ').text('Testing texts').css('margin-top',1).css('font-size',(16+i*6)).appendTo(div); } }); diff --git a/tests/reftests/text/underline-lineheight.txt b/tests/reftests/text/underline-lineheight.txt index f71f1d528..ec43f43c2 100644 --- a/tests/reftests/text/underline-lineheight.txt +++ b/tests/reftests/text/underline-lineheight.txt @@ -1,355 +1,179 @@ -Window: [800, 1921] -Rectangle: [0, 0, 800, 1921] rgba(0,0,0,0) +Window: [800, 1834] +Rectangle: [0, 0, 800, 1834] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 50) > Vector(x: 791, y: 49) > Vector(x: 791, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 50) > Vector(x: 8, y: 50) > Vector(x: 9, y: 49) > Vector(x: 791, y: 49)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 50) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 49)) Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(0,0,0) underline - [9, 20]: Testing - [60, 20]: - [64, 20]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 51) > Vector(x: 792, y: 51) > Vector(x: 791, y: 52) > Vector(x: 9, y: 52)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 51) > Vector(x: 792, y: 93) > Vector(x: 791, y: 92) > Vector(x: 791, y: 52)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 8, y: 93) > Vector(x: 9, y: 92) > Vector(x: 791, y: 92)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 8, y: 51) > Vector(x: 9, y: 52) > Vector(x: 9, y: 92)) + [8, 19]: Testing + [59, 19]: + [63, 19]: texts Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(0,0,0) underline - [9, 60]: Testing - [79, 60]: - [85, 60]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 94) > Vector(x: 792, y: 94) > Vector(x: 791, y: 95) > Vector(x: 9, y: 95)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 94) > Vector(x: 792, y: 136) > Vector(x: 791, y: 135) > Vector(x: 791, y: 95)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 136) > Vector(x: 8, y: 136) > Vector(x: 9, y: 135) > Vector(x: 791, y: 135)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 136) > Vector(x: 8, y: 94) > Vector(x: 9, y: 95) > Vector(x: 9, y: 135)) + [8, 57]: Testing + [78, 57]: + [84, 57]: texts Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(0,0,0) underline - [9, 100]: Testing - [98, 100]: - [106, 100]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 137) > Vector(x: 792, y: 137) > Vector(x: 791, y: 138) > Vector(x: 9, y: 138)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 137) > Vector(x: 792, y: 179) > Vector(x: 791, y: 178) > Vector(x: 791, y: 138)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 179) > Vector(x: 8, y: 179) > Vector(x: 9, y: 178) > Vector(x: 791, y: 178)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 179) > Vector(x: 8, y: 137) > Vector(x: 9, y: 138) > Vector(x: 9, y: 178)) + [8, 94]: Testing + [97, 94]: + [104, 94]: texts Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(0,0,0) underline - [9, 139]: Testing - [117, 139]: - [126, 139]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 180) > Vector(x: 792, y: 180) > Vector(x: 791, y: 181) > Vector(x: 9, y: 181)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 180) > Vector(x: 792, y: 222) > Vector(x: 791, y: 221) > Vector(x: 791, y: 181)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 222) > Vector(x: 8, y: 222) > Vector(x: 9, y: 221) > Vector(x: 791, y: 221)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 222) > Vector(x: 8, y: 180) > Vector(x: 9, y: 181) > Vector(x: 9, y: 221)) + [8, 132]: Testing + [116, 132]: + [125, 132]: texts Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(0,0,0) underline - [9, 179]: Testing - [136, 179]: - [147, 179]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 223) > Vector(x: 792, y: 223) > Vector(x: 791, y: 224) > Vector(x: 9, y: 224)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 223) > Vector(x: 792, y: 265) > Vector(x: 791, y: 264) > Vector(x: 791, y: 224)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 265) > Vector(x: 8, y: 265) > Vector(x: 9, y: 264) > Vector(x: 791, y: 264)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 265) > Vector(x: 8, y: 223) > Vector(x: 9, y: 224) > Vector(x: 9, y: 264)) + [8, 170]: Testing + [135, 170]: + [146, 170]: texts Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(0,0,0) underline - [9, 219]: Testing - [155, 219]: - [168, 219]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 266) > Vector(x: 792, y: 266) > Vector(x: 791, y: 267) > Vector(x: 9, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 266) > Vector(x: 792, y: 308) > Vector(x: 791, y: 307) > Vector(x: 791, y: 267)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 308) > Vector(x: 8, y: 308) > Vector(x: 9, y: 307) > Vector(x: 791, y: 307)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 308) > Vector(x: 8, y: 266) > Vector(x: 9, y: 267) > Vector(x: 9, y: 307)) + [8, 207]: Testing + [154, 207]: + [166, 207]: texts Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(0,0,0) underline - [9, 258]: Testing - [174, 258]: - [188, 258]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 309) > Vector(x: 792, y: 309) > Vector(x: 791, y: 310) > Vector(x: 9, y: 310)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 309) > Vector(x: 792, y: 351) > Vector(x: 791, y: 350) > Vector(x: 791, y: 310)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 351) > Vector(x: 8, y: 351) > Vector(x: 9, y: 350) > Vector(x: 791, y: 350)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 351) > Vector(x: 8, y: 309) > Vector(x: 9, y: 310) > Vector(x: 9, y: 350)) + [8, 245]: Testing + [173, 245]: + [187, 245]: texts Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(0,0,0) underline - [9, 298]: Testing - [193, 298]: - [209, 298]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 352) > Vector(x: 792, y: 352) > Vector(x: 791, y: 353) > Vector(x: 9, y: 353)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 352) > Vector(x: 792, y: 394) > Vector(x: 791, y: 393) > Vector(x: 791, y: 353)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 394) > Vector(x: 8, y: 394) > Vector(x: 9, y: 393) > Vector(x: 791, y: 393)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 394) > Vector(x: 8, y: 352) > Vector(x: 9, y: 353) > Vector(x: 9, y: 393)) + [8, 283]: Testing + [192, 283]: + [208, 283]: texts Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(0,0,0) underline - [9, 337]: Testing - [212, 337]: - [230, 337]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 395) > Vector(x: 792, y: 395) > Vector(x: 791, y: 396) > Vector(x: 9, y: 396)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 395) > Vector(x: 792, y: 437) > Vector(x: 791, y: 436) > Vector(x: 791, y: 396)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 437) > Vector(x: 8, y: 437) > Vector(x: 9, y: 436) > Vector(x: 791, y: 436)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 437) > Vector(x: 8, y: 395) > Vector(x: 9, y: 396) > Vector(x: 9, y: 436)) + [8, 320]: Testing + [211, 320]: + [228, 320]: texts Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(0,0,0) underline - [9, 377]: Testing - [231, 377]: - [250, 377]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 438) > Vector(x: 792, y: 438) > Vector(x: 791, y: 439) > Vector(x: 9, y: 439)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 438) > Vector(x: 792, y: 480) > Vector(x: 791, y: 479) > Vector(x: 791, y: 439)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 480) > Vector(x: 8, y: 480) > Vector(x: 9, y: 479) > Vector(x: 791, y: 479)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 480) > Vector(x: 8, y: 438) > Vector(x: 9, y: 439) > Vector(x: 9, y: 479)) + [8, 358]: Testing + [230, 358]: + [249, 358]: texts Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(0,0,0) underline - [9, 417]: Testing - [250, 417]: - [271, 417]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 481) > Vector(x: 792, y: 481) > Vector(x: 791, y: 482) > Vector(x: 9, y: 482)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 481) > Vector(x: 792, y: 523) > Vector(x: 791, y: 522) > Vector(x: 791, y: 482)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 523) > Vector(x: 8, y: 523) > Vector(x: 9, y: 522) > Vector(x: 791, y: 522)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 523) > Vector(x: 8, y: 481) > Vector(x: 9, y: 482) > Vector(x: 9, y: 522)) + [8, 396]: Testing + [249, 396]: + [270, 396]: texts Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(0,0,0) underline - [9, 493]: Testing - [66, 493]: - [72, 493]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 524) > Vector(x: 792, y: 524) > Vector(x: 791, y: 525) > Vector(x: 9, y: 525)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 524) > Vector(x: 792, y: 566) > Vector(x: 791, y: 565) > Vector(x: 791, y: 525)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 566) > Vector(x: 8, y: 566) > Vector(x: 9, y: 565) > Vector(x: 791, y: 565)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 566) > Vector(x: 8, y: 524) > Vector(x: 9, y: 525) > Vector(x: 9, y: 565)) + [8, 469]: Testing + [65, 469]: + [70, 469]: texts Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(0,0,0) underline - [9, 532]: Testing - [87, 532]: - [95, 532]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 567) > Vector(x: 792, y: 567) > Vector(x: 791, y: 568) > Vector(x: 9, y: 568)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 567) > Vector(x: 792, y: 609) > Vector(x: 791, y: 608) > Vector(x: 791, y: 568)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 609) > Vector(x: 8, y: 609) > Vector(x: 9, y: 608) > Vector(x: 791, y: 608)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 609) > Vector(x: 8, y: 567) > Vector(x: 9, y: 568) > Vector(x: 9, y: 608)) + [8, 506]: Testing + [86, 506]: + [94, 506]: texts Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(0,0,0) underline - [9, 571]: Testing - [108, 571]: - [118, 571]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 610) > Vector(x: 792, y: 610) > Vector(x: 791, y: 611) > Vector(x: 9, y: 611)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 610) > Vector(x: 792, y: 652) > Vector(x: 791, y: 651) > Vector(x: 791, y: 611)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 652) > Vector(x: 8, y: 652) > Vector(x: 9, y: 651) > Vector(x: 791, y: 651)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 652) > Vector(x: 8, y: 610) > Vector(x: 9, y: 611) > Vector(x: 9, y: 651)) + [8, 544]: Testing + [107, 544]: + [117, 544]: texts Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(0,0,0) underline - [9, 610]: Testing - [130, 610]: - [142, 610]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 653) > Vector(x: 792, y: 653) > Vector(x: 791, y: 654) > Vector(x: 9, y: 654)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 653) > Vector(x: 792, y: 695) > Vector(x: 791, y: 694) > Vector(x: 791, y: 654)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 695) > Vector(x: 8, y: 695) > Vector(x: 9, y: 694) > Vector(x: 791, y: 694)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 695) > Vector(x: 8, y: 653) > Vector(x: 9, y: 654) > Vector(x: 9, y: 694)) + [8, 581]: Testing + [129, 581]: + [141, 581]: texts Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(0,0,0) underline - [9, 650]: Testing - [151, 650]: - [165, 650]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 696) > Vector(x: 792, y: 696) > Vector(x: 791, y: 697) > Vector(x: 9, y: 697)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 696) > Vector(x: 792, y: 738) > Vector(x: 791, y: 737) > Vector(x: 791, y: 697)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 738) > Vector(x: 8, y: 738) > Vector(x: 9, y: 737) > Vector(x: 791, y: 737)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 738) > Vector(x: 8, y: 696) > Vector(x: 9, y: 697) > Vector(x: 9, y: 737)) + [8, 619]: Testing + [150, 619]: + [164, 619]: texts Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(0,0,0) underline - [9, 689]: Testing - [172, 689]: - [188, 689]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 739) > Vector(x: 792, y: 739) > Vector(x: 791, y: 740) > Vector(x: 9, y: 740)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 739) > Vector(x: 792, y: 781) > Vector(x: 791, y: 780) > Vector(x: 791, y: 740)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 781) > Vector(x: 8, y: 781) > Vector(x: 9, y: 780) > Vector(x: 791, y: 780)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 781) > Vector(x: 8, y: 739) > Vector(x: 9, y: 740) > Vector(x: 9, y: 780)) + [8, 656]: Testing + [171, 656]: + [188, 656]: texts Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(0,0,0) underline - [9, 729]: Testing - [194, 729]: - [212, 729]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 782) > Vector(x: 792, y: 782) > Vector(x: 791, y: 783) > Vector(x: 9, y: 783)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 782) > Vector(x: 792, y: 824) > Vector(x: 791, y: 823) > Vector(x: 791, y: 783)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 824) > Vector(x: 8, y: 824) > Vector(x: 9, y: 823) > Vector(x: 791, y: 823)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 824) > Vector(x: 8, y: 782) > Vector(x: 9, y: 783) > Vector(x: 9, y: 823)) + [8, 693]: Testing + [192, 693]: + [211, 693]: texts Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(0,0,0) underline - [9, 768]: Testing - [215, 768]: - [235, 768]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 825) > Vector(x: 792, y: 825) > Vector(x: 791, y: 826) > Vector(x: 9, y: 826)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 825) > Vector(x: 792, y: 867) > Vector(x: 791, y: 866) > Vector(x: 791, y: 826)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 8, y: 867) > Vector(x: 9, y: 866) > Vector(x: 791, y: 866)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 8, y: 825) > Vector(x: 9, y: 826) > Vector(x: 9, y: 866)) + [8, 731]: Testing + [214, 731]: + [234, 731]: texts Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(0,0,0) underline - [9, 807]: Testing - [236, 807]: - [259, 807]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 868) > Vector(x: 792, y: 868) > Vector(x: 791, y: 869) > Vector(x: 9, y: 869)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 868) > Vector(x: 792, y: 910) > Vector(x: 791, y: 909) > Vector(x: 791, y: 869)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 910) > Vector(x: 8, y: 910) > Vector(x: 9, y: 909) > Vector(x: 791, y: 909)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 910) > Vector(x: 8, y: 868) > Vector(x: 9, y: 869) > Vector(x: 9, y: 909)) + [8, 768]: Testing + [235, 768]: + [258, 768]: texts Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(0,0,0) underline - [9, 846]: Testing - [258, 846]: - [282, 846]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 911) > Vector(x: 792, y: 911) > Vector(x: 791, y: 912) > Vector(x: 9, y: 912)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 911) > Vector(x: 792, y: 953) > Vector(x: 791, y: 952) > Vector(x: 791, y: 912)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 953) > Vector(x: 8, y: 953) > Vector(x: 9, y: 952) > Vector(x: 791, y: 952)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 953) > Vector(x: 8, y: 911) > Vector(x: 9, y: 912) > Vector(x: 9, y: 952)) + [8, 805]: Testing + [256, 805]: + [281, 805]: texts Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(0,0,0) underline - [9, 886]: Testing - [279, 886]: - [306, 886]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 954) > Vector(x: 792, y: 954) > Vector(x: 791, y: 955) > Vector(x: 9, y: 955)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 954) > Vector(x: 792, y: 996) > Vector(x: 791, y: 995) > Vector(x: 791, y: 955)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 996) > Vector(x: 8, y: 996) > Vector(x: 9, y: 995) > Vector(x: 791, y: 995)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 996) > Vector(x: 8, y: 954) > Vector(x: 9, y: 955) > Vector(x: 9, y: 995)) + [8, 843]: Testing + [278, 843]: + [304, 843]: texts Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(0,0,0) underline - [9, 966]: Testing - [61, 966]: - [66, 966]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 997) > Vector(x: 792, y: 997) > Vector(x: 791, y: 998) > Vector(x: 9, y: 998)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 997) > Vector(x: 792, y: 1039) > Vector(x: 791, y: 1038) > Vector(x: 791, y: 998)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1039) > Vector(x: 8, y: 1039) > Vector(x: 9, y: 1038) > Vector(x: 791, y: 1038)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1039) > Vector(x: 8, y: 997) > Vector(x: 9, y: 998) > Vector(x: 9, y: 1038)) + [8, 920]: Testing + [60, 920]: + [65, 920]: texts Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(0,0,0) underline - [9, 1005]: Testing - [80, 1005]: - [87, 1005]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1040) > Vector(x: 792, y: 1040) > Vector(x: 791, y: 1041) > Vector(x: 9, y: 1041)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1040) > Vector(x: 792, y: 1082) > Vector(x: 791, y: 1081) > Vector(x: 791, y: 1041)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1082) > Vector(x: 8, y: 1082) > Vector(x: 9, y: 1081) > Vector(x: 791, y: 1081)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1082) > Vector(x: 8, y: 1040) > Vector(x: 9, y: 1041) > Vector(x: 9, y: 1081)) + [8, 958]: Testing + [79, 958]: + [86, 958]: texts Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(0,0,0) underline - [9, 1044]: Testing - [100, 1044]: - [108, 1044]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1083) > Vector(x: 792, y: 1083) > Vector(x: 791, y: 1084) > Vector(x: 9, y: 1084)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1083) > Vector(x: 792, y: 1125) > Vector(x: 791, y: 1124) > Vector(x: 791, y: 1084)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1125) > Vector(x: 8, y: 1125) > Vector(x: 9, y: 1124) > Vector(x: 791, y: 1124)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1125) > Vector(x: 8, y: 1083) > Vector(x: 9, y: 1084) > Vector(x: 9, y: 1124)) + [8, 995]: Testing + [98, 995]: + [107, 995]: texts Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(0,0,0) underline - [9, 1083]: Testing - [119, 1083]: - [130, 1083]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1126) > Vector(x: 792, y: 1126) > Vector(x: 791, y: 1127) > Vector(x: 9, y: 1127)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1126) > Vector(x: 792, y: 1168) > Vector(x: 791, y: 1167) > Vector(x: 791, y: 1127)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1168) > Vector(x: 8, y: 1168) > Vector(x: 9, y: 1167) > Vector(x: 791, y: 1167)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1168) > Vector(x: 8, y: 1126) > Vector(x: 9, y: 1127) > Vector(x: 9, y: 1167)) + [8, 1032]: Testing + [118, 1032]: + [128, 1032]: texts Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(0,0,0) underline - [9, 1123]: Testing - [138, 1123]: - [151, 1123]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1169) > Vector(x: 792, y: 1169) > Vector(x: 791, y: 1170) > Vector(x: 9, y: 1170)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1169) > Vector(x: 792, y: 1211) > Vector(x: 791, y: 1210) > Vector(x: 791, y: 1170)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1211) > Vector(x: 8, y: 1211) > Vector(x: 9, y: 1210) > Vector(x: 791, y: 1210)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1211) > Vector(x: 8, y: 1169) > Vector(x: 9, y: 1170) > Vector(x: 9, y: 1210)) + [8, 1070]: Testing + [137, 1070]: + [150, 1070]: texts Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(0,0,0) underline - [9, 1162]: Testing - [158, 1162]: - [172, 1162]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1212) > Vector(x: 792, y: 1212) > Vector(x: 791, y: 1213) > Vector(x: 9, y: 1213)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1212) > Vector(x: 792, y: 1254) > Vector(x: 791, y: 1253) > Vector(x: 791, y: 1213)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1254) > Vector(x: 8, y: 1254) > Vector(x: 9, y: 1253) > Vector(x: 791, y: 1253)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1254) > Vector(x: 8, y: 1212) > Vector(x: 9, y: 1213) > Vector(x: 9, y: 1253)) + [8, 1107]: Testing + [156, 1107]: + [171, 1107]: texts Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(0,0,0) underline - [9, 1202]: Testing - [177, 1202]: - [193, 1202]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1255) > Vector(x: 792, y: 1255) > Vector(x: 791, y: 1256) > Vector(x: 9, y: 1256)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1255) > Vector(x: 792, y: 1297) > Vector(x: 791, y: 1296) > Vector(x: 791, y: 1256)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1297) > Vector(x: 8, y: 1297) > Vector(x: 9, y: 1296) > Vector(x: 791, y: 1296)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1297) > Vector(x: 8, y: 1255) > Vector(x: 9, y: 1256) > Vector(x: 9, y: 1296)) + [8, 1144]: Testing + [176, 1144]: + [192, 1144]: texts Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(0,0,0) underline - [9, 1241]: Testing - [196, 1241]: - [214, 1241]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1298) > Vector(x: 792, y: 1298) > Vector(x: 791, y: 1299) > Vector(x: 9, y: 1299)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1298) > Vector(x: 792, y: 1340) > Vector(x: 791, y: 1339) > Vector(x: 791, y: 1299)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1340) > Vector(x: 8, y: 1340) > Vector(x: 9, y: 1339) > Vector(x: 791, y: 1339)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1340) > Vector(x: 8, y: 1298) > Vector(x: 9, y: 1299) > Vector(x: 9, y: 1339)) + [8, 1182]: Testing + [195, 1182]: + [214, 1182]: texts Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(0,0,0) underline - [9, 1280]: Testing - [216, 1280]: - [236, 1280]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1341) > Vector(x: 792, y: 1341) > Vector(x: 791, y: 1342) > Vector(x: 9, y: 1342)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1341) > Vector(x: 792, y: 1383) > Vector(x: 791, y: 1382) > Vector(x: 791, y: 1342)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1383) > Vector(x: 8, y: 1383) > Vector(x: 9, y: 1382) > Vector(x: 791, y: 1382)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1383) > Vector(x: 8, y: 1341) > Vector(x: 9, y: 1342) > Vector(x: 9, y: 1382)) + [8, 1219]: Testing + [215, 1219]: + [235, 1219]: texts Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(0,0,0) underline - [9, 1320]: Testing - [235, 1320]: - [257, 1320]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1384) > Vector(x: 792, y: 1384) > Vector(x: 791, y: 1385) > Vector(x: 9, y: 1385)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1384) > Vector(x: 792, y: 1426) > Vector(x: 791, y: 1425) > Vector(x: 791, y: 1385)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1426) > Vector(x: 8, y: 1426) > Vector(x: 9, y: 1425) > Vector(x: 791, y: 1425)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1426) > Vector(x: 8, y: 1384) > Vector(x: 9, y: 1385) > Vector(x: 9, y: 1425)) + [8, 1257]: Testing + [234, 1257]: + [256, 1257]: texts Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(0,0,0) underline - [9, 1359]: Testing - [254, 1359]: - [278, 1359]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1427) > Vector(x: 792, y: 1427) > Vector(x: 791, y: 1428) > Vector(x: 9, y: 1428)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1427) > Vector(x: 792, y: 1469) > Vector(x: 791, y: 1468) > Vector(x: 791, y: 1428)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1469) > Vector(x: 8, y: 1469) > Vector(x: 9, y: 1468) > Vector(x: 791, y: 1468)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1469) > Vector(x: 8, y: 1427) > Vector(x: 9, y: 1428) > Vector(x: 9, y: 1468)) + [8, 1294]: Testing + [254, 1294]: + [277, 1294]: texts Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(0,0,0) underline - [9, 1439]: Testing - [76, 1439]: - [86, 1439]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1470) > Vector(x: 792, y: 1470) > Vector(x: 791, y: 1471) > Vector(x: 9, y: 1471)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1470) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1471)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1470) > Vector(x: 9, y: 1471) > Vector(x: 9, y: 1511)) + [8, 1372]: Testing + [75, 1372]: + [85, 1372]: texts Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(0,0,0) underline - [9, 1478]: Testing - [102, 1478]: - [115, 1478]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1555) > Vector(x: 791, y: 1554) > Vector(x: 791, y: 1514)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1555) > Vector(x: 8, y: 1555) > Vector(x: 9, y: 1554) > Vector(x: 791, y: 1554)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1555) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1554)) + [8, 1409]: Testing + [100, 1409]: + [114, 1409]: texts Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(0,0,0) underline - [9, 1518]: Testing - [127, 1518]: - [144, 1518]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1556) > Vector(x: 792, y: 1556) > Vector(x: 791, y: 1557) > Vector(x: 9, y: 1557)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1556) > Vector(x: 792, y: 1598) > Vector(x: 791, y: 1597) > Vector(x: 791, y: 1557)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1598) > Vector(x: 8, y: 1598) > Vector(x: 9, y: 1597) > Vector(x: 791, y: 1597)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1598) > Vector(x: 8, y: 1556) > Vector(x: 9, y: 1557) > Vector(x: 9, y: 1597)) + [8, 1447]: Testing + [126, 1447]: + [142, 1447]: texts Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(0,0,0) underline - [9, 1558]: Testing - [152, 1558]: - [172, 1558]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1599) > Vector(x: 792, y: 1599) > Vector(x: 791, y: 1600) > Vector(x: 9, y: 1600)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1599) > Vector(x: 792, y: 1641) > Vector(x: 791, y: 1640) > Vector(x: 791, y: 1600)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1641) > Vector(x: 8, y: 1641) > Vector(x: 9, y: 1640) > Vector(x: 791, y: 1640)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1641) > Vector(x: 8, y: 1599) > Vector(x: 9, y: 1600) > Vector(x: 9, y: 1640)) + [8, 1484]: Testing + [151, 1484]: + [171, 1484]: texts Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(0,0,0) underline - [9, 1597]: Testing - [177, 1597]: - [201, 1597]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1642) > Vector(x: 792, y: 1642) > Vector(x: 791, y: 1643) > Vector(x: 9, y: 1643)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1642) > Vector(x: 792, y: 1684) > Vector(x: 791, y: 1683) > Vector(x: 791, y: 1643)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1684) > Vector(x: 8, y: 1684) > Vector(x: 9, y: 1683) > Vector(x: 791, y: 1683)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1684) > Vector(x: 8, y: 1642) > Vector(x: 9, y: 1643) > Vector(x: 9, y: 1683)) + [8, 1522]: Testing + [176, 1522]: + [200, 1522]: texts Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(0,0,0) underline - [9, 1637]: Testing - [202, 1637]: - [230, 1637]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1685) > Vector(x: 792, y: 1685) > Vector(x: 791, y: 1686) > Vector(x: 9, y: 1686)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1685) > Vector(x: 792, y: 1727) > Vector(x: 791, y: 1726) > Vector(x: 791, y: 1686)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1727) > Vector(x: 8, y: 1727) > Vector(x: 9, y: 1726) > Vector(x: 791, y: 1726)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1727) > Vector(x: 8, y: 1685) > Vector(x: 9, y: 1686) > Vector(x: 9, y: 1726)) + [8, 1560]: Testing + [201, 1560]: + [229, 1560]: texts Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(0,0,0) underline - [9, 1677]: Testing - [228, 1677]: - [259, 1677]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1728) > Vector(x: 792, y: 1728) > Vector(x: 791, y: 1729) > Vector(x: 9, y: 1729)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1728) > Vector(x: 792, y: 1770) > Vector(x: 791, y: 1769) > Vector(x: 791, y: 1729)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1770) > Vector(x: 8, y: 1770) > Vector(x: 9, y: 1769) > Vector(x: 791, y: 1769)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1770) > Vector(x: 8, y: 1728) > Vector(x: 9, y: 1729) > Vector(x: 9, y: 1769)) + [8, 1597]: Testing + [226, 1597]: + [258, 1597]: texts Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(0,0,0) underline - [9, 1716]: Testing - [253, 1716]: - [288, 1716]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1771) > Vector(x: 792, y: 1771) > Vector(x: 791, y: 1772) > Vector(x: 9, y: 1772)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1771) > Vector(x: 792, y: 1813) > Vector(x: 791, y: 1812) > Vector(x: 791, y: 1772)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1813) > Vector(x: 8, y: 1813) > Vector(x: 9, y: 1812) > Vector(x: 791, y: 1812)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1813) > Vector(x: 8, y: 1771) > Vector(x: 9, y: 1772) > Vector(x: 9, y: 1812)) + [8, 1635]: Testing + [252, 1635]: + [286, 1635]: texts Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(0,0,0) underline - [9, 1756]: Testing - [278, 1756]: - [316, 1756]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1814) > Vector(x: 792, y: 1814) > Vector(x: 791, y: 1815) > Vector(x: 9, y: 1815)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1814) > Vector(x: 792, y: 1856) > Vector(x: 791, y: 1855) > Vector(x: 791, y: 1815)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1856) > Vector(x: 8, y: 1856) > Vector(x: 9, y: 1855) > Vector(x: 791, y: 1855)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1856) > Vector(x: 8, y: 1814) > Vector(x: 9, y: 1815) > Vector(x: 9, y: 1855)) + [8, 1673]: Testing + [277, 1673]: + [315, 1673]: texts Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(0,0,0) underline - [9, 1795]: Testing - [303, 1795]: - [345, 1795]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1857) > Vector(x: 792, y: 1857) > Vector(x: 791, y: 1858) > Vector(x: 9, y: 1858)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1857) > Vector(x: 792, y: 1899) > Vector(x: 791, y: 1898) > Vector(x: 791, y: 1858)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1899) > Vector(x: 8, y: 1899) > Vector(x: 9, y: 1898) > Vector(x: 791, y: 1898)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1899) > Vector(x: 8, y: 1857) > Vector(x: 9, y: 1858) > Vector(x: 9, y: 1898)) + [8, 1710]: Testing + [302, 1710]: + [344, 1710]: texts Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(0,0,0) underline - [9, 1835]: Testing - [328, 1835]: - [374, 1835]: texts \ No newline at end of file + [8, 1748]: Testing + [327, 1748]: + [373, 1748]: texts \ No newline at end of file diff --git a/tests/reftests/text/underline.html b/tests/reftests/text/underline.html index 7d39ac9e0..7de74cd45 100644 --- a/tests/reftests/text/underline.html +++ b/tests/reftests/text/underline.html @@ -9,8 +9,8 @@ $('body').empty(); $.each(['arial','verdana','tahoma','courier new'],function(i,e){ var div = $('
      ').css('font-family',e).appendTo('body'); - for(var i=0;i<=10;i++){ - $('
      ').text('Testing texts').css('margin-top',1).css('border','1px solid black').css('font-size',(16+i*6)).appendTo(div); + for(var i=1;i<=10;i*=2){ + $('
      ').text('Testing texts').css('margin-top',1).css('font-size',(16+i*6)).appendTo(div); } }); @@ -31,6 +31,7 @@ div{ text-decoration:underline; + line-height: 1em; } .lineheight{ diff --git a/tests/reftests/text/underline.txt b/tests/reftests/text/underline.txt index e2053db69..35a55686c 100644 --- a/tests/reftests/text/underline.txt +++ b/tests/reftests/text/underline.txt @@ -1,355 +1,67 @@ -Window: [800, 2528] -Rectangle: [0, 0, 800, 2528] rgba(0,0,0,0) +Window: [800, 647] +Rectangle: [0, 0, 800, 647] rgba(0,0,0,0) Opacity: 1 -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 791, y: 9) > Vector(x: 9, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 28) > Vector(x: 791, y: 27) > Vector(x: 791, y: 9)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 28) > Vector(x: 8, y: 28) > Vector(x: 9, y: 27) > Vector(x: 791, y: 27)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 28) > Vector(x: 8, y: 8) > Vector(x: 9, y: 9) > Vector(x: 9, y: 27)) -Text: rgb(0,0,0) normal normal 400 16px arial solid rgb(0,0,0) underline - [9, 9]: Testing - [60, 9]: - [64, 9]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 29) > Vector(x: 792, y: 29) > Vector(x: 791, y: 30) > Vector(x: 9, y: 30)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 29) > Vector(x: 792, y: 57) > Vector(x: 791, y: 56) > Vector(x: 791, y: 30)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 57) > Vector(x: 8, y: 57) > Vector(x: 9, y: 56) > Vector(x: 791, y: 56)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 57) > Vector(x: 8, y: 29) > Vector(x: 9, y: 30) > Vector(x: 9, y: 56)) Text: rgb(0,0,0) normal normal 400 22px arial solid rgb(0,0,0) underline - [9, 31]: Testing - [79, 31]: - [85, 31]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 58) > Vector(x: 792, y: 58) > Vector(x: 791, y: 59) > Vector(x: 9, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 58) > Vector(x: 792, y: 92) > Vector(x: 791, y: 91) > Vector(x: 791, y: 59)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 92) > Vector(x: 8, y: 92) > Vector(x: 9, y: 91) > Vector(x: 791, y: 91)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 92) > Vector(x: 8, y: 58) > Vector(x: 9, y: 59) > Vector(x: 9, y: 91)) + [8, 6]: Testing + [78, 6]: + [84, 6]: texts Text: rgb(0,0,0) normal normal 400 28px arial solid rgb(0,0,0) underline - [9, 59]: Testing - [98, 59]: - [106, 59]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 93) > Vector(x: 792, y: 93) > Vector(x: 791, y: 94) > Vector(x: 9, y: 94)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 93) > Vector(x: 792, y: 134) > Vector(x: 791, y: 133) > Vector(x: 791, y: 94)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 134) > Vector(x: 8, y: 134) > Vector(x: 9, y: 133) > Vector(x: 791, y: 133)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 134) > Vector(x: 8, y: 93) > Vector(x: 9, y: 94) > Vector(x: 9, y: 133)) -Text: rgb(0,0,0) normal normal 400 34px arial solid rgb(0,0,0) underline - [9, 94]: Testing - [117, 94]: - [126, 94]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 135) > Vector(x: 792, y: 135) > Vector(x: 791, y: 136) > Vector(x: 9, y: 136)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 135) > Vector(x: 792, y: 183) > Vector(x: 791, y: 182) > Vector(x: 791, y: 136)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 183) > Vector(x: 8, y: 183) > Vector(x: 9, y: 182) > Vector(x: 791, y: 182)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 183) > Vector(x: 8, y: 135) > Vector(x: 9, y: 136) > Vector(x: 9, y: 182)) + [8, 29]: Testing + [97, 29]: + [104, 29]: texts Text: rgb(0,0,0) normal normal 400 40px arial solid rgb(0,0,0) underline - [9, 136]: Testing - [136, 136]: - [147, 136]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 184) > Vector(x: 792, y: 184) > Vector(x: 791, y: 185) > Vector(x: 9, y: 185)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 184) > Vector(x: 792, y: 239) > Vector(x: 791, y: 238) > Vector(x: 791, y: 185)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 239) > Vector(x: 8, y: 239) > Vector(x: 9, y: 238) > Vector(x: 791, y: 238)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 239) > Vector(x: 8, y: 184) > Vector(x: 9, y: 185) > Vector(x: 9, y: 238)) -Text: rgb(0,0,0) normal normal 400 46px arial solid rgb(0,0,0) underline - [9, 186]: Testing - [155, 186]: - [168, 186]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 240) > Vector(x: 792, y: 240) > Vector(x: 791, y: 241) > Vector(x: 9, y: 241)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 240) > Vector(x: 792, y: 302) > Vector(x: 791, y: 301) > Vector(x: 791, y: 241)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 302) > Vector(x: 8, y: 302) > Vector(x: 9, y: 301) > Vector(x: 791, y: 301)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 302) > Vector(x: 8, y: 240) > Vector(x: 9, y: 241) > Vector(x: 9, y: 301)) -Text: rgb(0,0,0) normal normal 400 52px arial solid rgb(0,0,0) underline - [9, 242]: Testing - [174, 242]: - [188, 242]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 303) > Vector(x: 792, y: 303) > Vector(x: 791, y: 304) > Vector(x: 9, y: 304)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 303) > Vector(x: 792, y: 371) > Vector(x: 791, y: 370) > Vector(x: 791, y: 304)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 371) > Vector(x: 8, y: 371) > Vector(x: 9, y: 370) > Vector(x: 791, y: 370)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 371) > Vector(x: 8, y: 303) > Vector(x: 9, y: 304) > Vector(x: 9, y: 370)) -Text: rgb(0,0,0) normal normal 400 58px arial solid rgb(0,0,0) underline - [9, 305]: Testing - [193, 305]: - [209, 305]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 372) > Vector(x: 792, y: 372) > Vector(x: 791, y: 373) > Vector(x: 9, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 372) > Vector(x: 792, y: 448) > Vector(x: 791, y: 447) > Vector(x: 791, y: 373)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 448) > Vector(x: 8, y: 448) > Vector(x: 9, y: 447) > Vector(x: 791, y: 447)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 448) > Vector(x: 8, y: 372) > Vector(x: 9, y: 373) > Vector(x: 9, y: 447)) + [8, 58]: Testing + [135, 58]: + [146, 58]: texts Text: rgb(0,0,0) normal normal 400 64px arial solid rgb(0,0,0) underline - [9, 374]: Testing - [212, 374]: - [230, 374]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 449) > Vector(x: 792, y: 449) > Vector(x: 791, y: 450) > Vector(x: 9, y: 450)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 449) > Vector(x: 792, y: 531) > Vector(x: 791, y: 530) > Vector(x: 791, y: 450)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 531) > Vector(x: 8, y: 531) > Vector(x: 9, y: 530) > Vector(x: 791, y: 530)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 531) > Vector(x: 8, y: 449) > Vector(x: 9, y: 450) > Vector(x: 9, y: 530)) -Text: rgb(0,0,0) normal normal 400 70px arial solid rgb(0,0,0) underline - [9, 451]: Testing - [231, 451]: - [250, 451]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 532) > Vector(x: 792, y: 532) > Vector(x: 791, y: 533) > Vector(x: 9, y: 533)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 532) > Vector(x: 792, y: 622) > Vector(x: 791, y: 621) > Vector(x: 791, y: 533)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 622) > Vector(x: 8, y: 622) > Vector(x: 9, y: 621) > Vector(x: 791, y: 621)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 622) > Vector(x: 8, y: 532) > Vector(x: 9, y: 533) > Vector(x: 9, y: 621)) -Text: rgb(0,0,0) normal normal 400 76px arial solid rgb(0,0,0) underline - [9, 535]: Testing - [250, 535]: - [271, 535]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 623) > Vector(x: 792, y: 623) > Vector(x: 791, y: 624) > Vector(x: 9, y: 624)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 623) > Vector(x: 792, y: 644) > Vector(x: 791, y: 643) > Vector(x: 791, y: 624)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 644) > Vector(x: 8, y: 644) > Vector(x: 9, y: 643) > Vector(x: 791, y: 643)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 644) > Vector(x: 8, y: 623) > Vector(x: 9, y: 624) > Vector(x: 9, y: 643)) -Text: rgb(0,0,0) normal normal 400 16px verdana solid rgb(0,0,0) underline - [9, 624]: Testing - [66, 624]: - [72, 624]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 645) > Vector(x: 792, y: 645) > Vector(x: 791, y: 646) > Vector(x: 9, y: 646)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 645) > Vector(x: 792, y: 674) > Vector(x: 791, y: 673) > Vector(x: 791, y: 646)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 674) > Vector(x: 8, y: 674) > Vector(x: 9, y: 673) > Vector(x: 791, y: 673)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 674) > Vector(x: 8, y: 645) > Vector(x: 9, y: 646) > Vector(x: 9, y: 673)) + [8, 97]: Testing + [211, 97]: + [228, 97]: texts Text: rgb(0,0,0) normal normal 400 22px verdana solid rgb(0,0,0) underline - [9, 646]: Testing - [87, 646]: - [95, 646]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 675) > Vector(x: 792, y: 675) > Vector(x: 791, y: 676) > Vector(x: 9, y: 676)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 675) > Vector(x: 792, y: 711) > Vector(x: 791, y: 710) > Vector(x: 791, y: 676)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 711) > Vector(x: 8, y: 711) > Vector(x: 9, y: 710) > Vector(x: 791, y: 710)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 711) > Vector(x: 8, y: 675) > Vector(x: 9, y: 676) > Vector(x: 9, y: 710)) + [8, 164]: Testing + [86, 164]: + [94, 164]: texts Text: rgb(0,0,0) normal normal 400 28px verdana solid rgb(0,0,0) underline - [9, 676]: Testing - [108, 676]: - [118, 676]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 712) > Vector(x: 792, y: 712) > Vector(x: 791, y: 713) > Vector(x: 9, y: 713)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 712) > Vector(x: 792, y: 755) > Vector(x: 791, y: 754) > Vector(x: 791, y: 713)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 755) > Vector(x: 8, y: 755) > Vector(x: 9, y: 754) > Vector(x: 791, y: 754)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 755) > Vector(x: 8, y: 712) > Vector(x: 9, y: 713) > Vector(x: 9, y: 754)) -Text: rgb(0,0,0) normal normal 400 34px verdana solid rgb(0,0,0) underline - [9, 713]: Testing - [130, 713]: - [142, 713]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 756) > Vector(x: 792, y: 756) > Vector(x: 791, y: 757) > Vector(x: 9, y: 757)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 756) > Vector(x: 792, y: 807) > Vector(x: 791, y: 806) > Vector(x: 791, y: 757)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 807) > Vector(x: 8, y: 807) > Vector(x: 9, y: 806) > Vector(x: 791, y: 806)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 807) > Vector(x: 8, y: 756) > Vector(x: 9, y: 757) > Vector(x: 9, y: 806)) + [8, 186]: Testing + [107, 186]: + [117, 186]: texts Text: rgb(0,0,0) normal normal 400 40px verdana solid rgb(0,0,0) underline - [9, 757]: Testing - [151, 757]: - [165, 757]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 808) > Vector(x: 792, y: 808) > Vector(x: 791, y: 809) > Vector(x: 9, y: 809)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 808) > Vector(x: 792, y: 866) > Vector(x: 791, y: 865) > Vector(x: 791, y: 809)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 866) > Vector(x: 8, y: 866) > Vector(x: 9, y: 865) > Vector(x: 791, y: 865)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 866) > Vector(x: 8, y: 808) > Vector(x: 9, y: 809) > Vector(x: 9, y: 865)) -Text: rgb(0,0,0) normal normal 400 46px verdana solid rgb(0,0,0) underline - [9, 809]: Testing - [172, 809]: - [188, 809]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 867) > Vector(x: 792, y: 867) > Vector(x: 791, y: 868) > Vector(x: 9, y: 868)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 867) > Vector(x: 792, y: 932) > Vector(x: 791, y: 931) > Vector(x: 791, y: 868)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 932) > Vector(x: 8, y: 932) > Vector(x: 9, y: 931) > Vector(x: 791, y: 931)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 932) > Vector(x: 8, y: 867) > Vector(x: 9, y: 868) > Vector(x: 9, y: 931)) -Text: rgb(0,0,0) normal normal 400 52px verdana solid rgb(0,0,0) underline - [9, 868]: Testing - [194, 868]: - [212, 868]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 933) > Vector(x: 792, y: 933) > Vector(x: 791, y: 934) > Vector(x: 9, y: 934)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 933) > Vector(x: 792, y: 1005) > Vector(x: 791, y: 1004) > Vector(x: 791, y: 934)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1005) > Vector(x: 8, y: 1005) > Vector(x: 9, y: 1004) > Vector(x: 791, y: 1004)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1005) > Vector(x: 8, y: 933) > Vector(x: 9, y: 934) > Vector(x: 9, y: 1004)) -Text: rgb(0,0,0) normal normal 400 58px verdana solid rgb(0,0,0) underline - [9, 934]: Testing - [215, 934]: - [235, 934]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1006) > Vector(x: 792, y: 1006) > Vector(x: 791, y: 1007) > Vector(x: 9, y: 1007)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1006) > Vector(x: 792, y: 1086) > Vector(x: 791, y: 1085) > Vector(x: 791, y: 1007)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1086) > Vector(x: 8, y: 1086) > Vector(x: 9, y: 1085) > Vector(x: 791, y: 1085)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1086) > Vector(x: 8, y: 1006) > Vector(x: 9, y: 1007) > Vector(x: 9, y: 1085)) + [8, 214]: Testing + [150, 214]: + [164, 214]: texts Text: rgb(0,0,0) normal normal 400 64px verdana solid rgb(0,0,0) underline - [9, 1007]: Testing - [236, 1007]: - [259, 1007]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1087) > Vector(x: 792, y: 1087) > Vector(x: 791, y: 1088) > Vector(x: 9, y: 1088)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1087) > Vector(x: 792, y: 1174) > Vector(x: 791, y: 1173) > Vector(x: 791, y: 1088)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1174) > Vector(x: 8, y: 1174) > Vector(x: 9, y: 1173) > Vector(x: 791, y: 1173)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1174) > Vector(x: 8, y: 1087) > Vector(x: 9, y: 1088) > Vector(x: 9, y: 1173)) -Text: rgb(0,0,0) normal normal 400 70px verdana solid rgb(0,0,0) underline - [9, 1088]: Testing - [258, 1088]: - [282, 1088]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1175) > Vector(x: 792, y: 1175) > Vector(x: 791, y: 1176) > Vector(x: 9, y: 1176)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1175) > Vector(x: 792, y: 1270) > Vector(x: 791, y: 1269) > Vector(x: 791, y: 1176)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1270) > Vector(x: 8, y: 1270) > Vector(x: 9, y: 1269) > Vector(x: 791, y: 1269)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1270) > Vector(x: 8, y: 1175) > Vector(x: 9, y: 1176) > Vector(x: 9, y: 1269)) -Text: rgb(0,0,0) normal normal 400 76px verdana solid rgb(0,0,0) underline - [9, 1177]: Testing - [279, 1177]: - [306, 1177]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1271) > Vector(x: 792, y: 1271) > Vector(x: 791, y: 1272) > Vector(x: 9, y: 1272)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1271) > Vector(x: 792, y: 1292) > Vector(x: 791, y: 1291) > Vector(x: 791, y: 1272)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1292) > Vector(x: 8, y: 1292) > Vector(x: 9, y: 1291) > Vector(x: 791, y: 1291)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1292) > Vector(x: 8, y: 1271) > Vector(x: 9, y: 1272) > Vector(x: 9, y: 1291)) -Text: rgb(0,0,0) normal normal 400 16px tahoma solid rgb(0,0,0) underline - [9, 1272]: Testing - [61, 1272]: - [66, 1272]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1293) > Vector(x: 792, y: 1293) > Vector(x: 791, y: 1294) > Vector(x: 9, y: 1294)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1293) > Vector(x: 792, y: 1321) > Vector(x: 791, y: 1320) > Vector(x: 791, y: 1294)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1321) > Vector(x: 8, y: 1321) > Vector(x: 9, y: 1320) > Vector(x: 791, y: 1320)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1321) > Vector(x: 8, y: 1293) > Vector(x: 9, y: 1294) > Vector(x: 9, y: 1320)) + [8, 252]: Testing + [235, 252]: + [258, 252]: texts Text: rgb(0,0,0) normal normal 400 22px tahoma solid rgb(0,0,0) underline - [9, 1294]: Testing - [80, 1294]: - [87, 1294]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1322) > Vector(x: 792, y: 1322) > Vector(x: 791, y: 1323) > Vector(x: 9, y: 1323)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1322) > Vector(x: 792, y: 1358) > Vector(x: 791, y: 1357) > Vector(x: 791, y: 1323)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1358) > Vector(x: 8, y: 1358) > Vector(x: 9, y: 1357) > Vector(x: 791, y: 1357)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1358) > Vector(x: 8, y: 1322) > Vector(x: 9, y: 1323) > Vector(x: 9, y: 1357)) + [8, 322]: Testing + [79, 322]: + [86, 322]: texts Text: rgb(0,0,0) normal normal 400 28px tahoma solid rgb(0,0,0) underline - [9, 1324]: Testing - [100, 1324]: - [108, 1324]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1359) > Vector(x: 792, y: 1359) > Vector(x: 791, y: 1360) > Vector(x: 9, y: 1360)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1359) > Vector(x: 792, y: 1402) > Vector(x: 791, y: 1401) > Vector(x: 791, y: 1360)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1402) > Vector(x: 8, y: 1402) > Vector(x: 9, y: 1401) > Vector(x: 791, y: 1401)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1402) > Vector(x: 8, y: 1359) > Vector(x: 9, y: 1360) > Vector(x: 9, y: 1401)) -Text: rgb(0,0,0) normal normal 400 34px tahoma solid rgb(0,0,0) underline - [9, 1360]: Testing - [119, 1360]: - [130, 1360]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1403) > Vector(x: 792, y: 1403) > Vector(x: 791, y: 1404) > Vector(x: 9, y: 1404)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1403) > Vector(x: 792, y: 1454) > Vector(x: 791, y: 1453) > Vector(x: 791, y: 1404)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1454) > Vector(x: 8, y: 1454) > Vector(x: 9, y: 1453) > Vector(x: 791, y: 1453)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1454) > Vector(x: 8, y: 1403) > Vector(x: 9, y: 1404) > Vector(x: 9, y: 1453)) + [8, 344]: Testing + [98, 344]: + [107, 344]: texts Text: rgb(0,0,0) normal normal 400 40px tahoma solid rgb(0,0,0) underline - [9, 1404]: Testing - [138, 1404]: - [151, 1404]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1455) > Vector(x: 792, y: 1455) > Vector(x: 791, y: 1456) > Vector(x: 9, y: 1456)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1455) > Vector(x: 792, y: 1512) > Vector(x: 791, y: 1511) > Vector(x: 791, y: 1456)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1512) > Vector(x: 8, y: 1512) > Vector(x: 9, y: 1511) > Vector(x: 791, y: 1511)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1512) > Vector(x: 8, y: 1455) > Vector(x: 9, y: 1456) > Vector(x: 9, y: 1511)) -Text: rgb(0,0,0) normal normal 400 46px tahoma solid rgb(0,0,0) underline - [9, 1456]: Testing - [158, 1456]: - [172, 1456]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1513) > Vector(x: 792, y: 1513) > Vector(x: 791, y: 1514) > Vector(x: 9, y: 1514)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1513) > Vector(x: 792, y: 1578) > Vector(x: 791, y: 1577) > Vector(x: 791, y: 1514)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1578) > Vector(x: 8, y: 1578) > Vector(x: 9, y: 1577) > Vector(x: 791, y: 1577)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1578) > Vector(x: 8, y: 1513) > Vector(x: 9, y: 1514) > Vector(x: 9, y: 1577)) -Text: rgb(0,0,0) normal normal 400 52px tahoma solid rgb(0,0,0) underline - [9, 1514]: Testing - [177, 1514]: - [193, 1514]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1579) > Vector(x: 792, y: 1579) > Vector(x: 791, y: 1580) > Vector(x: 9, y: 1580)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1579) > Vector(x: 792, y: 1651) > Vector(x: 791, y: 1650) > Vector(x: 791, y: 1580)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1651) > Vector(x: 8, y: 1651) > Vector(x: 9, y: 1650) > Vector(x: 791, y: 1650)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1651) > Vector(x: 8, y: 1579) > Vector(x: 9, y: 1580) > Vector(x: 9, y: 1650)) -Text: rgb(0,0,0) normal normal 400 58px tahoma solid rgb(0,0,0) underline - [9, 1580]: Testing - [196, 1580]: - [214, 1580]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1652) > Vector(x: 792, y: 1652) > Vector(x: 791, y: 1653) > Vector(x: 9, y: 1653)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1652) > Vector(x: 792, y: 1731) > Vector(x: 791, y: 1730) > Vector(x: 791, y: 1653)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1731) > Vector(x: 8, y: 1731) > Vector(x: 9, y: 1730) > Vector(x: 791, y: 1730)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1731) > Vector(x: 8, y: 1652) > Vector(x: 9, y: 1653) > Vector(x: 9, y: 1730)) + [8, 372]: Testing + [137, 372]: + [150, 372]: texts Text: rgb(0,0,0) normal normal 400 64px tahoma solid rgb(0,0,0) underline - [9, 1653]: Testing - [216, 1653]: - [236, 1653]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1732) > Vector(x: 792, y: 1732) > Vector(x: 791, y: 1733) > Vector(x: 9, y: 1733)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1732) > Vector(x: 792, y: 1819) > Vector(x: 791, y: 1818) > Vector(x: 791, y: 1733)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1819) > Vector(x: 8, y: 1819) > Vector(x: 9, y: 1818) > Vector(x: 791, y: 1818)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1819) > Vector(x: 8, y: 1732) > Vector(x: 9, y: 1733) > Vector(x: 9, y: 1818)) -Text: rgb(0,0,0) normal normal 400 70px tahoma solid rgb(0,0,0) underline - [9, 1733]: Testing - [235, 1733]: - [257, 1733]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1820) > Vector(x: 792, y: 1820) > Vector(x: 791, y: 1821) > Vector(x: 9, y: 1821)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1820) > Vector(x: 792, y: 1913) > Vector(x: 791, y: 1912) > Vector(x: 791, y: 1821)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1913) > Vector(x: 8, y: 1913) > Vector(x: 9, y: 1912) > Vector(x: 791, y: 1912)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1913) > Vector(x: 8, y: 1820) > Vector(x: 9, y: 1821) > Vector(x: 9, y: 1912)) -Text: rgb(0,0,0) normal normal 400 76px tahoma solid rgb(0,0,0) underline - [9, 1821]: Testing - [254, 1821]: - [278, 1821]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1914) > Vector(x: 792, y: 1914) > Vector(x: 791, y: 1915) > Vector(x: 9, y: 1915)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1914) > Vector(x: 792, y: 1934) > Vector(x: 791, y: 1933) > Vector(x: 791, y: 1915)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1934) > Vector(x: 8, y: 1934) > Vector(x: 9, y: 1933) > Vector(x: 791, y: 1933)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1934) > Vector(x: 8, y: 1914) > Vector(x: 9, y: 1915) > Vector(x: 9, y: 1933)) -Text: rgb(0,0,0) normal normal 400 16px courier new solid rgb(0,0,0) underline - [9, 1915]: Testing - [76, 1915]: - [86, 1915]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1935) > Vector(x: 792, y: 1935) > Vector(x: 791, y: 1936) > Vector(x: 9, y: 1936)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1935) > Vector(x: 792, y: 1962) > Vector(x: 791, y: 1961) > Vector(x: 791, y: 1936)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1962) > Vector(x: 8, y: 1962) > Vector(x: 9, y: 1961) > Vector(x: 791, y: 1961)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1962) > Vector(x: 8, y: 1935) > Vector(x: 9, y: 1936) > Vector(x: 9, y: 1961)) + [8, 410]: Testing + [215, 410]: + [235, 410]: texts Text: rgb(0,0,0) normal normal 400 22px courier new solid rgb(0,0,0) underline - [9, 1936]: Testing - [102, 1936]: - [115, 1936]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1963) > Vector(x: 792, y: 1963) > Vector(x: 791, y: 1964) > Vector(x: 9, y: 1964)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1963) > Vector(x: 792, y: 1997) > Vector(x: 791, y: 1996) > Vector(x: 791, y: 1964)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1997) > Vector(x: 8, y: 1997) > Vector(x: 9, y: 1996) > Vector(x: 791, y: 1996)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1997) > Vector(x: 8, y: 1963) > Vector(x: 9, y: 1964) > Vector(x: 9, y: 1996)) + [8, 480]: Testing + [100, 480]: + [114, 480]: texts Text: rgb(0,0,0) normal normal 400 28px courier new solid rgb(0,0,0) underline - [9, 1965]: Testing - [127, 1965]: - [144, 1965]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 1998) > Vector(x: 792, y: 1998) > Vector(x: 791, y: 1999) > Vector(x: 9, y: 1999)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 1998) > Vector(x: 792, y: 2039) > Vector(x: 791, y: 2038) > Vector(x: 791, y: 1999)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2039) > Vector(x: 8, y: 2039) > Vector(x: 9, y: 2038) > Vector(x: 791, y: 2038)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2039) > Vector(x: 8, y: 1998) > Vector(x: 9, y: 1999) > Vector(x: 9, y: 2038)) -Text: rgb(0,0,0) normal normal 400 34px courier new solid rgb(0,0,0) underline - [9, 1999]: Testing - [152, 1999]: - [172, 1999]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2040) > Vector(x: 792, y: 2040) > Vector(x: 791, y: 2041) > Vector(x: 9, y: 2041)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2040) > Vector(x: 792, y: 2087) > Vector(x: 791, y: 2086) > Vector(x: 791, y: 2041)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2087) > Vector(x: 8, y: 2087) > Vector(x: 9, y: 2086) > Vector(x: 791, y: 2086)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2087) > Vector(x: 8, y: 2040) > Vector(x: 9, y: 2041) > Vector(x: 9, y: 2086)) + [8, 503]: Testing + [126, 503]: + [142, 503]: texts Text: rgb(0,0,0) normal normal 400 40px courier new solid rgb(0,0,0) underline - [9, 2041]: Testing - [177, 2041]: - [201, 2041]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2088) > Vector(x: 792, y: 2088) > Vector(x: 791, y: 2089) > Vector(x: 9, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2088) > Vector(x: 792, y: 2142) > Vector(x: 791, y: 2141) > Vector(x: 791, y: 2089)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2142) > Vector(x: 8, y: 2142) > Vector(x: 9, y: 2141) > Vector(x: 791, y: 2141)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2142) > Vector(x: 8, y: 2088) > Vector(x: 9, y: 2089) > Vector(x: 9, y: 2141)) -Text: rgb(0,0,0) normal normal 400 46px courier new solid rgb(0,0,0) underline - [9, 2089]: Testing - [202, 2089]: - [230, 2089]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2143) > Vector(x: 792, y: 2143) > Vector(x: 791, y: 2144) > Vector(x: 9, y: 2144)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2143) > Vector(x: 792, y: 2204) > Vector(x: 791, y: 2203) > Vector(x: 791, y: 2144)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2204) > Vector(x: 8, y: 2204) > Vector(x: 9, y: 2203) > Vector(x: 791, y: 2203)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2204) > Vector(x: 8, y: 2143) > Vector(x: 9, y: 2144) > Vector(x: 9, y: 2203)) -Text: rgb(0,0,0) normal normal 400 52px courier new solid rgb(0,0,0) underline - [9, 2145]: Testing - [228, 2145]: - [259, 2145]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2205) > Vector(x: 792, y: 2205) > Vector(x: 791, y: 2206) > Vector(x: 9, y: 2206)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2205) > Vector(x: 792, y: 2273) > Vector(x: 791, y: 2272) > Vector(x: 791, y: 2206)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2273) > Vector(x: 8, y: 2273) > Vector(x: 9, y: 2272) > Vector(x: 791, y: 2272)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2273) > Vector(x: 8, y: 2205) > Vector(x: 9, y: 2206) > Vector(x: 9, y: 2272)) -Text: rgb(0,0,0) normal normal 400 58px courier new solid rgb(0,0,0) underline - [9, 2206]: Testing - [253, 2206]: - [288, 2206]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2274) > Vector(x: 792, y: 2274) > Vector(x: 791, y: 2275) > Vector(x: 9, y: 2275)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2274) > Vector(x: 792, y: 2349) > Vector(x: 791, y: 2348) > Vector(x: 791, y: 2275)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2349) > Vector(x: 8, y: 2349) > Vector(x: 9, y: 2348) > Vector(x: 791, y: 2348)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2349) > Vector(x: 8, y: 2274) > Vector(x: 9, y: 2275) > Vector(x: 9, y: 2348)) + [8, 531]: Testing + [176, 531]: + [200, 531]: texts Text: rgb(0,0,0) normal normal 400 64px courier new solid rgb(0,0,0) underline - [9, 2275]: Testing - [278, 2275]: - [316, 2275]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2350) > Vector(x: 792, y: 2350) > Vector(x: 791, y: 2351) > Vector(x: 9, y: 2351)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2350) > Vector(x: 792, y: 2431) > Vector(x: 791, y: 2430) > Vector(x: 791, y: 2351)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2431) > Vector(x: 8, y: 2431) > Vector(x: 9, y: 2430) > Vector(x: 791, y: 2430)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2431) > Vector(x: 8, y: 2350) > Vector(x: 9, y: 2351) > Vector(x: 9, y: 2430)) -Text: rgb(0,0,0) normal normal 400 70px courier new solid rgb(0,0,0) underline - [9, 2351]: Testing - [303, 2351]: - [345, 2351]: texts -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2432) > Vector(x: 792, y: 2432) > Vector(x: 791, y: 2433) > Vector(x: 9, y: 2433)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2432) > Vector(x: 792, y: 2520) > Vector(x: 791, y: 2519) > Vector(x: 791, y: 2433)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 2520) > Vector(x: 8, y: 2520) > Vector(x: 9, y: 2519) > Vector(x: 791, y: 2519)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 2520) > Vector(x: 8, y: 2432) > Vector(x: 9, y: 2433) > Vector(x: 9, y: 2519)) -Text: rgb(0,0,0) normal normal 400 76px courier new solid rgb(0,0,0) underline - [9, 2433]: Testing - [328, 2433]: - [374, 2433]: texts \ No newline at end of file + [8, 571]: Testing + [277, 571]: + [315, 571]: texts \ No newline at end of file diff --git a/tests/reftests/visibility.html b/tests/reftests/visibility.html index 3071bc4d0..9c1908b1b 100644 --- a/tests/reftests/visibility.html +++ b/tests/reftests/visibility.html @@ -23,7 +23,6 @@

      Display:none and visible:hidden tests

      This should be visible
      display:none, This should be hidden
      visibility:hidden, This should be hidden
      -
      display:none, This should be hidden
      visibility:hidden, This should be hidden
      diff --git a/tests/reftests/visibility.txt b/tests/reftests/visibility.txt index 46f6746b7..33cf8dce0 100644 --- a/tests/reftests/visibility.txt +++ b/tests/reftests/visibility.txt @@ -2,9 +2,9 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 Shape: rgb(0,0,0) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 790, y: 10) > Vector(x: 10, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 176) > Vector(x: 790, y: 174) > Vector(x: 790, y: 10)) -Shape: rgb(0,0,0) Path (Vector(x: 792, y: 176) > Vector(x: 8, y: 176) > Vector(x: 10, y: 174) > Vector(x: 790, y: 174)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 176) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 174)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 158) > Vector(x: 790, y: 156) > Vector(x: 790, y: 10)) +Shape: rgb(0,0,0) Path (Vector(x: 792, y: 158) > Vector(x: 8, y: 158) > Vector(x: 10, y: 156) > Vector(x: 790, y: 156)) +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 158) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 156)) Text: rgb(0,0,0) normal normal 700 32px Arial [10, 32]: Display:none [220, 32]: and @@ -18,8 +18,4 @@ Text: rgb(0,0,0) normal normal 400 16px Arial [12, 92]: This [47, 92]: should [98, 92]: be - [120, 92]: visible -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 142) > Vector(x: 790, y: 142) > Vector(x: 789, y: 143) > Vector(x: 11, y: 143)) -Shape: rgb(0,0,0) Path (Vector(x: 790, y: 142) > Vector(x: 790, y: 144) > Vector(x: 789, y: 143) > Vector(x: 789, y: 143)) -Shape: rgb(0,0,0) Path (Vector(x: 790, y: 144) > Vector(x: 10, y: 144) > Vector(x: 11, y: 143) > Vector(x: 789, y: 143)) -Shape: rgb(0,0,0) Path (Vector(x: 10, y: 144) > Vector(x: 10, y: 142) > Vector(x: 11, y: 143) > Vector(x: 11, y: 143)) \ No newline at end of file + [120, 92]: visible \ No newline at end of file diff --git a/tests/testrunner.js b/tests/testrunner.js index fb7b4e843..64f3ec602 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -188,12 +188,14 @@ const assertPath = (result, expected, desc) => { case 'Repeat': expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); - expect(RESULT.width).to.equal( + expect(RESULT.width).to.be.closeTo( args.width, + 3, `${desc} width` ); - expect(RESULT.height).to.equal( + expect(RESULT.height).to.be.closeTo( args.height, + 3, `${desc} height` ); expect(RESULT.imageSrc).to.equal( From fb58d1f0b68fa835a469b66a9a4da898435dd987 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 20:40:08 +0800 Subject: [PATCH 059/377] Fix incorrect value --- src/Bounds.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bounds.js b/src/Bounds.js index 255c6de17..a6d737f3f 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -15,7 +15,7 @@ const BOTTOM = 2; const LEFT = 3; const H = 0; -const V = 0; +const V = 1; export type BoundCurves = { topLeftOuter: BezierCurve | Vector, From ad487f4585fe48fa33884609e81359c0100268ba Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 20:40:37 +0800 Subject: [PATCH 060/377] Set overflow hidden for input elements --- src/NodeContainer.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 9769dbd0c..07a48d566 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -72,6 +72,8 @@ type StyleDeclaration = { zIndex: zIndex }; +const INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT']; + export default class NodeContainer { name: ?string; parent: ?NodeContainer; @@ -114,7 +116,10 @@ export default class NodeContainer { font: parseFont(style), letterSpacing: parseLetterSpacing(style.letterSpacing), opacity: parseFloat(style.opacity), - overflow: parseOverflow(style.overflow), + overflow: + INPUT_TAGS.indexOf(node.tagName) === -1 + ? parseOverflow(style.overflow) + : OVERFLOW.HIDDEN, padding: parsePadding(style), position: position, textDecoration: parseTextDecoration(style), From 18761b7352ea73c7f100202e6f98aa75a1c5a84e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 20:40:49 +0800 Subject: [PATCH 061/377] Fix textShadow parsing --- src/parsing/textShadow.js | 86 +++++++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 17 deletions(-) diff --git a/src/parsing/textShadow.js b/src/parsing/textShadow.js index 22ff4aac4..eb9febd67 100644 --- a/src/parsing/textShadow.js +++ b/src/parsing/textShadow.js @@ -10,33 +10,85 @@ export type TextShadow = { blur: number }; -const TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){3})/g; -const TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g; +const NUMBER = /^([+-]|\d|\.)$/i; export const parseTextShadow = (textShadow: ?string): Array | null => { if (textShadow === 'none' || typeof textShadow !== 'string') { return null; } - const shadows = textShadow.match(TEXT_SHADOW_PROPERTY); + let currentValue = ''; + let isLength = false; + const values = []; + const shadows = []; + let numParens = 0; + let color = null; - if (!shadows) { - return null; - } - - const shadowList = []; + const appendValue = () => { + if (currentValue.length) { + if (isLength) { + values.push(parseFloat(currentValue)); + } else { + color = new Color(currentValue); + } + } + isLength = false; + currentValue = ''; + }; - for (let i = 0; i < shadows.length; i++) { - const shadow = shadows[i].match(TEXT_SHADOW_VALUES); - if (shadow) { - shadowList.push({ - color: new Color(shadow[0]), - offsetX: shadow[1] ? parseFloat(shadow[1].replace('px', '')) : 0, - offsetY: shadow[2] ? parseFloat(shadow[2].replace('px', '')) : 0, - blur: shadow[3] ? parseFloat(shadow[3].replace('px', '')) : 0 + const appendShadow = () => { + if (values.length && color !== null) { + shadows.push({ + color, + offsetX: values[0] || 0, + offsetY: values[1] || 0, + blur: values[2] || 0 }); } + values.splice(0, values.length); + color = null; + }; + + for (let i = 0; i < textShadow.length; i++) { + const c = textShadow[i]; + switch (c) { + case '(': + currentValue += c; + numParens++; + break; + case ')': + currentValue += c; + numParens--; + break; + case ',': + if (numParens === 0) { + appendValue(); + appendShadow(); + } else { + currentValue += c; + } + break; + case ' ': + if (numParens === 0) { + appendValue(); + } else { + currentValue += c; + } + break; + default: + if (currentValue.length === 0 && NUMBER.test(c)) { + isLength = true; + } + currentValue += c; + } + } + + appendValue(); + appendShadow(); + + if (shadows.length === 0) { + return null; } - return shadowList; + return shadows; }; From a1b8cbc2fb062ad6d10f728fa213bf61f3294b90 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 20:41:05 +0800 Subject: [PATCH 062/377] Remove profiler --- tests/test.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/test.js b/tests/test.js index 9900130cc..18b8dfb14 100644 --- a/tests/test.js +++ b/tests/test.js @@ -24,9 +24,6 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; : new html2canvas.CanvasRenderer(); (function($) { $.fn.html2canvas = function(options) { - if (options && options.profile && window.console && window.console.profile && !CI) { - window.console.profile(); - } var date = new Date(), $message = null, timeoutTimer = false, @@ -52,9 +49,6 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; var $canvas = $(canvas), finishTime = new Date(); - if (options && options.profile && window.console && window.console.profileEnd) { - window.console.profileEnd(); - } $canvas .addClass('html2canvas') .css({ @@ -153,7 +147,6 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; $.extend( { logging: true, - profile: true, proxy: 'http://localhost:8082', useCORS: false, removeContainer: false, From af09280c38d1a5b3b59f46766c28b7cf4e7a147f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 22:21:23 +0800 Subject: [PATCH 063/377] Draw checkboxes as vector path --- src/Input.js | 58 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/src/Input.js b/src/Input.js index 4e6da361f..1e7598657 100644 --- a/src/Input.js +++ b/src/Input.js @@ -7,6 +7,7 @@ import {BACKGROUND_CLIP, BACKGROUND_ORIGIN} from './parsing/background'; import {BORDER_STYLE} from './parsing/border'; import Circle from './drawing/Circle'; +import Vector from './drawing/Vector'; import Color from './Color'; import Length from './Length'; import {Bounds} from './Bounds'; @@ -55,21 +56,38 @@ export const inlineInputElement = (node: HTMLInputElement, container: NodeContai if (node.type === 'radio' || node.type === 'checkbox') { if (node.checked) { const size = Math.min(container.bounds.width, container.bounds.height); - // TODO draw checkmark with Path Array - container.style.font.fontSize = `${size - 3}px`; container.childNodes.push( node.type === 'checkbox' - ? new TextContainer('\u2714', container, [ - new TextBounds( - '\u2714', - new Bounds( - container.bounds.left + size / 6, - container.bounds.top + size - 1, - 0, - 0 - ) + ? [ + new Vector( + container.bounds.left + size * 0.39363, + container.bounds.top + size * 0.79 + ), + new Vector( + container.bounds.left + size * 0.16, + container.bounds.top + size * 0.5549 + ), + new Vector( + container.bounds.left + size * 0.27347, + container.bounds.top + size * 0.44071 + ), + new Vector( + container.bounds.left + size * 0.39694, + container.bounds.top + size * 0.5649 + ), + new Vector( + container.bounds.left + size * 0.72983, + container.bounds.top + size * 0.23 + ), + new Vector( + container.bounds.left + size * 0.84, + container.bounds.top + size * 0.34085 + ), + new Vector( + container.bounds.left + size * 0.39363, + container.bounds.top + size * 0.79 ) - ]) + ] : new Circle( container.bounds.left + size / 4, container.bounds.top + size / 4, @@ -78,7 +96,7 @@ export const inlineInputElement = (node: HTMLInputElement, container: NodeContai ); } } else { - inlineFormElement(getInputValue(node), node, container); + inlineFormElement(getInputValue(node), node, container, false); } }; @@ -86,12 +104,12 @@ export const inlineTextAreaElement = ( node: HTMLTextAreaElement, container: NodeContainer ): void => { - inlineFormElement(node.value, node, container); + inlineFormElement(node.value, node, container, true); }; export const inlineSelectElement = (node: HTMLSelectElement, container: NodeContainer): void => { const option = node.options[node.selectedIndex || 0]; - inlineFormElement(option ? option.text || '' : '', node, container); + inlineFormElement(option ? option.text || '' : '', node, container, false); }; export const reformatInputBounds = (bounds: Bounds): Bounds => { @@ -105,7 +123,12 @@ export const reformatInputBounds = (bounds: Bounds): Bounds => { return bounds; }; -const inlineFormElement = (value: string, node: HTMLElement, container: NodeContainer): void => { +const inlineFormElement = ( + value: string, + node: HTMLElement, + container: NodeContainer, + allowLinebreak: boolean +): void => { const body = node.ownerDocument.body; if (value.length > 0 && body) { const wrapper = node.ownerDocument.createElement('html2canvaswrapper'); @@ -113,6 +136,9 @@ const inlineFormElement = (value: string, node: HTMLElement, container: NodeCont wrapper.style.position = 'fixed'; wrapper.style.left = `${container.bounds.left}px`; wrapper.style.top = `${container.bounds.top}px`; + if (!allowLinebreak) { + wrapper.style.whiteSpace = 'nowrap'; + } const text = node.ownerDocument.createTextNode(value); wrapper.appendChild(text); body.appendChild(wrapper); From 31a9f913ed333f3fdceeb7bc0a38f40f4f9bec7c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 22:22:10 +0800 Subject: [PATCH 064/377] Allow tests to be ignored by specific browsers --- scripts/create-reftest-list.js | 20 +- scripts/create-reftests.js | 2 +- tests/reftests/ignore.txt | 5 + tests/testrunner.js | 443 ++++++++++++++++++--------------- 4 files changed, 264 insertions(+), 206 deletions(-) create mode 100644 tests/reftests/ignore.txt diff --git a/scripts/create-reftest-list.js b/scripts/create-reftest-list.js index 0e4a487bd..308ab6417 100644 --- a/scripts/create-reftest-list.js +++ b/scripts/create-reftest-list.js @@ -7,10 +7,16 @@ const slash = require('slash'); const parseRefTest = require('./parse-reftest'); const outputPath = 'tests/reftests.js'; -const ignoredTests = [ - '/tests/reftests/background/radial-gradient.html', - '/tests/reftests/text/chinese.html' -]; +const ignoredTests = fs + .readFileSync(path.resolve(__dirname, `../tests/reftests/ignore.txt`)) + .toString() + .split('\n') + .filter(l => l.length) + .reduce((acc, l) => { + const m = l.match(/^(\[(.+)\])?(.+)$/i); + acc[m[3]] = m[2] ? m[2].split(',') : []; + return acc; + }, {}); glob( '../tests/reftests/**/*.html', @@ -27,8 +33,7 @@ glob( const testList = files.reduce((acc, filename) => { const refTestFilename = path.resolve(__dirname, filename.replace(/\.html$/, '.txt')); const name = `/${slash(path.relative('../', filename))}`; - if (ignoredTests.indexOf(name) === -1) { - console.log(name); + if (!Array.isArray(ignoredTests[name]) || ignoredTests[name].length) { acc[name] = fs.existsSync(refTestFilename) ? parseRefTest(fs.readFileSync(refTestFilename).toString()) : null; @@ -36,12 +41,11 @@ glob( console.log(`IGNORED: ${name}`); } - return acc; }, {}); fs.writeFileSync( path.resolve(__dirname, `../${outputPath}`), - `module.exports = ${JSON.stringify(testList, null, 4)};` + `module.exports = ${JSON.stringify({testList, ignoredTests}, null, 4)};` ); console.log(`${outputPath} updated`); diff --git a/scripts/create-reftests.js b/scripts/create-reftests.js index 9d38f8b66..168529a22 100644 --- a/scripts/create-reftests.js +++ b/scripts/create-reftests.js @@ -10,7 +10,7 @@ app.use('/', express.static(path.resolve(__dirname, '../'))); const listener = app.listen(0, () => { async function run() { const chromeless = new Chromeless(); - const tests = Object.keys(reftests); + const tests = Object.keys(reftests.testList); let i = 0; while (tests[i]) { const filename = tests[i]; diff --git a/tests/reftests/ignore.txt b/tests/reftests/ignore.txt new file mode 100644 index 000000000..f037e3336 --- /dev/null +++ b/tests/reftests/ignore.txt @@ -0,0 +1,5 @@ +/tests/reftests/background/radial-gradient.html +/tests/reftests/text/chinese.html +[Edge]/tests/reftests/acid2.html +[Edge]/tests/reftests/pseudoelements.html +[Edge]/tests/reftests/text/multiple.html diff --git a/tests/testrunner.js b/tests/testrunner.js index 64f3ec602..ffa95395c 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -1,8 +1,10 @@ import {expect} from 'chai'; import parseRefTest from '../scripts/parse-reftest'; import reftests from './reftests'; +import querystring from 'querystring'; const DOWNLOAD_REFTESTS = true; +const query = querystring.parse(location.search.replace(/^\?/, '')); const downloadResult = (filename, data) => { const downloadUrl = URL.createObjectURL(new Blob([data], {type: 'text/plain'})); @@ -32,7 +34,7 @@ const assertPath = (result, expected, desc) => { case 'Circle': expect(r.x).to.be.closeTo(e.x, 10, `${desc} Circle #${i + 1} x`); expect(r.y).to.be.closeTo(e.y, 10, `${desc} Circle #${i + 1} y`); - expect(r.r).to.equal(e.r, `${desc} Circle #${i + 1} r`); + expect(r.r).to.be.closeTo(e.r, 5, `${desc} Circle #${i + 1} r`); break; case 'Vector': expect(r.x).to.be.closeTo(e.x, 10, `${desc} vector #${i + 1} x`); @@ -67,223 +69,270 @@ const assertPath = (result, expected, desc) => { ); }); } else { - Object.keys(reftests).forEach(url => { - describe(url, function() { - this.timeout(30000); - var windowWidth = 800; - var windowHeight = 600; - var testContainer = document.createElement('iframe'); - var REFTEST = reftests[url]; - testContainer.width = windowWidth; - testContainer.height = windowHeight; - testContainer.style.visibility = 'hidden'; - testContainer.style.position = 'fixed'; - testContainer.style.left = '10000px'; + Object.keys(reftests.testList) + .filter(test => { + return ( + !Array.isArray(reftests.ignoredTests[test]) || + reftests.ignoredTests[test].indexOf(query.browser) === -1 + ); + }) + .forEach(url => { + describe(url, function() { + this.timeout(30000); + const windowWidth = 800; + const windowHeight = 600; + const testContainer = document.createElement('iframe'); + const REFTEST = reftests.testList[url]; + testContainer.width = windowWidth; + testContainer.height = windowHeight; + testContainer.style.visibility = 'hidden'; + testContainer.style.position = 'fixed'; + testContainer.style.left = '10000px'; - before(done => { - testContainer.onload = () => done(); + before(done => { + testContainer.onload = () => done(); - testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); - if (hasHistoryApi) { - // Chrome does not resolve relative background urls correctly inside of a nested iframe - history.replaceState(null, '', url); - } + testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); + if (hasHistoryApi) { + // Chrome does not resolve relative background urls correctly inside of a nested iframe + history.replaceState(null, '', url); + } - document.body.appendChild(testContainer); - }); - after(() => { - if (hasHistoryApi) { - history.replaceState(null, '', testRunnerUrl); - } - document.body.removeChild(testContainer); - }); - it('Should render untainted canvas', () => { - return testContainer.contentWindow - .html2canvas(testContainer.contentWindow.document.documentElement, { - removeContainer: true, - target: [ - new testContainer.contentWindow.html2canvas.CanvasRenderer(), - new testContainer.contentWindow.RefTestRenderer() - ] - }) - .then(([canvas, result]) => { - try { - canvas - .getContext('2d') - .getImageData(0, 0, canvas.width, canvas.height); - } catch (e) { - return Promise.reject('Canvas is tainted'); - } + document.body.appendChild(testContainer); + }); + after(() => { + if (hasHistoryApi) { + history.replaceState(null, '', testRunnerUrl); + } + document.body.removeChild(testContainer); + }); + it('Should render untainted canvas', () => { + return testContainer.contentWindow + .html2canvas(testContainer.contentWindow.document.documentElement, { + removeContainer: true, + target: [ + new testContainer.contentWindow.html2canvas.CanvasRenderer(), + new testContainer.contentWindow.RefTestRenderer() + ] + }) + .then(([canvas, result]) => { + try { + canvas + .getContext('2d') + .getImageData(0, 0, canvas.width, canvas.height); + } catch (e) { + return Promise.reject('Canvas is tainted'); + } - const delta = 10; + const delta = 10; - if (REFTEST) { - const RESULTS = parseRefTest(result); - REFTEST.forEach(({action, line, ...args}, i) => { - const RESULT = RESULTS[i]; - expect(RESULT.action).to.equal(action, `Line ${line}`); + if (REFTEST) { + const RESULTS = parseRefTest(result); + REFTEST.forEach(({action, line, ...args}, i) => { + const RESULT = RESULTS[i]; + expect(RESULT.action).to.equal(action, `Line ${line}`); - const desc = `Line ${line} ${action}`; + const desc = `Line ${line} ${action}`; - switch (action) { - case 'Window': - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - delta, - `${desc} height` - ); - break; + switch (action) { + case 'Window': + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.be.closeTo( + args.height, + delta, + `${desc} height` + ); + break; - case 'Rectangle': - expect(RESULT.x).to.equal(args.x, `${desc} x`); - expect(RESULT.y).to.equal(args.y, `${desc} y`); - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - delta, - `${desc} height` - ); - break; + case 'Rectangle': + expect(RESULT.x).to.equal(args.x, `${desc} x`); + expect(RESULT.y).to.equal(args.y, `${desc} y`); + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.be.closeTo( + args.height, + delta, + `${desc} height` + ); + break; - case 'Fill': - expect(RESULT.color).to.equal( - args.color, - `${desc} color` - ); - break; + case 'Fill': + expect(RESULT.color).to.equal( + args.color, + `${desc} color` + ); + break; - case 'Opacity': - expect(RESULT.opacity).to.equal( - args.opacity, - `${desc} opacity` - ); - break; + case 'Opacity': + expect(RESULT.opacity).to.equal( + args.opacity, + `${desc} opacity` + ); + break; - case 'Text': - expect(RESULT.font).to.equal(args.font, `${desc} font`); - break; + case 'Text': + expect(RESULT.font).to.equal( + args.font, + `${desc} font` + ); + break; - case 'T': - expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); - expect(RESULT.text).to.equal(args.text, `${desc} text`); - break; + case 'T': + expect(RESULT.x).to.be.closeTo( + args.x, + 10, + `${desc} x` + ); + expect(RESULT.y).to.be.closeTo( + args.y, + 10, + `${desc} y` + ); + expect(RESULT.text).to.equal( + args.text, + `${desc} text` + ); + break; - case 'Transform': - expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); - expect(RESULT.matrix).to.equal( - args.matrix, - `${desc} matrix` - ); - break; + case 'Transform': + expect(RESULT.x).to.be.closeTo( + args.x, + 10, + `${desc} x` + ); + expect(RESULT.y).to.be.closeTo( + args.y, + 10, + `${desc} y` + ); + expect(RESULT.matrix).to.equal( + args.matrix, + `${desc} matrix` + ); + break; - case 'Repeat': - expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); - expect(RESULT.width).to.be.closeTo( - args.width, - 3, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - 3, - `${desc} height` - ); - expect(RESULT.imageSrc).to.equal( - args.imageSrc, - `${desc} imageSrc` - ); - assertPath(RESULT.path, args.path, desc); - break; + case 'Repeat': + expect(RESULT.x).to.be.closeTo( + args.x, + 10, + `${desc} x` + ); + expect(RESULT.y).to.be.closeTo( + args.y, + 10, + `${desc} y` + ); + expect(RESULT.width).to.be.closeTo( + args.width, + 3, + `${desc} width` + ); + expect(RESULT.height).to.be.closeTo( + args.height, + 3, + `${desc} height` + ); + expect(RESULT.imageSrc).to.equal( + args.imageSrc, + `${desc} imageSrc` + ); + assertPath(RESULT.path, args.path, desc); + break; - case 'Gradient': - expect(RESULT.x).to.be.closeTo(args.x, 10, `${desc} x`); - expect(RESULT.y).to.be.closeTo(args.y, 10, `${desc} y`); - expect(RESULT.x0).to.be.closeTo( - args.x0, - 5, - `${desc} x0` - ); - expect(RESULT.y0).to.be.closeTo( - args.y0, - 5, - `${desc} y0` - ); - expect(RESULT.x1).to.be.closeTo( - args.x1, - 5, - `${desc} x1` - ); - expect(RESULT.y1).to.be.closeTo( - args.y1, - 5, - `${desc} y1` - ); - expect(RESULT.stops).to.equal( - args.stops, - `${desc} stops` - ); - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.equal( - args.height, - `${desc} height` - ); + case 'Gradient': + expect(RESULT.x).to.be.closeTo( + args.x, + 10, + `${desc} x` + ); + expect(RESULT.y).to.be.closeTo( + args.y, + 10, + `${desc} y` + ); + expect(RESULT.x0).to.be.closeTo( + args.x0, + 5, + `${desc} x0` + ); + expect(RESULT.y0).to.be.closeTo( + args.y0, + 5, + `${desc} y0` + ); + expect(RESULT.x1).to.be.closeTo( + args.x1, + 5, + `${desc} x1` + ); + expect(RESULT.y1).to.be.closeTo( + args.y1, + 5, + `${desc} y1` + ); + expect(RESULT.stops).to.equal( + args.stops, + `${desc} stops` + ); + expect(RESULT.width).to.equal( + args.width, + `${desc} width` + ); + expect(RESULT.height).to.equal( + args.height, + `${desc} height` + ); - break; + break; - case 'Draw image': - expect(RESULT.imageSrc).to.equal( - args.imageSrc, - `${desc} stops` - ); - expect(RESULT.sx).to.equal(args.sx, `${desc} sx`); - expect(RESULT.sy).to.equal(args.sy, `${desc} sy`); - expect(RESULT.dx).to.equal(args.dx, `${desc} dx`); - expect(RESULT.dy).to.equal(args.dy, `${desc} dy`); - expect(RESULT.sw).to.equal(args.sw, `${desc} sw`); - expect(RESULT.sh).to.equal(args.sh, `${desc} sh`); - expect(RESULT.dw).to.equal(args.dw, `${desc} dw`); - expect(RESULT.dh).to.equal(args.dh, `${desc} dh`); - break; + case 'Draw image': + expect(RESULT.imageSrc).to.equal( + args.imageSrc, + `${desc} stops` + ); + expect(RESULT.sx).to.equal(args.sx, `${desc} sx`); + expect(RESULT.sy).to.equal(args.sy, `${desc} sy`); + expect(RESULT.dx).to.equal(args.dx, `${desc} dx`); + expect(RESULT.dy).to.equal(args.dy, `${desc} dy`); + expect(RESULT.sw).to.equal(args.sw, `${desc} sw`); + expect(RESULT.sh).to.equal(args.sh, `${desc} sh`); + expect(RESULT.dw).to.equal(args.dw, `${desc} dw`); + expect(RESULT.dh).to.equal(args.dh, `${desc} dh`); + break; - case 'Clip': - assertPath(RESULT.path, args.path, desc); - break; + case 'Clip': + assertPath(RESULT.path, args.path, desc); + break; - case 'Shape': - expect(RESULT.color).to.equal( - args.color, - `${desc} color` - ); - assertPath(RESULT.path, args.path, desc); - break; + case 'Shape': + expect(RESULT.color).to.equal( + args.color, + `${desc} color` + ); + assertPath(RESULT.path, args.path, desc); + break; - default: - console.log(RESULT); - throw new Error(`Unrecognized action ${action}`); - } - }); - } else if (DOWNLOAD_REFTESTS) { - downloadResult( - url.slice(url.lastIndexOf('/') + 1).replace(/\.html$/i, '.txt'), - result - ); - } - }); + default: + console.log(RESULT); + throw new Error(`Unrecognized action ${action}`); + } + }); + } else if (DOWNLOAD_REFTESTS) { + downloadResult( + url + .slice(url.lastIndexOf('/') + 1) + .replace(/\.html$/i, '.txt'), + result + ); + } + }); + }); }); }); - }); } })(); From 96cde64c6e67ca7557bf0e90681d06c2627a8d2a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 22:22:39 +0800 Subject: [PATCH 065/377] Normalize more tests --- src/renderer/RefTestRenderer.js | 2 +- tests/reftests/border/inset.txt | 3 +- tests/reftests/clip.txt | 50 +- tests/reftests/forms.html | 17 +- tests/reftests/forms.txt | 558 ++++++++++-------- tests/reftests/images/base.txt | 4 +- tests/reftests/images/cross-origin.txt | 2 +- tests/reftests/images/empty.txt | 4 +- tests/reftests/images/svg/base64.txt | 2 +- tests/reftests/images/svg/external.txt | 2 +- tests/reftests/images/svg/inline.txt | 2 +- tests/reftests/images/svg/node.txt | 2 +- tests/reftests/list/decimal-leading-zero.html | 2 +- tests/reftests/list/decimal-leading-zero.txt | 400 ++++++------- tests/reftests/list/decimal.html | 2 +- tests/reftests/list/decimal.txt | 400 ++++++------- tests/reftests/list/lower-alpha.html | 2 +- tests/reftests/list/lower-alpha.txt | 400 ++++++------- tests/reftests/list/upper-roman.html | 2 +- tests/reftests/list/upper-roman.txt | 404 ++++++------- .../reftests/overflow/overflow-transform.txt | 2 +- tests/reftests/overflow/overflow.txt | 50 +- tests/reftests/pseudoelements.txt | 36 +- tests/reftests/text/child-textnodes.txt | 10 +- tests/reftests/text/fontawesome.txt | 46 +- tests/reftests/text/linethrough.txt | 88 +-- tests/reftests/text/multiple.txt | 88 +-- tests/reftests/text/shadow.txt | 18 +- tests/reftests/text/text.txt | 104 ++-- tests/reftests/text/underline-lineheight.txt | 88 +-- tests/reftests/text/underline.txt | 32 +- tests/reftests/transform/nested.txt | 12 +- tests/reftests/transform/translate.txt | 10 +- tests/reftests/visibility.txt | 4 +- tests/reftests/zindex/z-index1.txt | 24 +- tests/reftests/zindex/z-index10.html | 9 +- tests/reftests/zindex/z-index10.txt | 36 +- tests/reftests/zindex/z-index11.html | 6 +- tests/reftests/zindex/z-index11.txt | 12 +- tests/reftests/zindex/z-index12.txt | 4 +- tests/reftests/zindex/z-index13.txt | 2 +- tests/reftests/zindex/z-index14.txt | 2 +- tests/reftests/zindex/z-index15.txt | 2 +- tests/reftests/zindex/z-index16.txt | 6 +- tests/reftests/zindex/z-index17.txt | 2 +- tests/reftests/zindex/z-index18.txt | 24 +- tests/reftests/zindex/z-index2.txt | 30 +- tests/reftests/zindex/z-index3.txt | 38 +- tests/reftests/zindex/z-index4.txt | 4 +- tests/reftests/zindex/z-index5.txt | 4 +- tests/reftests/zindex/z-index6.txt | 6 +- tests/reftests/zindex/z-index7.txt | 20 +- tests/reftests/zindex/z-index8.txt | 20 +- tests/reftests/zindex/z-index9.txt | 30 +- 54 files changed, 1590 insertions(+), 1539 deletions(-) diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js index b00aca308..48cd3c29f 100644 --- a/src/renderer/RefTestRenderer.js +++ b/src/renderer/RefTestRenderer.js @@ -156,7 +156,7 @@ class RefTestRenderer implements RenderTarget { font.fontStyle, font.fontVariant, font.fontWeight, - font.fontSize, + parseInt(font.fontSize, 10), font.fontFamily.replace(/"/g, '') ] .join(' ') diff --git a/tests/reftests/border/inset.txt b/tests/reftests/border/inset.txt index f3ed09119..f497479c9 100644 --- a/tests/reftests/border/inset.txt +++ b/tests/reftests/border/inset.txt @@ -36,4 +36,5 @@ Clip: Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 308, y: 68 Shape: rgb(0,0,0) Path (Vector(x: 8, y: 568) > Vector(x: 308, y: 568) > Vector(x: 258, y: 618) > Vector(x: 58, y: 618)) Shape: rgb(0,0,0) Path (Vector(x: 308, y: 568) > Vector(x: 308, y: 685) > Vector(x: 258, y: 635) > Vector(x: 258, y: 618)) Shape: rgb(0,0,0) Path (Vector(x: 308, y: 685) > Vector(x: 8, y: 685) > Vector(x: 58, y: 635) > Vector(x: 258, y: 635)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 685) > Vector(x: 8, y: 568) > Vector(x: 58, y: 618) > Vector(x: 58, y: 635)) \ No newline at end of file +Shape: rgb(0,0,0) Path (Vector(x: 8, y: 685) > Vector(x: 8, y: 568) > Vector(x: 58, y: 618) > Vector(x: 58, y: 635)) +Clip: Path (Vector(x: 58, y: 618) > Vector(x: 258, y: 618) > Vector(x: 258, y: 635) > Vector(x: 58, y: 635)) \ No newline at end of file diff --git a/tests/reftests/clip.txt b/tests/reftests/clip.txt index 37368e2fe..e576968b1 100644 --- a/tests/reftests/clip.txt +++ b/tests/reftests/clip.txt @@ -7,30 +7,30 @@ Shape: rgb(0,0,255) Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: Shape: rgb(0,0,255) Path (Vector(x: 792, y: 8) > Vector(x: 792, y: 104) > Vector(x: 787, y: 99) > Vector(x: 787, y: 13)) Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 8, y: 104) > Vector(x: 13, y: 99) > Vector(x: 787, y: 99)) Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 8, y: 8) > Vector(x: 13, y: 13) > Vector(x: 13, y: 99)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 13]: Some [59, 13]: inline [101, 13]: text -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [302, 13]: followed [365, 13]: by [387, 13]: more [427, 13]: inline [469, 13]: text. -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 81]: Then [54, 81]: more [95, 81]: inline [137, 81]: text. Clip: Path (Vector(x: 13, y: 47) > Vector(x: 787, y: 47) > Vector(x: 787, y: 65) > Vector(x: 13, y: 65)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 47]: Then [54, 47]: a [67, 47]: block [109, 47]: level [147, 47]: element. -Text: rgb(0,0,255) normal normal 400 16px Arial +Text: rgb(0,0,255) normal normal 400 16 Arial [131, 13]: followed [195, 13]: by [216, 13]: text @@ -42,30 +42,30 @@ Shape: rgb(0,0,255) Path (Vector(x: 8, y: 104) > Vector(x: 792, y: 104) > Vector Shape: rgb(0,0,255) Path (Vector(x: 792, y: 104) > Vector(x: 792, y: 200) > Vector(x: 787, y: 195) > Vector(x: 787, y: 109)) Shape: rgb(0,0,255) Path (Vector(x: 792, y: 200) > Vector(x: 8, y: 200) > Vector(x: 13, y: 195) > Vector(x: 787, y: 195)) Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 8, y: 104) > Vector(x: 13, y: 109) > Vector(x: 13, y: 195)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 109]: Some [59, 109]: inline [101, 109]: text -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [302, 109]: followed [365, 109]: by [387, 109]: more [427, 109]: inline [469, 109]: text. -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 177]: Then [54, 177]: more [95, 177]: inline [137, 177]: text. Clip: Path (Vector(x: 13, y: 143) > Vector(x: 787, y: 143) > Vector(x: 787, y: 161) > Vector(x: 13, y: 161)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 143]: Then [54, 143]: a [67, 143]: block [109, 143]: level [147, 143]: element. -Text: rgb(0,0,255) normal normal 400 16px Arial +Text: rgb(0,0,255) normal normal 400 16 Arial [131, 109]: followed [195, 109]: by [216, 109]: text @@ -77,30 +77,30 @@ Shape: rgb(0,0,255) Path (Vector(x: 8, y: 200) > Vector(x: 504, y: 200) > Vector Shape: rgb(0,0,255) Path (Vector(x: 504, y: 200) > Vector(x: 504, y: 296) > Vector(x: 499, y: 291) > Vector(x: 499, y: 205)) Shape: rgb(0,0,255) Path (Vector(x: 504, y: 296) > Vector(x: 8, y: 296) > Vector(x: 13, y: 291) > Vector(x: 499, y: 291)) Shape: rgb(0,0,255) Path (Vector(x: 8, y: 296) > Vector(x: 8, y: 200) > Vector(x: 13, y: 205) > Vector(x: 13, y: 291)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 205]: Some [59, 205]: inline [101, 205]: text -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [302, 205]: followed [365, 205]: by [387, 205]: more [427, 205]: inline [469, 205]: text. -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 273]: Then [54, 273]: more [95, 273]: inline [137, 273]: text. Clip: Path (Vector(x: 13, y: 239) > Vector(x: 499, y: 239) > Vector(x: 499, y: 257) > Vector(x: 13, y: 257)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 239]: Then [54, 239]: a [67, 239]: block [109, 239]: level [147, 239]: element. -Text: rgb(0,0,255) normal normal 400 16px Arial +Text: rgb(0,0,255) normal normal 400 16 Arial [131, 205]: followed [195, 205]: by [216, 205]: text @@ -112,30 +112,30 @@ Shape: rgb(0,0,255) Path (Vector(x: 500, y: 250) > Vector(x: 800, y: 250) > Vect Shape: rgb(0,0,255) Path (Vector(x: 800, y: 250) > Vector(x: 800, y: 364) > Vector(x: 795, y: 359) > Vector(x: 795, y: 255)) Shape: rgb(0,0,255) Path (Vector(x: 800, y: 364) > Vector(x: 500, y: 364) > Vector(x: 505, y: 359) > Vector(x: 795, y: 359)) Shape: rgb(0,0,255) Path (Vector(x: 500, y: 364) > Vector(x: 500, y: 250) > Vector(x: 505, y: 255) > Vector(x: 505, y: 359)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [505, 255]: Some [551, 255]: inline [593, 255]: text -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [505, 273]: followed [568, 273]: by [589, 273]: more [630, 273]: inline [672, 273]: text. -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [505, 341]: Then [546, 341]: more [587, 341]: inline [629, 341]: text. Clip: Path (Vector(x: 505, y: 307) > Vector(x: 795, y: 307) > Vector(x: 795, y: 325) > Vector(x: 505, y: 325)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [505, 307]: Then [546, 307]: a [559, 307]: block [601, 307]: level [639, 307]: element. -Text: rgb(0,0,255) normal normal 400 16px Arial +Text: rgb(0,0,255) normal normal 400 16 Arial [623, 255]: followed [687, 255]: by [708, 255]: text @@ -147,30 +147,30 @@ Shape: rgb(0,0,255) Path (Vector(x: 8, y: 500) > Vector(x: 504, y: 500) > Vector Shape: rgb(0,0,255) Path (Vector(x: 504, y: 500) > Vector(x: 504, y: 596) > Vector(x: 499, y: 591) > Vector(x: 499, y: 505)) Shape: rgb(0,0,255) Path (Vector(x: 504, y: 596) > Vector(x: 8, y: 596) > Vector(x: 13, y: 591) > Vector(x: 499, y: 591)) Shape: rgb(0,0,255) Path (Vector(x: 8, y: 596) > Vector(x: 8, y: 500) > Vector(x: 13, y: 505) > Vector(x: 13, y: 591)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 505]: Some [59, 505]: inline [101, 505]: text -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [302, 505]: followed [365, 505]: by [387, 505]: more [427, 505]: inline [469, 505]: text. -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 573]: Then [54, 573]: more [95, 573]: inline [137, 573]: text. Clip: Path (Vector(x: 13, y: 539) > Vector(x: 499, y: 539) > Vector(x: 499, y: 557) > Vector(x: 13, y: 557)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [13, 539]: Then [54, 539]: a [67, 539]: block [109, 539]: level [147, 539]: element. -Text: rgb(0,0,255) normal normal 400 16px Arial +Text: rgb(0,0,255) normal normal 400 16 Arial [131, 505]: followed [195, 505]: by [216, 505]: text diff --git a/tests/reftests/forms.html b/tests/reftests/forms.html index 3778b35ed..53c9b654f 100644 --- a/tests/reftests/forms.html +++ b/tests/reftests/forms.html @@ -5,17 +5,28 @@ @@ -80,6 +91,6 @@ -
      +
      diff --git a/tests/reftests/forms.txt b/tests/reftests/forms.txt index b7f5abd15..0b52a2d0f 100644 --- a/tests/reftests/forms.txt +++ b/tests/reftests/forms.txt @@ -1,294 +1,328 @@ -Window: [800, 739] -Rectangle: [0, 0, 800, 739] rgba(0,0,0,0) +Window: [800, 917] +Rectangle: [0, 0, 800, 917] rgba(0,0,0,0) Opacity: 1 -Clip: Path (Vector(x: 8, y: 21) > Vector(x: 166, y: 21) > Vector(x: 166, y: 49) > Vector(x: 8, y: 49)) +Clip: Path (BezierCurve(x0: 0, y0: 908, x1: 3, y1: 905, cx0: 0, cy0: 907, cx1: 1, cy1: 905) > BezierCurve(x0: 9, y0: 905, x1: 12, y1: 908, cx0: 11, cy0: 905, cx1: 12, cy1: 907) > BezierCurve(x0: 12, y0: 914, x1: 9, y1: 917, cx0: 12, cy0: 916, cx1: 11, cy1: 917) > BezierCurve(x0: 3, y0: 917, x1: 0, y1: 914, cx0: 1, cy0: 917, cx1: 0, cy1: 916)) + Fill: rgb(222,222,222) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 1, y0: 906, x1: 3, y1: 905, cx0: 1, cy0: 906, cx1: 2, cy1: 905) > BezierCurve(x0: 9, y0: 905, x1: 11, y1: 906, cx0: 10, cy0: 905, cx1: 11, cy1: 906) > BezierCurve(x0: 10, y0: 907, x1: 9, y1: 906, cx0: 10, cy0: 906, cx1: 10, cy1: 906) > BezierCurve(x0: 3, y0: 906, x1: 2, y1: 907, cx0: 2, cy0: 906, cx1: 2, cy1: 906)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 906, x1: 12, y1: 908, cx0: 12, cy0: 907, cx1: 12, cy1: 907) > BezierCurve(x0: 12, y0: 914, x1: 11, y1: 916, cx0: 12, cy0: 915, cx1: 12, cy1: 916) > BezierCurve(x0: 10, y0: 916, x1: 11, y1: 914, cx0: 11, cy0: 915, cx1: 11, cy1: 915) > BezierCurve(x0: 11, y0: 908, x1: 10, y1: 907, cx0: 11, cy0: 908, cx1: 11, cy1: 907)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 916, x1: 9, y1: 917, cx0: 11, cy0: 917, cx1: 10, cy1: 917) > BezierCurve(x0: 3, y0: 917, x1: 1, y1: 916, cx0: 2, cy0: 917, cx1: 1, cy1: 917) > BezierCurve(x0: 2, y0: 916, x1: 3, y1: 916, cx0: 2, cy0: 916, cx1: 2, cy1: 916) > BezierCurve(x0: 9, y0: 916, x1: 10, y1: 916, cx0: 10, cy0: 916, cx1: 10, cy1: 916)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 1, y0: 916, x1: 0, y1: 914, cx0: 0, cy0: 916, cx1: 0, cy1: 915) > BezierCurve(x0: 0, y0: 908, x1: 1, y1: 906, cx0: 0, cy0: 907, cx1: 0, cy1: 907) > BezierCurve(x0: 2, y0: 907, x1: 1, y1: 908, cx0: 1, cy0: 907, cx1: 1, cy1: 908) > BezierCurve(x0: 1, y0: 914, x1: 2, y1: 916, cx0: 1, cy0: 915, cx1: 1, cy1: 915)) +Clip: Path (Vector(x: 0, y: 13) > Vector(x: 158, y: 13) > Vector(x: 158, y: 41) > Vector(x: 0, y: 41)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 13) > Vector(x: 158, y: 13) > Vector(x: 156, y: 15) > Vector(x: 2, y: 15)) +Shape: rgb(0,0,0) Path (Vector(x: 158, y: 13) > Vector(x: 158, y: 41) > Vector(x: 156, y: 39) > Vector(x: 156, y: 15)) +Shape: rgb(0,0,0) Path (Vector(x: 158, y: 41) > Vector(x: 0, y: 41) > Vector(x: 2, y: 39) > Vector(x: 156, y: 39)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 41) > Vector(x: 0, y: 13) > Vector(x: 2, y: 15) > Vector(x: 2, y: 39)) +Clip: Path (Vector(x: 2, y: 15) > Vector(x: 156, y: 15) > Vector(x: 156, y: 39) > Vector(x: 2, y: 39)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [4, 17]: textbox +Clip: Path (Vector(x: 162, y: 13) > Vector(x: 320, y: 13) > Vector(x: 320, y: 41) > Vector(x: 162, y: 41)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 162, y: 13) > Vector(x: 320, y: 13) > Vector(x: 318, y: 15) > Vector(x: 164, y: 15)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 13) > Vector(x: 320, y: 41) > Vector(x: 318, y: 39) > Vector(x: 318, y: 15)) +Shape: rgb(0,0,0) Path (Vector(x: 320, y: 41) > Vector(x: 162, y: 41) > Vector(x: 164, y: 39) > Vector(x: 318, y: 39)) +Shape: rgb(0,0,0) Path (Vector(x: 162, y: 41) > Vector(x: 162, y: 13) > Vector(x: 164, y: 15) > Vector(x: 164, y: 39)) +Clip: Path (Vector(x: 164, y: 15) > Vector(x: 318, y: 15) > Vector(x: 318, y: 39) > Vector(x: 164, y: 39)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [166, 17]: • + [172, 17]: • + [177, 17]: • + [183, 17]: • + [188, 17]: • + [194, 17]: • + [200, 17]: • +Clip: Path (Vector(x: 324, y: 10) > Vector(x: 488, y: 10) > Vector(x: 488, y: 44) > Vector(x: 324, y: 44)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,128) Path (Vector(x: 324, y: 10) > Vector(x: 488, y: 10) > Vector(x: 483, y: 15) > Vector(x: 329, y: 15)) +Shape: rgb(0,0,128) Path (Vector(x: 488, y: 10) > Vector(x: 488, y: 44) > Vector(x: 483, y: 39) > Vector(x: 483, y: 15)) +Shape: rgb(0,0,128) Path (Vector(x: 488, y: 44) > Vector(x: 324, y: 44) > Vector(x: 329, y: 39) > Vector(x: 483, y: 39)) +Shape: rgb(0,0,128) Path (Vector(x: 324, y: 44) > Vector(x: 324, y: 10) > Vector(x: 329, y: 15) > Vector(x: 329, y: 39)) +Clip: Path (Vector(x: 329, y: 15) > Vector(x: 483, y: 15) > Vector(x: 483, y: 39) > Vector(x: 329, y: 39)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [331, 17]: textbox +Clip: Path (Vector(x: 492, y: 0) > Vector(x: 656, y: 0) > Vector(x: 656, y: 54) > Vector(x: 492, y: 54)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 21) > Vector(x: 166, y: 21) > Vector(x: 164, y: 23) > Vector(x: 10, y: 23)) -Shape: rgb(0,0,0) Path (Vector(x: 166, y: 21) > Vector(x: 166, y: 49) > Vector(x: 164, y: 47) > Vector(x: 164, y: 23)) -Shape: rgb(0,0,0) Path (Vector(x: 166, y: 49) > Vector(x: 8, y: 49) > Vector(x: 10, y: 47) > Vector(x: 164, y: 47)) -Shape: rgb(0,0,0) Path (Vector(x: 8, y: 49) > Vector(x: 8, y: 21) > Vector(x: 10, y: 23) > Vector(x: 10, y: 47)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [12, 25]: textbox -Clip: Path (Vector(x: 170, y: 21) > Vector(x: 328, y: 21) > Vector(x: 328, y: 49) > Vector(x: 170, y: 49)) +Shape: rgb(0,0,128) Path (Vector(x: 492, y: 0) > Vector(x: 656, y: 0) > Vector(x: 651, y: 5) > Vector(x: 497, y: 5)) +Shape: rgb(0,0,128) Path (Vector(x: 656, y: 0) > Vector(x: 656, y: 54) > Vector(x: 651, y: 49) > Vector(x: 651, y: 5)) +Shape: rgb(0,0,128) Path (Vector(x: 656, y: 54) > Vector(x: 492, y: 54) > Vector(x: 497, y: 49) > Vector(x: 651, y: 49)) +Shape: rgb(0,0,128) Path (Vector(x: 492, y: 54) > Vector(x: 492, y: 0) > Vector(x: 497, y: 5) > Vector(x: 497, y: 49)) +Clip: Path (Vector(x: 497, y: 5) > Vector(x: 651, y: 5) > Vector(x: 651, y: 49) > Vector(x: 497, y: 49)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [499, 7]: textbox +Clip: Path (Vector(x: 0, y: 54) > Vector(x: 180, y: 54) > Vector(x: 180, y: 124) > Vector(x: 0, y: 124)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 170, y: 21) > Vector(x: 328, y: 21) > Vector(x: 326, y: 23) > Vector(x: 172, y: 23)) -Shape: rgb(0,0,0) Path (Vector(x: 328, y: 21) > Vector(x: 328, y: 49) > Vector(x: 326, y: 47) > Vector(x: 326, y: 23)) -Shape: rgb(0,0,0) Path (Vector(x: 328, y: 49) > Vector(x: 170, y: 49) > Vector(x: 172, y: 47) > Vector(x: 326, y: 47)) -Shape: rgb(0,0,0) Path (Vector(x: 170, y: 49) > Vector(x: 170, y: 21) > Vector(x: 172, y: 23) > Vector(x: 172, y: 47)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [174, 25]: • - [179, 25]: • - [183, 25]: • - [188, 25]: • - [193, 25]: • - [197, 25]: • - [202, 25]: • -Clip: Path (Vector(x: 332, y: 18) > Vector(x: 496, y: 18) > Vector(x: 496, y: 52) > Vector(x: 332, y: 52)) +Shape: rgb(0,0,128) Path (Vector(x: 0, y: 54) > Vector(x: 180, y: 54) > Vector(x: 175, y: 59) > Vector(x: 5, y: 59)) +Shape: rgb(0,0,128) Path (Vector(x: 180, y: 54) > Vector(x: 180, y: 124) > Vector(x: 175, y: 119) > Vector(x: 175, y: 59)) +Shape: rgb(0,0,128) Path (Vector(x: 180, y: 124) > Vector(x: 0, y: 124) > Vector(x: 5, y: 119) > Vector(x: 175, y: 119)) +Shape: rgb(0,0,128) Path (Vector(x: 0, y: 124) > Vector(x: 0, y: 54) > Vector(x: 5, y: 59) > Vector(x: 5, y: 119)) +Clip: Path (Vector(x: 5, y: 59) > Vector(x: 175, y: 59) > Vector(x: 175, y: 119) > Vector(x: 5, y: 119)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [15, 69]: textbox +Clip: Path (Vector(x: 184, y: 67) > Vector(x: 358, y: 67) > Vector(x: 358, y: 111) > Vector(x: 184, y: 111)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 332, y: 18) > Vector(x: 496, y: 18) > Vector(x: 491, y: 23) > Vector(x: 337, y: 23)) -Shape: rgb(0,0,128) Path (Vector(x: 496, y: 18) > Vector(x: 496, y: 52) > Vector(x: 491, y: 47) > Vector(x: 491, y: 23)) -Shape: rgb(0,0,128) Path (Vector(x: 496, y: 52) > Vector(x: 332, y: 52) > Vector(x: 337, y: 47) > Vector(x: 491, y: 47)) -Shape: rgb(0,0,128) Path (Vector(x: 332, y: 52) > Vector(x: 332, y: 18) > Vector(x: 337, y: 23) > Vector(x: 337, y: 47)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [339, 25]: textbox -Clip: Path (Vector(x: 500, y: 8) > Vector(x: 664, y: 8) > Vector(x: 664, y: 62) > Vector(x: 500, y: 62)) +Shape: rgb(0,0,0) Path (Vector(x: 184, y: 67) > Vector(x: 358, y: 67) > Vector(x: 356, y: 69) > Vector(x: 186, y: 69)) +Shape: rgb(0,0,0) Path (Vector(x: 358, y: 67) > Vector(x: 358, y: 111) > Vector(x: 356, y: 109) > Vector(x: 356, y: 69)) +Shape: rgb(0,0,0) Path (Vector(x: 358, y: 111) > Vector(x: 184, y: 111) > Vector(x: 186, y: 109) > Vector(x: 356, y: 109)) +Shape: rgb(0,0,0) Path (Vector(x: 184, y: 111) > Vector(x: 184, y: 67) > Vector(x: 186, y: 69) > Vector(x: 186, y: 109)) +Clip: Path (Vector(x: 186, y: 69) > Vector(x: 356, y: 69) > Vector(x: 356, y: 109) > Vector(x: 186, y: 109)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [196, 79]: textbox +Clip: Path (Vector(x: 362, y: 67) > Vector(x: 536, y: 67) > Vector(x: 536, y: 111) > Vector(x: 362, y: 111)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 500, y: 8) > Vector(x: 664, y: 8) > Vector(x: 659, y: 13) > Vector(x: 505, y: 13)) -Shape: rgb(0,0,128) Path (Vector(x: 664, y: 8) > Vector(x: 664, y: 62) > Vector(x: 659, y: 57) > Vector(x: 659, y: 13)) -Shape: rgb(0,0,128) Path (Vector(x: 664, y: 62) > Vector(x: 500, y: 62) > Vector(x: 505, y: 57) > Vector(x: 659, y: 57)) -Shape: rgb(0,0,128) Path (Vector(x: 500, y: 62) > Vector(x: 500, y: 8) > Vector(x: 505, y: 13) > Vector(x: 505, y: 57)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [507, 15]: textbox -Clip: Path (Vector(x: 8, y: 62) > Vector(x: 188, y: 62) > Vector(x: 188, y: 132) > Vector(x: 8, y: 132)) +Shape: rgb(0,0,0) Path (Vector(x: 362, y: 67) > Vector(x: 536, y: 67) > Vector(x: 534, y: 69) > Vector(x: 364, y: 69)) +Shape: rgb(0,0,0) Path (Vector(x: 536, y: 67) > Vector(x: 536, y: 111) > Vector(x: 534, y: 109) > Vector(x: 534, y: 69)) +Shape: rgb(0,0,0) Path (Vector(x: 536, y: 111) > Vector(x: 362, y: 111) > Vector(x: 364, y: 109) > Vector(x: 534, y: 109)) +Shape: rgb(0,0,0) Path (Vector(x: 362, y: 111) > Vector(x: 362, y: 67) > Vector(x: 364, y: 69) > Vector(x: 364, y: 109)) +Clip: Path (Vector(x: 364, y: 69) > Vector(x: 534, y: 69) > Vector(x: 534, y: 109) > Vector(x: 364, y: 109)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [472, 79]: textbox +Clip: Path (Vector(x: 540, y: 75) > Vector(x: 690, y: 75) > Vector(x: 690, y: 95) > Vector(x: 540, y: 95)) Fill: rgb(255,255,255) -Shape: rgb(0,0,128) Path (Vector(x: 8, y: 62) > Vector(x: 188, y: 62) > Vector(x: 183, y: 67) > Vector(x: 13, y: 67)) -Shape: rgb(0,0,128) Path (Vector(x: 188, y: 62) > Vector(x: 188, y: 132) > Vector(x: 183, y: 127) > Vector(x: 183, y: 67)) -Shape: rgb(0,0,128) Path (Vector(x: 188, y: 132) > Vector(x: 8, y: 132) > Vector(x: 13, y: 127) > Vector(x: 183, y: 127)) -Shape: rgb(0,0,128) Path (Vector(x: 8, y: 132) > Vector(x: 8, y: 62) > Vector(x: 13, y: 67) > Vector(x: 13, y: 127)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [23, 77]: textbox -Clip: Path (Vector(x: 192, y: 75) > Vector(x: 366, y: 75) > Vector(x: 366, y: 119) > Vector(x: 192, y: 119)) +Shape: rgb(0,0,0) Path (Vector(x: 540, y: 75) > Vector(x: 690, y: 75) > Vector(x: 688, y: 77) > Vector(x: 542, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 690, y: 75) > Vector(x: 690, y: 95) > Vector(x: 688, y: 93) > Vector(x: 688, y: 77)) +Shape: rgb(0,0,0) Path (Vector(x: 690, y: 95) > Vector(x: 540, y: 95) > Vector(x: 542, y: 93) > Vector(x: 688, y: 93)) +Shape: rgb(0,0,0) Path (Vector(x: 540, y: 95) > Vector(x: 540, y: 75) > Vector(x: 542, y: 77) > Vector(x: 542, y: 93)) +Clip: Path (Vector(x: 542, y: 77) > Vector(x: 688, y: 77) > Vector(x: 688, y: 93) > Vector(x: 542, y: 93)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [544, 79]: Value + [588, 79]: 1 +Clip: Path (Vector(x: 0, y: 124) > Vector(x: 150, y: 124) > Vector(x: 150, y: 144) > Vector(x: 0, y: 144)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 192, y: 75) > Vector(x: 366, y: 75) > Vector(x: 364, y: 77) > Vector(x: 194, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 366, y: 75) > Vector(x: 366, y: 119) > Vector(x: 364, y: 117) > Vector(x: 364, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 366, y: 119) > Vector(x: 192, y: 119) > Vector(x: 194, y: 117) > Vector(x: 364, y: 117)) -Shape: rgb(0,0,0) Path (Vector(x: 192, y: 119) > Vector(x: 192, y: 75) > Vector(x: 194, y: 77) > Vector(x: 194, y: 117)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [204, 87]: textbox -Clip: Path (Vector(x: 370, y: 75) > Vector(x: 544, y: 75) > Vector(x: 544, y: 119) > Vector(x: 370, y: 119)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 124) > Vector(x: 150, y: 124) > Vector(x: 148, y: 126) > Vector(x: 2, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 124) > Vector(x: 150, y: 144) > Vector(x: 148, y: 142) > Vector(x: 148, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 144) > Vector(x: 0, y: 144) > Vector(x: 2, y: 142) > Vector(x: 148, y: 142)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 144) > Vector(x: 0, y: 124) > Vector(x: 2, y: 126) > Vector(x: 2, y: 142)) +Clip: Path (Vector(x: 2, y: 126) > Vector(x: 148, y: 126) > Vector(x: 148, y: 142) > Vector(x: 2, y: 142)) +Clip: Path (Vector(x: 154, y: 124) > Vector(x: 304, y: 124) > Vector(x: 304, y: 144) > Vector(x: 154, y: 144)) Fill: rgb(255,255,255) -Shape: rgb(0,0,0) Path (Vector(x: 370, y: 75) > Vector(x: 544, y: 75) > Vector(x: 542, y: 77) > Vector(x: 372, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 544, y: 75) > Vector(x: 544, y: 119) > Vector(x: 542, y: 117) > Vector(x: 542, y: 77)) -Shape: rgb(0,0,0) Path (Vector(x: 544, y: 119) > Vector(x: 370, y: 119) > Vector(x: 372, y: 117) > Vector(x: 542, y: 117)) -Shape: rgb(0,0,0) Path (Vector(x: 370, y: 119) > Vector(x: 370, y: 75) > Vector(x: 372, y: 77) > Vector(x: 372, y: 117)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [489, 87]: textbox -Clip: Path (Vector(x: 548, y: 84) > Vector(x: 698, y: 84) > Vector(x: 698, y: 104) > Vector(x: 548, y: 104)) +Shape: rgb(0,0,0) Path (Vector(x: 154, y: 124) > Vector(x: 304, y: 124) > Vector(x: 302, y: 126) > Vector(x: 156, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 304, y: 124) > Vector(x: 304, y: 144) > Vector(x: 302, y: 142) > Vector(x: 302, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 304, y: 144) > Vector(x: 154, y: 144) > Vector(x: 156, y: 142) > Vector(x: 302, y: 142)) +Shape: rgb(0,0,0) Path (Vector(x: 154, y: 144) > Vector(x: 154, y: 124) > Vector(x: 156, y: 126) > Vector(x: 156, y: 142)) +Clip: Path (Vector(x: 156, y: 126) > Vector(x: 302, y: 126) > Vector(x: 302, y: 142) > Vector(x: 156, y: 142)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [158, 128]: 2 +Clip: Path (Vector(x: 308, y: 124) > Vector(x: 458, y: 124) > Vector(x: 458, y: 144) > Vector(x: 308, y: 144)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 548, y: 84) > Vector(x: 698, y: 84) > Vector(x: 696, y: 86) > Vector(x: 550, y: 86)) -Shape: rgb(169,169,169) Path (Vector(x: 698, y: 84) > Vector(x: 698, y: 104) > Vector(x: 696, y: 102) > Vector(x: 696, y: 86)) -Shape: rgb(169,169,169) Path (Vector(x: 698, y: 104) > Vector(x: 548, y: 104) > Vector(x: 550, y: 102) > Vector(x: 696, y: 102)) -Shape: rgb(169,169,169) Path (Vector(x: 548, y: 104) > Vector(x: 548, y: 84) > Vector(x: 550, y: 86) > Vector(x: 550, y: 102)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [552, 88]: Value - [589, 88]: 1 -Clip: Path (Vector(x: 8, y: 132) > Vector(x: 158, y: 132) > Vector(x: 158, y: 152) > Vector(x: 8, y: 152)) +Shape: rgb(0,0,0) Path (Vector(x: 308, y: 124) > Vector(x: 458, y: 124) > Vector(x: 456, y: 126) > Vector(x: 310, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 458, y: 124) > Vector(x: 458, y: 144) > Vector(x: 456, y: 142) > Vector(x: 456, y: 126)) +Shape: rgb(0,0,0) Path (Vector(x: 458, y: 144) > Vector(x: 308, y: 144) > Vector(x: 310, y: 142) > Vector(x: 456, y: 142)) +Shape: rgb(0,0,0) Path (Vector(x: 308, y: 144) > Vector(x: 308, y: 124) > Vector(x: 310, y: 126) > Vector(x: 310, y: 142)) +Clip: Path (Vector(x: 310, y: 126) > Vector(x: 456, y: 126) > Vector(x: 456, y: 142) > Vector(x: 310, y: 142)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [312, 128]: Value + [356, 128]: 2 + [370, 128]: with + [402, 128]: something + [481, 128]: else +Clip: Path (Vector(x: 462, y: 125) > Vector(x: 612, y: 125) > Vector(x: 612, y: 145) > Vector(x: 462, y: 145)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 132) > Vector(x: 158, y: 132) > Vector(x: 156, y: 134) > Vector(x: 10, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 158, y: 132) > Vector(x: 158, y: 152) > Vector(x: 156, y: 150) > Vector(x: 156, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 158, y: 152) > Vector(x: 8, y: 152) > Vector(x: 10, y: 150) > Vector(x: 156, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 152) > Vector(x: 8, y: 132) > Vector(x: 10, y: 134) > Vector(x: 10, y: 150)) -Clip: Path (Vector(x: 162, y: 132) > Vector(x: 312, y: 132) > Vector(x: 312, y: 152) > Vector(x: 162, y: 152)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 125) > Vector(x: 612, y: 125) > Vector(x: 610, y: 127) > Vector(x: 464, y: 127)) +Shape: rgb(0,0,0) Path (Vector(x: 612, y: 125) > Vector(x: 612, y: 145) > Vector(x: 610, y: 143) > Vector(x: 610, y: 127)) +Shape: rgb(0,0,0) Path (Vector(x: 612, y: 145) > Vector(x: 462, y: 145) > Vector(x: 464, y: 143) > Vector(x: 610, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 462, y: 145) > Vector(x: 462, y: 125) > Vector(x: 464, y: 127) > Vector(x: 464, y: 143)) +Clip: Path (Vector(x: 464, y: 127) > Vector(x: 610, y: 127) > Vector(x: 610, y: 143) > Vector(x: 464, y: 143)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [512, 129]: Submit +Clip: Path (Vector(x: 616, y: 125) > Vector(x: 766, y: 125) > Vector(x: 766, y: 145) > Vector(x: 616, y: 145)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 162, y: 132) > Vector(x: 312, y: 132) > Vector(x: 310, y: 134) > Vector(x: 164, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 312, y: 132) > Vector(x: 312, y: 152) > Vector(x: 310, y: 150) > Vector(x: 310, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 312, y: 152) > Vector(x: 162, y: 152) > Vector(x: 164, y: 150) > Vector(x: 310, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 162, y: 152) > Vector(x: 162, y: 132) > Vector(x: 164, y: 134) > Vector(x: 164, y: 150)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [166, 136]: 2 -Clip: Path (Vector(x: 316, y: 132) > Vector(x: 466, y: 132) > Vector(x: 466, y: 152) > Vector(x: 316, y: 152)) +Shape: rgb(0,0,0) Path (Vector(x: 616, y: 125) > Vector(x: 766, y: 125) > Vector(x: 764, y: 127) > Vector(x: 618, y: 127)) +Shape: rgb(0,0,0) Path (Vector(x: 766, y: 125) > Vector(x: 766, y: 145) > Vector(x: 764, y: 143) > Vector(x: 764, y: 127)) +Shape: rgb(0,0,0) Path (Vector(x: 766, y: 145) > Vector(x: 616, y: 145) > Vector(x: 618, y: 143) > Vector(x: 764, y: 143)) +Shape: rgb(0,0,0) Path (Vector(x: 616, y: 145) > Vector(x: 616, y: 125) > Vector(x: 618, y: 127) > Vector(x: 618, y: 143)) +Clip: Path (Vector(x: 618, y: 127) > Vector(x: 764, y: 127) > Vector(x: 764, y: 143) > Vector(x: 618, y: 143)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [668, 129]: Button +Clip: Path (Vector(x: 0, y: 159) > Vector(x: 150, y: 159) > Vector(x: 150, y: 179) > Vector(x: 0, y: 179)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 316, y: 132) > Vector(x: 466, y: 132) > Vector(x: 464, y: 134) > Vector(x: 318, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 466, y: 132) > Vector(x: 466, y: 152) > Vector(x: 464, y: 150) > Vector(x: 464, y: 134)) -Shape: rgb(169,169,169) Path (Vector(x: 466, y: 152) > Vector(x: 316, y: 152) > Vector(x: 318, y: 150) > Vector(x: 464, y: 150)) -Shape: rgb(169,169,169) Path (Vector(x: 316, y: 152) > Vector(x: 316, y: 132) > Vector(x: 318, y: 134) > Vector(x: 318, y: 150)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [320, 136]: Value - [357, 136]: 2 - [368, 136]: with - [395, 136]: something - [460, 136]: else -Clip: Path (Vector(x: 470, y: 134) > Vector(x: 527, y: 134) > Vector(x: 527, y: 155) > Vector(x: 470, y: 155)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 470, y: 134) > Vector(x: 527, y: 134) > Vector(x: 525, y: 136) > Vector(x: 472, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 527, y: 134) > Vector(x: 527, y: 155) > Vector(x: 525, y: 153) > Vector(x: 525, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 527, y: 155) > Vector(x: 470, y: 155) > Vector(x: 472, y: 153) > Vector(x: 525, y: 153)) -Shape: rgb(221,221,221) Path (Vector(x: 470, y: 155) > Vector(x: 470, y: 134) > Vector(x: 472, y: 136) > Vector(x: 472, y: 153)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [478, 137]: Submit -Clip: Path (Vector(x: 531, y: 134) > Vector(x: 586, y: 134) > Vector(x: 586, y: 155) > Vector(x: 531, y: 155)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 531, y: 134) > Vector(x: 586, y: 134) > Vector(x: 584, y: 136) > Vector(x: 533, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 586, y: 134) > Vector(x: 586, y: 155) > Vector(x: 584, y: 153) > Vector(x: 584, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 586, y: 155) > Vector(x: 531, y: 155) > Vector(x: 533, y: 153) > Vector(x: 584, y: 153)) -Shape: rgb(221,221,221) Path (Vector(x: 531, y: 155) > Vector(x: 531, y: 134) > Vector(x: 533, y: 136) > Vector(x: 533, y: 153)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [539, 137]: Button -Clip: Path (Vector(x: 590, y: 134) > Vector(x: 641, y: 134) > Vector(x: 641, y: 155) > Vector(x: 590, y: 155)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 590, y: 134) > Vector(x: 641, y: 134) > Vector(x: 639, y: 136) > Vector(x: 592, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 641, y: 134) > Vector(x: 641, y: 155) > Vector(x: 639, y: 153) > Vector(x: 639, y: 136)) -Shape: rgb(221,221,221) Path (Vector(x: 641, y: 155) > Vector(x: 590, y: 155) > Vector(x: 592, y: 153) > Vector(x: 639, y: 153)) -Shape: rgb(221,221,221) Path (Vector(x: 590, y: 155) > Vector(x: 590, y: 134) > Vector(x: 592, y: 136) > Vector(x: 592, y: 153)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [598, 137]: Reset -Clip: Path (Vector(x: 8, y: 170) > Vector(x: 208, y: 170) > Vector(x: 208, y: 191) > Vector(x: 8, y: 191)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 8, y: 170) > Vector(x: 208, y: 170) > Vector(x: 206, y: 172) > Vector(x: 10, y: 172)) -Shape: rgb(221,221,221) Path (Vector(x: 208, y: 170) > Vector(x: 208, y: 191) > Vector(x: 206, y: 189) > Vector(x: 206, y: 172)) -Shape: rgb(221,221,221) Path (Vector(x: 208, y: 191) > Vector(x: 8, y: 191) > Vector(x: 10, y: 189) > Vector(x: 206, y: 189)) -Shape: rgb(221,221,221) Path (Vector(x: 8, y: 191) > Vector(x: 8, y: 170) > Vector(x: 10, y: 172) > Vector(x: 10, y: 189)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [87, 173]: Submit -Clip: Path (Vector(x: 212, y: 155) > Vector(x: 412, y: 155) > Vector(x: 412, y: 205) > Vector(x: 212, y: 205)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 212, y: 155) > Vector(x: 412, y: 155) > Vector(x: 410, y: 157) > Vector(x: 214, y: 157)) -Shape: rgb(221,221,221) Path (Vector(x: 412, y: 155) > Vector(x: 412, y: 205) > Vector(x: 410, y: 203) > Vector(x: 410, y: 157)) -Shape: rgb(221,221,221) Path (Vector(x: 412, y: 205) > Vector(x: 212, y: 205) > Vector(x: 214, y: 203) > Vector(x: 410, y: 203)) -Shape: rgb(221,221,221) Path (Vector(x: 212, y: 205) > Vector(x: 212, y: 155) > Vector(x: 214, y: 157) > Vector(x: 214, y: 203)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [293, 158]: Button -Clip: Path (Vector(x: 416, y: 155) > Vector(x: 616, y: 155) > Vector(x: 616, y: 205) > Vector(x: 416, y: 205)) - Fill: rgb(221,221,221) -Shape: rgb(221,221,221) Path (Vector(x: 416, y: 155) > Vector(x: 616, y: 155) > Vector(x: 614, y: 157) > Vector(x: 418, y: 157)) -Shape: rgb(221,221,221) Path (Vector(x: 616, y: 155) > Vector(x: 616, y: 205) > Vector(x: 614, y: 203) > Vector(x: 614, y: 157)) -Shape: rgb(221,221,221) Path (Vector(x: 616, y: 205) > Vector(x: 416, y: 205) > Vector(x: 418, y: 203) > Vector(x: 614, y: 203)) -Shape: rgb(221,221,221) Path (Vector(x: 416, y: 205) > Vector(x: 416, y: 155) > Vector(x: 418, y: 157) > Vector(x: 418, y: 203)) -Text: rgb(0,0,0) normal normal 400 13.3333px Arial - [424, 158]: Reset -Clip: Path (Vector(x: 620, y: 156) > Vector(x: 778, y: 156) > Vector(x: 778, y: 184) > Vector(x: 620, y: 184)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 159) > Vector(x: 150, y: 159) > Vector(x: 148, y: 161) > Vector(x: 2, y: 161)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 159) > Vector(x: 150, y: 179) > Vector(x: 148, y: 177) > Vector(x: 148, y: 161)) +Shape: rgb(0,0,0) Path (Vector(x: 150, y: 179) > Vector(x: 0, y: 179) > Vector(x: 2, y: 177) > Vector(x: 148, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 179) > Vector(x: 0, y: 159) > Vector(x: 2, y: 161) > Vector(x: 2, y: 177)) +Clip: Path (Vector(x: 2, y: 161) > Vector(x: 148, y: 161) > Vector(x: 148, y: 177) > Vector(x: 2, y: 177)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [54, 163]: Reset +Clip: Path (Vector(x: 154, y: 159) > Vector(x: 354, y: 159) > Vector(x: 354, y: 179) > Vector(x: 154, y: 179)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 620, y: 156) > Vector(x: 778, y: 156) > Vector(x: 776, y: 158) > Vector(x: 622, y: 158)) -Shape: rgb(169,169,169) Path (Vector(x: 778, y: 156) > Vector(x: 778, y: 184) > Vector(x: 776, y: 182) > Vector(x: 776, y: 158)) -Shape: rgb(169,169,169) Path (Vector(x: 778, y: 184) > Vector(x: 620, y: 184) > Vector(x: 622, y: 182) > Vector(x: 776, y: 182)) -Shape: rgb(169,169,169) Path (Vector(x: 620, y: 184) > Vector(x: 620, y: 156) > Vector(x: 622, y: 158) > Vector(x: 622, y: 182)) -Text: rgb(0,0,0) normal normal 400 13.3333px monospace -Clip: Path (Vector(x: 8, y: 205) > Vector(x: 182, y: 205) > Vector(x: 182, y: 249) > Vector(x: 8, y: 249)) +Shape: rgb(0,0,0) Path (Vector(x: 154, y: 159) > Vector(x: 354, y: 159) > Vector(x: 352, y: 161) > Vector(x: 156, y: 161)) +Shape: rgb(0,0,0) Path (Vector(x: 354, y: 159) > Vector(x: 354, y: 179) > Vector(x: 352, y: 177) > Vector(x: 352, y: 161)) +Shape: rgb(0,0,0) Path (Vector(x: 354, y: 179) > Vector(x: 154, y: 179) > Vector(x: 156, y: 177) > Vector(x: 352, y: 177)) +Shape: rgb(0,0,0) Path (Vector(x: 154, y: 179) > Vector(x: 154, y: 159) > Vector(x: 156, y: 161) > Vector(x: 156, y: 177)) +Clip: Path (Vector(x: 156, y: 161) > Vector(x: 352, y: 161) > Vector(x: 352, y: 177) > Vector(x: 156, y: 177)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [229, 163]: Submit +Clip: Path (Vector(x: 358, y: 147) > Vector(x: 558, y: 147) > Vector(x: 558, y: 197) > Vector(x: 358, y: 197)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 205) > Vector(x: 182, y: 205) > Vector(x: 172, y: 215) > Vector(x: 18, y: 215)) -Shape: rgb(169,169,169) Path (Vector(x: 182, y: 205) > Vector(x: 182, y: 249) > Vector(x: 172, y: 239) > Vector(x: 172, y: 215)) -Shape: rgb(169,169,169) Path (Vector(x: 182, y: 249) > Vector(x: 8, y: 249) > Vector(x: 18, y: 239) > Vector(x: 172, y: 239)) -Shape: rgb(169,169,169) Path (Vector(x: 8, y: 249) > Vector(x: 8, y: 205) > Vector(x: 18, y: 215) > Vector(x: 18, y: 239)) -Clip: Path (Vector(x: 186, y: 221) > Vector(x: 344, y: 221) > Vector(x: 344, y: 249) > Vector(x: 186, y: 249)) +Shape: rgb(0,0,0) Path (Vector(x: 358, y: 147) > Vector(x: 558, y: 147) > Vector(x: 556, y: 149) > Vector(x: 360, y: 149)) +Shape: rgb(0,0,0) Path (Vector(x: 558, y: 147) > Vector(x: 558, y: 197) > Vector(x: 556, y: 195) > Vector(x: 556, y: 149)) +Shape: rgb(0,0,0) Path (Vector(x: 558, y: 197) > Vector(x: 358, y: 197) > Vector(x: 360, y: 195) > Vector(x: 556, y: 195)) +Shape: rgb(0,0,0) Path (Vector(x: 358, y: 197) > Vector(x: 358, y: 147) > Vector(x: 360, y: 149) > Vector(x: 360, y: 195)) +Clip: Path (Vector(x: 360, y: 149) > Vector(x: 556, y: 149) > Vector(x: 556, y: 195) > Vector(x: 360, y: 195)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [435, 151]: Button +Clip: Path (Vector(x: 562, y: 147) > Vector(x: 762, y: 147) > Vector(x: 762, y: 197) > Vector(x: 562, y: 197)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 186, y: 221) > Vector(x: 344, y: 221) > Vector(x: 342, y: 223) > Vector(x: 188, y: 223)) -Shape: rgb(169,169,169) Path (Vector(x: 344, y: 221) > Vector(x: 344, y: 249) > Vector(x: 342, y: 247) > Vector(x: 342, y: 223)) -Shape: rgb(169,169,169) Path (Vector(x: 344, y: 249) > Vector(x: 186, y: 249) > Vector(x: 188, y: 247) > Vector(x: 342, y: 247)) -Shape: rgb(169,169,169) Path (Vector(x: 186, y: 249) > Vector(x: 186, y: 221) > Vector(x: 188, y: 223) > Vector(x: 188, y: 247)) -Text: rgb(0,0,0) normal normal 400 13.3333px monospace - [197, 225]: text -Clip: Path (Vector(x: 348, y: 205) > Vector(x: 522, y: 205) > Vector(x: 522, y: 249) > Vector(x: 348, y: 249)) +Shape: rgb(0,0,0) Path (Vector(x: 562, y: 147) > Vector(x: 762, y: 147) > Vector(x: 760, y: 149) > Vector(x: 564, y: 149)) +Shape: rgb(0,0,0) Path (Vector(x: 762, y: 147) > Vector(x: 762, y: 197) > Vector(x: 760, y: 195) > Vector(x: 760, y: 149)) +Shape: rgb(0,0,0) Path (Vector(x: 762, y: 197) > Vector(x: 562, y: 197) > Vector(x: 564, y: 195) > Vector(x: 760, y: 195)) +Shape: rgb(0,0,0) Path (Vector(x: 562, y: 197) > Vector(x: 562, y: 147) > Vector(x: 564, y: 149) > Vector(x: 564, y: 195)) +Clip: Path (Vector(x: 564, y: 149) > Vector(x: 760, y: 149) > Vector(x: 760, y: 195) > Vector(x: 564, y: 195)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [566, 151]: Reset +Clip: Path (Vector(x: 0, y: 213) > Vector(x: 158, y: 213) > Vector(x: 158, y: 241) > Vector(x: 0, y: 241)) Fill: rgb(255,255,255) -Shape: rgb(169,169,169) Path (Vector(x: 348, y: 205) > Vector(x: 522, y: 205) > Vector(x: 512, y: 215) > Vector(x: 358, y: 215)) -Shape: rgb(169,169,169) Path (Vector(x: 522, y: 205) > Vector(x: 522, y: 249) > Vector(x: 512, y: 239) > Vector(x: 512, y: 215)) -Shape: rgb(169,169,169) Path (Vector(x: 522, y: 249) > Vector(x: 348, y: 249) > Vector(x: 358, y: 239) > Vector(x: 512, y: 239)) -Shape: rgb(169,169,169) Path (Vector(x: 348, y: 249) > Vector(x: 348, y: 205) > Vector(x: 358, y: 215) > Vector(x: 358, y: 239)) -Text: rgb(0,0,0) normal normal 400 13.3333px monospace - [360, 217]: text -Clip: Path (BezierCurve(x0: 537, y0: 239, x1: 542, y1: 234, cx0: 537, cy0: 236, cx1: 539, cy1: 234) > BezierCurve(x0: 542, y0: 234, x1: 548, y1: 239, cx0: 545, cy0: 234, cx1: 548, cy1: 236) > BezierCurve(x0: 548, y0: 239, x1: 542, y1: 245, cx0: 548, cy0: 242, cx1: 545, cy1: 245) > BezierCurve(x0: 542, y0: 245, x1: 537, y1: 239, cx0: 539, cy0: 245, cx1: 537, cy1: 242)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 213) > Vector(x: 158, y: 213) > Vector(x: 156, y: 215) > Vector(x: 2, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 158, y: 213) > Vector(x: 158, y: 241) > Vector(x: 156, y: 239) > Vector(x: 156, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 158, y: 241) > Vector(x: 0, y: 241) > Vector(x: 2, y: 239) > Vector(x: 156, y: 239)) +Shape: rgb(0,0,0) Path (Vector(x: 0, y: 241) > Vector(x: 0, y: 213) > Vector(x: 2, y: 215) > Vector(x: 2, y: 239)) +Clip: Path (Vector(x: 2, y: 215) > Vector(x: 156, y: 215) > Vector(x: 156, y: 239) > Vector(x: 2, y: 239)) + Text: rgb(0,0,0) normal normal 400 16 Arial +Clip: Path (Vector(x: 162, y: 197) > Vector(x: 336, y: 197) > Vector(x: 336, y: 241) > Vector(x: 162, y: 241)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 162, y: 197) > Vector(x: 336, y: 197) > Vector(x: 326, y: 207) > Vector(x: 172, y: 207)) +Shape: rgb(0,0,0) Path (Vector(x: 336, y: 197) > Vector(x: 336, y: 241) > Vector(x: 326, y: 231) > Vector(x: 326, y: 207)) +Shape: rgb(0,0,0) Path (Vector(x: 336, y: 241) > Vector(x: 162, y: 241) > Vector(x: 172, y: 231) > Vector(x: 326, y: 231)) +Shape: rgb(0,0,0) Path (Vector(x: 162, y: 241) > Vector(x: 162, y: 197) > Vector(x: 172, y: 207) > Vector(x: 172, y: 231)) +Clip: Path (Vector(x: 172, y: 207) > Vector(x: 326, y: 207) > Vector(x: 326, y: 231) > Vector(x: 172, y: 231)) +Clip: Path (Vector(x: 340, y: 213) > Vector(x: 498, y: 213) > Vector(x: 498, y: 241) > Vector(x: 340, y: 241)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 340, y: 213) > Vector(x: 498, y: 213) > Vector(x: 496, y: 215) > Vector(x: 342, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 498, y: 213) > Vector(x: 498, y: 241) > Vector(x: 496, y: 239) > Vector(x: 496, y: 215)) +Shape: rgb(0,0,0) Path (Vector(x: 498, y: 241) > Vector(x: 340, y: 241) > Vector(x: 342, y: 239) > Vector(x: 496, y: 239)) +Shape: rgb(0,0,0) Path (Vector(x: 340, y: 241) > Vector(x: 340, y: 213) > Vector(x: 342, y: 215) > Vector(x: 342, y: 239)) +Clip: Path (Vector(x: 342, y: 215) > Vector(x: 496, y: 215) > Vector(x: 496, y: 239) > Vector(x: 342, y: 239)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [348, 217]: text +Clip: Path (Vector(x: 502, y: 197) > Vector(x: 676, y: 197) > Vector(x: 676, y: 241) > Vector(x: 502, y: 241)) + Fill: rgb(255,255,255) +Shape: rgb(0,0,0) Path (Vector(x: 502, y: 197) > Vector(x: 676, y: 197) > Vector(x: 666, y: 207) > Vector(x: 512, y: 207)) +Shape: rgb(0,0,0) Path (Vector(x: 676, y: 197) > Vector(x: 676, y: 241) > Vector(x: 666, y: 231) > Vector(x: 666, y: 207)) +Shape: rgb(0,0,0) Path (Vector(x: 676, y: 241) > Vector(x: 502, y: 241) > Vector(x: 512, y: 231) > Vector(x: 666, y: 231)) +Shape: rgb(0,0,0) Path (Vector(x: 502, y: 241) > Vector(x: 502, y: 197) > Vector(x: 512, y: 207) > Vector(x: 512, y: 231)) +Clip: Path (Vector(x: 512, y: 207) > Vector(x: 666, y: 207) > Vector(x: 666, y: 231) > Vector(x: 512, y: 231)) + Text: rgb(0,0,0) normal normal 400 16 Arial + [514, 209]: text +Clip: Path (BezierCurve(x0: 691, y0: 217, x1: 696, y1: 212, cx0: 691, cy0: 214, cx1: 693, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 702, y1: 217, cx0: 699, cy0: 212, cx1: 702, cy1: 214) > BezierCurve(x0: 702, y0: 217, x1: 696, y1: 223, cx0: 702, cy0: 220, cx1: 699, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 691, y1: 217, cx0: 693, cy0: 223, cx1: 691, cy1: 220)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 538, y0: 235, x1: 542, y1: 233, cx0: 539, cy0: 234, cx1: 541, cy1: 233) > BezierCurve(x0: 542, y0: 233, x1: 547, y1: 235, cx0: 544, cy0: 233, cx1: 546, cy1: 234) > BezierCurve(x0: 546, y0: 235, x1: 542, y1: 234, cx0: 545, cy0: 234, cx1: 544, cy1: 234) > BezierCurve(x0: 542, y0: 234, x1: 539, y1: 235, cx0: 541, cy0: 234, cx1: 540, cy1: 234)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 547, y0: 235, x1: 549, y1: 239, cx0: 548, cy0: 236, cx1: 549, cy1: 237) > BezierCurve(x0: 549, y0: 239, x1: 547, y1: 244, cx0: 549, cy0: 241, cx1: 548, cy1: 243) > BezierCurve(x0: 546, y0: 243, x1: 548, y1: 239, cx0: 547, cy0: 242, cx1: 548, cy1: 241) > BezierCurve(x0: 548, y0: 239, x1: 546, y1: 235, cx0: 548, cy0: 238, cx1: 547, cy1: 236)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 547, y0: 244, x1: 542, y1: 246, cx0: 546, cy0: 245, cx1: 544, cy1: 246) > BezierCurve(x0: 542, y0: 246, x1: 538, y1: 244, cx0: 541, cy0: 246, cx1: 539, cy1: 245) > BezierCurve(x0: 539, y0: 243, x1: 542, y1: 245, cx0: 540, cy0: 244, cx1: 541, cy1: 245) > BezierCurve(x0: 542, y0: 245, x1: 546, y1: 243, cx0: 544, cy0: 245, cx1: 545, cy1: 244)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 538, y0: 244, x1: 536, y1: 239, cx0: 537, cy0: 243, cx1: 536, cy1: 241) > BezierCurve(x0: 536, y0: 239, x1: 538, y1: 235, cx0: 536, cy0: 237, cx1: 537, cy1: 236) > BezierCurve(x0: 539, y0: 235, x1: 537, y1: 239, cx0: 538, cy0: 236, cx1: 537, cy1: 238) > BezierCurve(x0: 537, y0: 239, x1: 539, y1: 243, cx0: 537, cy0: 241, cx1: 538, cy1: 242)) -Clip: Path (BezierCurve(x0: 611, y0: 239, x1: 616, y1: 234, cx0: 611, cy0: 236, cx1: 613, cy1: 234) > BezierCurve(x0: 616, y0: 234, x1: 621, y1: 239, cx0: 619, cy0: 234, cx1: 621, cy1: 236) > BezierCurve(x0: 621, y0: 239, x1: 616, y1: 245, cx0: 621, cy0: 242, cx1: 619, cy1: 245) > BezierCurve(x0: 616, y0: 245, x1: 611, y1: 239, cx0: 613, cy0: 245, cx1: 611, cy1: 242)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 692, y0: 213, x1: 696, y1: 211, cx0: 693, cy0: 212, cx1: 695, cy1: 211) > BezierCurve(x0: 696, y0: 211, x1: 701, y1: 213, cx0: 698, cy0: 211, cx1: 700, cy1: 212) > BezierCurve(x0: 700, y0: 213, x1: 696, y1: 212, cx0: 699, cy0: 212, cx1: 698, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 693, y1: 213, cx0: 695, cy0: 212, cx1: 694, cy1: 212)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 701, y0: 213, x1: 703, y1: 217, cx0: 702, cy0: 214, cx1: 703, cy1: 215) > BezierCurve(x0: 703, y0: 217, x1: 701, y1: 222, cx0: 703, cy0: 219, cx1: 702, cy1: 221) > BezierCurve(x0: 700, y0: 221, x1: 702, y1: 217, cx0: 701, cy0: 220, cx1: 702, cy1: 219) > BezierCurve(x0: 702, y0: 217, x1: 700, y1: 213, cx0: 702, cy0: 216, cx1: 701, cy1: 214)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 701, y0: 222, x1: 696, y1: 224, cx0: 700, cy0: 223, cx1: 698, cy1: 224) > BezierCurve(x0: 696, y0: 224, x1: 692, y1: 222, cx0: 695, cy0: 224, cx1: 693, cy1: 223) > BezierCurve(x0: 693, y0: 221, x1: 696, y1: 223, cx0: 694, cy0: 222, cx1: 695, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 700, y1: 221, cx0: 698, cy0: 223, cx1: 699, cy1: 222)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 692, y0: 222, x1: 690, y1: 217, cx0: 691, cy0: 221, cx1: 690, cy1: 219) > BezierCurve(x0: 690, y0: 217, x1: 692, y1: 213, cx0: 690, cy0: 215, cx1: 691, cy1: 214) > BezierCurve(x0: 693, y0: 213, x1: 691, y1: 217, cx0: 692, cy0: 214, cx1: 691, cy1: 216) > BezierCurve(x0: 691, y0: 217, x1: 693, y1: 221, cx0: 691, cy0: 219, cx1: 692, cy1: 220)) +Clip: Path (BezierCurve(x0: 691, y0: 217, x1: 696, y1: 212, cx0: 691, cy0: 214, cx1: 693, cy1: 212) > BezierCurve(x0: 696, y0: 212, x1: 702, y1: 217, cx0: 699, cy0: 212, cx1: 702, cy1: 214) > BezierCurve(x0: 702, y0: 217, x1: 696, y1: 223, cx0: 702, cy0: 220, cx1: 699, cy1: 223) > BezierCurve(x0: 696, y0: 223, x1: 691, y1: 217, cx0: 693, cy0: 223, cx1: 691, cy1: 220)) +Clip: Path (BezierCurve(x0: 765, y0: 217, x1: 770, y1: 212, cx0: 765, cy0: 214, cx1: 767, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 775, y1: 217, cx0: 773, cy0: 212, cx1: 775, cy1: 214) > BezierCurve(x0: 775, y0: 217, x1: 770, y1: 223, cx0: 775, cy0: 220, cx1: 773, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 765, y1: 217, cx0: 767, cy0: 223, cx1: 765, cy1: 220)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 611, y0: 235, x1: 616, y1: 233, cx0: 613, cy0: 234, cx1: 614, cy1: 233) > BezierCurve(x0: 616, y0: 233, x1: 621, y1: 235, cx0: 618, cy0: 233, cx1: 619, cy1: 234) > BezierCurve(x0: 620, y0: 235, x1: 616, y1: 234, cx0: 619, cy0: 234, cx1: 617, cy1: 234) > BezierCurve(x0: 616, y0: 234, x1: 612, y1: 235, cx0: 615, cy0: 234, cx1: 613, cy1: 234)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 621, y0: 235, x1: 622, y1: 239, cx0: 622, cy0: 236, cx1: 622, cy1: 237) > BezierCurve(x0: 622, y0: 239, x1: 621, y1: 244, cx0: 622, cy0: 241, cx1: 622, cy1: 243) > BezierCurve(x0: 620, y0: 243, x1: 621, y1: 239, cx0: 621, cy0: 242, cx1: 621, cy1: 241) > BezierCurve(x0: 621, y0: 239, x1: 620, y1: 235, cx0: 621, cy0: 238, cx1: 621, cy1: 236)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 621, y0: 244, x1: 616, y1: 246, cx0: 619, cy0: 245, cx1: 618, cy1: 246) > BezierCurve(x0: 616, y0: 246, x1: 611, y1: 244, cx0: 614, cy0: 246, cx1: 613, cy1: 245) > BezierCurve(x0: 612, y0: 243, x1: 616, y1: 245, cx0: 613, cy0: 244, cx1: 615, cy1: 245) > BezierCurve(x0: 616, y0: 245, x1: 620, y1: 243, cx0: 617, cy0: 245, cx1: 619, cy1: 244)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 611, y0: 244, x1: 610, y1: 239, cx0: 610, cy0: 243, cx1: 610, cy1: 241) > BezierCurve(x0: 610, y0: 239, x1: 611, y1: 235, cx0: 610, cy0: 237, cx1: 610, cy1: 236) > BezierCurve(x0: 612, y0: 235, x1: 611, y1: 239, cx0: 611, cy0: 236, cx1: 611, cy1: 238) > BezierCurve(x0: 611, y0: 239, x1: 612, y1: 243, cx0: 611, cy0: 241, cx1: 611, cy1: 242)) -Shape: rgb(42,42,42) Circle(x: 613, y: 236, r: 3) -Clip: Path (BezierCurve(x0: 109, y0: 459, x1: 118, y1: 450, cx0: 109, cy0: 454, cx1: 113, cy1: 450) > BezierCurve(x0: 118, y0: 450, x1: 127, y1: 459, cx0: 123, cy0: 450, cx1: 127, cy1: 454) > BezierCurve(x0: 127, y0: 459, x1: 118, y1: 468, cx0: 127, cy0: 464, cx1: 123, cy1: 468) > BezierCurve(x0: 118, y0: 468, x1: 109, y1: 459, cx0: 113, cy0: 468, cx1: 109, cy1: 464)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 765, y0: 213, x1: 770, y1: 211, cx0: 767, cy0: 212, cx1: 768, cy1: 211) > BezierCurve(x0: 770, y0: 211, x1: 775, y1: 213, cx0: 772, cy0: 211, cx1: 773, cy1: 212) > BezierCurve(x0: 774, y0: 213, x1: 770, y1: 212, cx0: 773, cy0: 212, cx1: 771, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 766, y1: 213, cx0: 769, cy0: 212, cx1: 767, cy1: 212)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 775, y0: 213, x1: 776, y1: 217, cx0: 776, cy0: 214, cx1: 776, cy1: 215) > BezierCurve(x0: 776, y0: 217, x1: 775, y1: 222, cx0: 776, cy0: 219, cx1: 776, cy1: 221) > BezierCurve(x0: 774, y0: 221, x1: 775, y1: 217, cx0: 775, cy0: 220, cx1: 775, cy1: 219) > BezierCurve(x0: 775, y0: 217, x1: 774, y1: 213, cx0: 775, cy0: 216, cx1: 775, cy1: 214)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 775, y0: 222, x1: 770, y1: 224, cx0: 773, cy0: 223, cx1: 772, cy1: 224) > BezierCurve(x0: 770, y0: 224, x1: 765, y1: 222, cx0: 768, cy0: 224, cx1: 767, cy1: 223) > BezierCurve(x0: 766, y0: 221, x1: 770, y1: 223, cx0: 767, cy0: 222, cx1: 769, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 774, y1: 221, cx0: 771, cy0: 223, cx1: 773, cy1: 222)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 765, y0: 222, x1: 764, y1: 217, cx0: 764, cy0: 221, cx1: 764, cy1: 219) > BezierCurve(x0: 764, y0: 217, x1: 765, y1: 213, cx0: 764, cy0: 215, cx1: 764, cy1: 214) > BezierCurve(x0: 766, y0: 213, x1: 765, y1: 217, cx0: 765, cy0: 214, cx1: 765, cy1: 216) > BezierCurve(x0: 765, y0: 217, x1: 766, y1: 221, cx0: 765, cy0: 219, cx1: 765, cy1: 220)) +Clip: Path (BezierCurve(x0: 765, y0: 217, x1: 770, y1: 212, cx0: 765, cy0: 214, cx1: 767, cy1: 212) > BezierCurve(x0: 770, y0: 212, x1: 775, y1: 217, cx0: 773, cy0: 212, cx1: 775, cy1: 214) > BezierCurve(x0: 775, y0: 217, x1: 770, y1: 223, cx0: 775, cy0: 220, cx1: 773, cy1: 223) > BezierCurve(x0: 770, y0: 223, x1: 765, y1: 217, cx0: 767, cy0: 223, cx1: 765, cy1: 220)) + Shape: rgb(42,42,42) Circle(x: 767, y: 214, r: 3) +Clip: Path (BezierCurve(x0: 175, y0: 265, x1: 184, y1: 256, cx0: 175, cy0: 260, cx1: 179, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 193, y1: 265, cx0: 189, cy0: 256, cx1: 193, cy1: 260) > BezierCurve(x0: 193, y0: 265, x1: 184, y1: 274, cx0: 193, cy0: 270, cx1: 189, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 175, y1: 265, cx0: 179, cy0: 274, cx1: 175, cy1: 270)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 111, y0: 452, x1: 118, y1: 449, cx0: 113, cy0: 450, cx1: 115, cy1: 449) > BezierCurve(x0: 118, y0: 449, x1: 125, y1: 452, cx0: 121, cy0: 449, cx1: 123, cy1: 450) > BezierCurve(x0: 124, y0: 453, x1: 118, y1: 450, cx0: 123, cy0: 451, cx1: 120, cy1: 450) > BezierCurve(x0: 118, y0: 450, x1: 112, y1: 453, cx0: 116, cy0: 450, cx1: 113, cy1: 451)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 125, y0: 452, x1: 128, y1: 459, cx0: 127, cy0: 454, cx1: 128, cy1: 456) > BezierCurve(x0: 128, y0: 459, x1: 125, y1: 466, cx0: 128, cy0: 462, cx1: 127, cy1: 464) > BezierCurve(x0: 124, y0: 466, x1: 127, y1: 459, cx0: 126, cy0: 464, cx1: 127, cy1: 462) > BezierCurve(x0: 127, y0: 459, x1: 124, y1: 453, cx0: 127, cy0: 457, cx1: 126, cy1: 454)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 125, y0: 466, x1: 118, y1: 469, cx0: 123, cy0: 468, cx1: 121, cy1: 469) > BezierCurve(x0: 118, y0: 469, x1: 111, y1: 466, cx0: 115, cy0: 469, cx1: 113, cy1: 468) > BezierCurve(x0: 112, y0: 466, x1: 118, y1: 468, cx0: 113, cy0: 467, cx1: 116, cy1: 468) > BezierCurve(x0: 118, y0: 468, x1: 124, y1: 466, cx0: 120, cy0: 468, cx1: 123, cy1: 467)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 111, y0: 466, x1: 108, y1: 459, cx0: 109, cy0: 464, cx1: 108, cy1: 462) > BezierCurve(x0: 108, y0: 459, x1: 111, y1: 452, cx0: 108, cy0: 456, cx1: 109, cy1: 454) > BezierCurve(x0: 112, y0: 453, x1: 109, y1: 459, cx0: 110, cy0: 454, cx1: 109, cy1: 457) > BezierCurve(x0: 109, y0: 459, x1: 112, y1: 466, cx0: 109, cy0: 462, cx1: 110, cy1: 464)) -Clip: Path (BezierCurve(x0: 243, y0: 369, x1: 342, y1: 270, cx0: 243, cy0: 315, cx1: 287, cy1: 270) > BezierCurve(x0: 342, y0: 270, x1: 441, y1: 369, cx0: 397, cy0: 270, cx1: 441, cy1: 315) > BezierCurve(x0: 441, y0: 369, x1: 342, y1: 468, cx0: 441, cy0: 424, cx1: 397, cy1: 468) > BezierCurve(x0: 342, y0: 468, x1: 243, y1: 369, cx0: 287, cy0: 468, cx1: 243, cy1: 424)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 177, y0: 258, x1: 184, y1: 255, cx0: 178, cy0: 256, cx1: 181, cy1: 255) > BezierCurve(x0: 184, y0: 255, x1: 191, y1: 258, cx0: 186, cy0: 255, cx1: 189, cy1: 256) > BezierCurve(x0: 190, y0: 259, x1: 184, y1: 256, cx0: 188, cy0: 257, cx1: 186, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 177, y1: 259, cx0: 181, cy0: 256, cx1: 179, cy1: 257)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 191, y0: 258, x1: 194, y1: 265, cx0: 192, cy0: 260, cx1: 194, cy1: 262) > BezierCurve(x0: 194, y0: 265, x1: 191, y1: 272, cx0: 194, cy0: 268, cx1: 192, cy1: 270) > BezierCurve(x0: 190, y0: 272, x1: 193, y1: 265, cx0: 192, cy0: 270, cx1: 193, cy1: 268) > BezierCurve(x0: 193, y0: 265, x1: 190, y1: 259, cx0: 193, cy0: 263, cx1: 192, cy1: 260)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 191, y0: 272, x1: 184, y1: 275, cx0: 189, cy0: 274, cx1: 186, cy1: 275) > BezierCurve(x0: 184, y0: 275, x1: 177, y1: 272, cx0: 181, cy0: 275, cx1: 178, cy1: 274) > BezierCurve(x0: 177, y0: 272, x1: 184, y1: 274, cx0: 179, cy0: 273, cx1: 181, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 190, y1: 272, cx0: 186, cy0: 274, cx1: 188, cy1: 273)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 177, y0: 272, x1: 174, y1: 265, cx0: 175, cy0: 270, cx1: 174, cy1: 268) > BezierCurve(x0: 174, y0: 265, x1: 177, y1: 258, cx0: 174, cy0: 262, cx1: 175, cy1: 260) > BezierCurve(x0: 177, y0: 259, x1: 175, y1: 265, cx0: 176, cy0: 260, cx1: 175, cy1: 263) > BezierCurve(x0: 175, y0: 265, x1: 177, y1: 272, cx0: 175, cy0: 268, cx1: 176, cy1: 270)) +Clip: Path (BezierCurve(x0: 175, y0: 265, x1: 184, y1: 256, cx0: 175, cy0: 260, cx1: 179, cy1: 256) > BezierCurve(x0: 184, y0: 256, x1: 193, y1: 265, cx0: 189, cy0: 256, cx1: 193, cy1: 260) > BezierCurve(x0: 193, y0: 265, x1: 184, y1: 274, cx0: 193, cy0: 270, cx1: 189, cy1: 274) > BezierCurve(x0: 184, y0: 274, x1: 175, y1: 265, cx0: 179, cy0: 274, cx1: 175, cy1: 270)) +Clip: Path (BezierCurve(x0: 309, y0: 355, x1: 408, y1: 256, cx0: 309, cy0: 301, cx1: 353, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 507, y1: 355, cx0: 462, cy0: 256, cx1: 507, cy1: 301) > BezierCurve(x0: 507, y0: 355, x1: 408, y1: 454, cx0: 507, cy0: 410, cx1: 462, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 309, y1: 355, cx0: 353, cy0: 454, cx1: 309, cy1: 410)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 271, y0: 298, x1: 342, y1: 269, cx0: 289, cy0: 280, cx1: 314, cy1: 269) > BezierCurve(x0: 342, y0: 269, x1: 413, y1: 298, cx0: 370, cy0: 269, cx1: 395, cy1: 280) > BezierCurve(x0: 412, y0: 299, x1: 342, y1: 270, cx0: 394, cy0: 281, cx1: 369, cy1: 270) > BezierCurve(x0: 342, y0: 270, x1: 272, y1: 299, cx0: 315, cy0: 270, cx1: 290, cy1: 281)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 413, y0: 298, x1: 442, y1: 369, cx0: 431, cy0: 317, cx1: 442, cy1: 342) > BezierCurve(x0: 442, y0: 369, x1: 413, y1: 440, cx0: 442, cy0: 397, cx1: 431, cy1: 422) > BezierCurve(x0: 412, y0: 439, x1: 441, y1: 369, cx0: 430, cy0: 421, cx1: 441, cy1: 397) > BezierCurve(x0: 441, y0: 369, x1: 412, y1: 299, cx0: 441, cy0: 342, cx1: 430, cy1: 317)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 413, y0: 440, x1: 342, y1: 469, cx0: 395, cy0: 458, cx1: 370, cy1: 469) > BezierCurve(x0: 342, y0: 469, x1: 271, y1: 440, cx0: 314, cy0: 469, cx1: 289, cy1: 458) > BezierCurve(x0: 272, y0: 439, x1: 342, y1: 468, cx0: 290, cy0: 457, cx1: 315, cy1: 468) > BezierCurve(x0: 342, y0: 468, x1: 412, y1: 439, cx0: 369, cy0: 468, cx1: 394, cy1: 457)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 271, y0: 440, x1: 242, y1: 369, cx0: 253, cy0: 422, cx1: 242, cy1: 397) > BezierCurve(x0: 242, y0: 369, x1: 271, y1: 298, cx0: 242, cy0: 342, cx1: 253, cy1: 317) > BezierCurve(x0: 272, y0: 299, x1: 243, y1: 369, cx0: 254, cy0: 317, cx1: 243, cy1: 342) > BezierCurve(x0: 243, y0: 369, x1: 272, y1: 439, cx0: 243, cy0: 397, cx1: 254, cy1: 421)) -Clip: Path (BezierCurve(x0: 467, y0: 369, x1: 566, y1: 270, cx0: 467, cy0: 315, cx1: 511, cy1: 270) > BezierCurve(x0: 566, y0: 270, x1: 665, y1: 369, cx0: 621, cy0: 270, cx1: 665, cy1: 315) > BezierCurve(x0: 665, y0: 369, x1: 566, y1: 468, cx0: 665, cy0: 424, cx1: 621, cy1: 468) > BezierCurve(x0: 566, y0: 468, x1: 467, y1: 369, cx0: 511, cy0: 468, cx1: 467, cy1: 424)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 337, y0: 284, x1: 408, y1: 255, cx0: 355, cy0: 266, cx1: 380, cy1: 255) > BezierCurve(x0: 408, y0: 255, x1: 478, y1: 284, cx0: 435, cy0: 255, cx1: 460, cy1: 266) > BezierCurve(x0: 478, y0: 285, x1: 408, y1: 256, cx0: 460, cy0: 267, cx1: 435, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 338, y1: 285, cx0: 380, cy0: 256, cx1: 356, cy1: 267)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 478, y0: 284, x1: 508, y1: 355, cx0: 496, cy0: 303, cx1: 508, cy1: 328) > BezierCurve(x0: 508, y0: 355, x1: 478, y1: 426, cx0: 508, cy0: 383, cx1: 496, cy1: 408) > BezierCurve(x0: 478, y0: 425, x1: 507, y1: 355, cx0: 496, cy0: 407, cx1: 507, cy1: 383) > BezierCurve(x0: 507, y0: 355, x1: 478, y1: 285, cx0: 507, cy0: 328, cx1: 496, cy1: 303)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 478, y0: 426, x1: 408, y1: 455, cx0: 460, cy0: 444, cx1: 435, cy1: 455) > BezierCurve(x0: 408, y0: 455, x1: 337, y1: 426, cx0: 380, cy0: 455, cx1: 355, cy1: 444) > BezierCurve(x0: 338, y0: 425, x1: 408, y1: 454, cx0: 356, cy0: 443, cx1: 380, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 478, y1: 425, cx0: 435, cy0: 454, cx1: 460, cy1: 443)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 337, y0: 426, x1: 308, y1: 355, cx0: 319, cy0: 408, cx1: 308, cy1: 383) > BezierCurve(x0: 308, y0: 355, x1: 337, y1: 284, cx0: 308, cy0: 328, cx1: 319, cy1: 303) > BezierCurve(x0: 338, y0: 285, x1: 309, y1: 355, cx0: 320, cy0: 303, cx1: 309, cy1: 328) > BezierCurve(x0: 309, y0: 355, x1: 338, y1: 425, cx0: 309, cy0: 383, cx1: 320, cy1: 407)) +Clip: Path (BezierCurve(x0: 309, y0: 355, x1: 408, y1: 256, cx0: 309, cy0: 301, cx1: 353, cy1: 256) > BezierCurve(x0: 408, y0: 256, x1: 507, y1: 355, cx0: 462, cy0: 256, cx1: 507, cy1: 301) > BezierCurve(x0: 507, y0: 355, x1: 408, y1: 454, cx0: 507, cy0: 410, cx1: 462, cy1: 454) > BezierCurve(x0: 408, y0: 454, x1: 309, y1: 355, cx0: 353, cy0: 454, cx1: 309, cy1: 410)) +Clip: Path (BezierCurve(x0: 533, y0: 355, x1: 632, y1: 256, cx0: 533, cy0: 301, cx1: 577, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 731, y1: 355, cx0: 686, cy0: 256, cx1: 731, cy1: 301) > BezierCurve(x0: 731, y0: 355, x1: 632, y1: 454, cx0: 731, cy0: 410, cx1: 686, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 533, y1: 355, cx0: 577, cy0: 454, cx1: 533, cy1: 410)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 495, y0: 298, x1: 566, y1: 269, cx0: 513, cy0: 280, cx1: 538, cy1: 269) > BezierCurve(x0: 566, y0: 269, x1: 637, y1: 298, cx0: 594, cy0: 269, cx1: 619, cy1: 280) > BezierCurve(x0: 636, y0: 299, x1: 566, y1: 270, cx0: 618, cy0: 281, cx1: 593, cy1: 270) > BezierCurve(x0: 566, y0: 270, x1: 496, y1: 299, cx0: 539, cy0: 270, cx1: 514, cy1: 281)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 637, y0: 298, x1: 666, y1: 369, cx0: 655, cy0: 317, cx1: 666, cy1: 342) > BezierCurve(x0: 666, y0: 369, x1: 637, y1: 440, cx0: 666, cy0: 397, cx1: 655, cy1: 422) > BezierCurve(x0: 636, y0: 439, x1: 665, y1: 369, cx0: 654, cy0: 421, cx1: 665, cy1: 397) > BezierCurve(x0: 665, y0: 369, x1: 636, y1: 299, cx0: 665, cy0: 342, cx1: 654, cy1: 317)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 637, y0: 440, x1: 566, y1: 469, cx0: 619, cy0: 458, cx1: 594, cy1: 469) > BezierCurve(x0: 566, y0: 469, x1: 495, y1: 440, cx0: 538, cy0: 469, cx1: 513, cy1: 458) > BezierCurve(x0: 496, y0: 439, x1: 566, y1: 468, cx0: 514, cy0: 457, cx1: 539, cy1: 468) > BezierCurve(x0: 566, y0: 468, x1: 636, y1: 439, cx0: 593, cy0: 468, cx1: 618, cy1: 457)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 495, y0: 440, x1: 466, y1: 369, cx0: 477, cy0: 422, cx1: 466, cy1: 397) > BezierCurve(x0: 466, y0: 369, x1: 495, y1: 298, cx0: 466, cy0: 342, cx1: 477, cy1: 317) > BezierCurve(x0: 496, y0: 299, x1: 467, y1: 369, cx0: 478, cy0: 317, cx1: 467, cy1: 342) > BezierCurve(x0: 467, y0: 369, x1: 496, y1: 439, cx0: 467, cy0: 397, cx1: 478, cy1: 421)) -Shape: rgb(42,42,42) Circle(x: 516, y: 319, r: 50) -Clip: Path (BezierCurve(x0: 691, y0: 456, x1: 693, y1: 454, cx0: 691, cy0: 455, cx1: 692, cy1: 454) > BezierCurve(x0: 700, y0: 454, x1: 702, y1: 456, cx0: 701, cy0: 454, cx1: 702, cy1: 455) > BezierCurve(x0: 702, y0: 463, x1: 700, y1: 465, cx0: 702, cy0: 464, cx1: 701, cy1: 465) > BezierCurve(x0: 693, y0: 465, x1: 691, y1: 463, cx0: 692, cy0: 465, cx1: 691, cy1: 464)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 561, y0: 284, x1: 632, y1: 255, cx0: 579, cy0: 266, cx1: 604, cy1: 255) > BezierCurve(x0: 632, y0: 255, x1: 702, y1: 284, cx0: 659, cy0: 255, cx1: 684, cy1: 266) > BezierCurve(x0: 702, y0: 285, x1: 632, y1: 256, cx0: 684, cy0: 267, cx1: 659, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 562, y1: 285, cx0: 604, cy0: 256, cx1: 580, cy1: 267)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 284, x1: 732, y1: 355, cx0: 720, cy0: 303, cx1: 732, cy1: 328) > BezierCurve(x0: 732, y0: 355, x1: 702, y1: 426, cx0: 732, cy0: 383, cx1: 720, cy1: 408) > BezierCurve(x0: 702, y0: 425, x1: 731, y1: 355, cx0: 720, cy0: 407, cx1: 731, cy1: 383) > BezierCurve(x0: 731, y0: 355, x1: 702, y1: 285, cx0: 731, cy0: 328, cx1: 720, cy1: 303)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 426, x1: 632, y1: 455, cx0: 684, cy0: 444, cx1: 659, cy1: 455) > BezierCurve(x0: 632, y0: 455, x1: 561, y1: 426, cx0: 604, cy0: 455, cx1: 579, cy1: 444) > BezierCurve(x0: 562, y0: 425, x1: 632, y1: 454, cx0: 580, cy0: 443, cx1: 604, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 702, y1: 425, cx0: 659, cy0: 454, cx1: 684, cy1: 443)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 561, y0: 426, x1: 532, y1: 355, cx0: 543, cy0: 408, cx1: 532, cy1: 383) > BezierCurve(x0: 532, y0: 355, x1: 561, y1: 284, cx0: 532, cy0: 328, cx1: 543, cy1: 303) > BezierCurve(x0: 562, y0: 285, x1: 533, y1: 355, cx0: 544, cy0: 303, cx1: 533, cy1: 328) > BezierCurve(x0: 533, y0: 355, x1: 562, y1: 425, cx0: 533, cy0: 383, cx1: 544, cy1: 407)) +Clip: Path (BezierCurve(x0: 533, y0: 355, x1: 632, y1: 256, cx0: 533, cy0: 301, cx1: 577, cy1: 256) > BezierCurve(x0: 632, y0: 256, x1: 731, y1: 355, cx0: 686, cy0: 256, cx1: 731, cy1: 301) > BezierCurve(x0: 731, y0: 355, x1: 632, y1: 454, cx0: 731, cy0: 410, cx1: 686, cy1: 454) > BezierCurve(x0: 632, y0: 454, x1: 533, y1: 355, cx0: 577, cy0: 454, cx1: 533, cy1: 410)) + Shape: rgb(42,42,42) Circle(x: 582, y: 305, r: 50) +Clip: Path (BezierCurve(x0: 757, y0: 262, x1: 759, y1: 260, cx0: 757, cy0: 261, cx1: 757, cy1: 260) > BezierCurve(x0: 765, y0: 260, x1: 767, y1: 262, cx0: 767, cy0: 260, cx1: 767, cy1: 261) > BezierCurve(x0: 767, y0: 269, x1: 765, y1: 271, cx0: 767, cy0: 270, cx1: 767, cy1: 271) > BezierCurve(x0: 759, y0: 271, x1: 757, y1: 269, cx0: 757, cy0: 271, cx1: 757, cy1: 270)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 691, y0: 454, x1: 693, y1: 453, cx0: 691, cy0: 453, cx1: 692, cy1: 453) > BezierCurve(x0: 700, y0: 453, x1: 702, y1: 454, cx0: 701, cy0: 453, cx1: 701, cy1: 453) > BezierCurve(x0: 701, y0: 454, x1: 700, y1: 454, cx0: 701, cy0: 454, cx1: 700, cy1: 454) > BezierCurve(x0: 693, y0: 454, x1: 692, y1: 454, cx0: 692, cy0: 454, cx1: 692, cy1: 454)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 454, x1: 703, y1: 456, cx0: 702, cy0: 454, cx1: 703, cy1: 455) > BezierCurve(x0: 703, y0: 463, x1: 702, y1: 465, cx0: 703, cy0: 463, cx1: 702, cy1: 464) > BezierCurve(x0: 701, y0: 464, x1: 702, y1: 463, cx0: 702, cy0: 464, cx1: 702, cy1: 463) > BezierCurve(x0: 702, y0: 456, x1: 701, y1: 454, cx0: 702, cy0: 455, cx1: 702, cy1: 455)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 702, y0: 465, x1: 700, y1: 466, cx0: 701, cy0: 465, cx1: 701, cy1: 466) > BezierCurve(x0: 693, y0: 466, x1: 691, y1: 465, cx0: 692, cy0: 466, cx1: 691, cy1: 465) > BezierCurve(x0: 692, y0: 464, x1: 693, y1: 465, cx0: 692, cy0: 464, cx1: 692, cy1: 465) > BezierCurve(x0: 700, y0: 465, x1: 701, y1: 464, cx0: 700, cy0: 465, cx1: 701, cy1: 464)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 691, y0: 465, x1: 690, y1: 463, cx0: 690, cy0: 464, cx1: 690, cy1: 463) > BezierCurve(x0: 690, y0: 456, x1: 691, y1: 454, cx0: 690, cy0: 455, cx1: 690, cy1: 454) > BezierCurve(x0: 692, y0: 454, x1: 691, y1: 456, cx0: 691, cy0: 455, cx1: 691, cy1: 455) > BezierCurve(x0: 691, y0: 463, x1: 692, y1: 464, cx0: 691, cy0: 463, cx1: 691, cy1: 464)) -Clip: Path (BezierCurve(x0: 765, y0: 456, x1: 767, y1: 454, cx0: 765, cy0: 455, cx1: 765, cy1: 454) > BezierCurve(x0: 773, y0: 454, x1: 775, y1: 456, cx0: 775, cy0: 454, cx1: 775, cy1: 455) > BezierCurve(x0: 775, y0: 463, x1: 773, y1: 465, cx0: 775, cy0: 464, cx1: 775, cy1: 465) > BezierCurve(x0: 767, y0: 465, x1: 765, y1: 463, cx0: 765, cy0: 465, cx1: 765, cy1: 464)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 756, y0: 260, x1: 759, y1: 259, cx0: 757, cy0: 259, cx1: 758, cy1: 259) > BezierCurve(x0: 765, y0: 259, x1: 768, y1: 260, cx0: 766, cy0: 259, cx1: 767, cy1: 259) > BezierCurve(x0: 767, y0: 260, x1: 765, y1: 260, cx0: 766, cy0: 260, cx1: 766, cy1: 260) > BezierCurve(x0: 759, y0: 260, x1: 757, y1: 260, cx0: 758, cy0: 260, cx1: 758, cy1: 260)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 768, y0: 260, x1: 768, y1: 262, cx0: 768, cy0: 260, cx1: 768, cy1: 261) > BezierCurve(x0: 768, y0: 269, x1: 768, y1: 271, cx0: 768, cy0: 269, cx1: 768, cy1: 270) > BezierCurve(x0: 767, y0: 270, x1: 767, y1: 269, cx0: 767, cy0: 270, cx1: 767, cy1: 269) > BezierCurve(x0: 767, y0: 262, x1: 767, y1: 260, cx0: 767, cy0: 261, cx1: 767, cy1: 261)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 768, y0: 271, x1: 765, y1: 272, cx0: 767, cy0: 271, cx1: 766, cy1: 272) > BezierCurve(x0: 759, y0: 272, x1: 756, y1: 271, cx0: 758, cy0: 272, cx1: 757, cy1: 271) > BezierCurve(x0: 757, y0: 270, x1: 759, y1: 271, cx0: 758, cy0: 270, cx1: 758, cy1: 271) > BezierCurve(x0: 765, y0: 271, x1: 767, y1: 270, cx0: 766, cy0: 271, cx1: 766, cy1: 270)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 756, y0: 271, x1: 756, y1: 269, cx0: 756, cy0: 270, cx1: 756, cy1: 269) > BezierCurve(x0: 756, y0: 262, x1: 756, y1: 260, cx0: 756, cy0: 261, cx1: 756, cy1: 260) > BezierCurve(x0: 757, y0: 260, x1: 757, y1: 262, cx0: 757, cy0: 261, cx1: 757, cy1: 261) > BezierCurve(x0: 757, y0: 269, x1: 757, y1: 270, cx0: 757, cy0: 269, cx1: 757, cy1: 270)) +Clip: Path (BezierCurve(x0: 757, y0: 262, x1: 759, y1: 260, cx0: 757, cy0: 261, cx1: 757, cy1: 260) > BezierCurve(x0: 765, y0: 260, x1: 767, y1: 262, cx0: 767, cy0: 260, cx1: 767, cy1: 261) > BezierCurve(x0: 767, y0: 269, x1: 765, y1: 271, cx0: 767, cy0: 270, cx1: 767, cy1: 271) > BezierCurve(x0: 759, y0: 271, x1: 757, y1: 269, cx0: 757, cy0: 271, cx1: 757, cy1: 270)) +Clip: Path (BezierCurve(x0: 48, y0: 482, x1: 50, y1: 480, cx0: 48, cy0: 481, cx1: 49, cy1: 480) > BezierCurve(x0: 57, y0: 480, x1: 59, y1: 482, cx0: 58, cy0: 480, cx1: 59, cy1: 481) > BezierCurve(x0: 59, y0: 489, x1: 57, y1: 491, cx0: 59, cy0: 490, cx1: 58, cy1: 491) > BezierCurve(x0: 50, y0: 491, x1: 48, y1: 489, cx0: 49, cy0: 491, cx1: 48, cy1: 490)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 764, y0: 454, x1: 767, y1: 453, cx0: 765, cy0: 453, cx1: 766, cy1: 453) > BezierCurve(x0: 773, y0: 453, x1: 776, y1: 454, cx0: 774, cy0: 453, cx1: 775, cy1: 453) > BezierCurve(x0: 775, y0: 454, x1: 773, y1: 454, cx0: 774, cy0: 454, cx1: 774, cy1: 454) > BezierCurve(x0: 767, y0: 454, x1: 765, y1: 454, cx0: 766, cy0: 454, cx1: 766, cy1: 454)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 776, y0: 454, x1: 776, y1: 456, cx0: 776, cy0: 454, cx1: 776, cy1: 455) > BezierCurve(x0: 776, y0: 463, x1: 776, y1: 465, cx0: 776, cy0: 463, cx1: 776, cy1: 464) > BezierCurve(x0: 775, y0: 464, x1: 775, y1: 463, cx0: 775, cy0: 464, cx1: 775, cy1: 463) > BezierCurve(x0: 775, y0: 456, x1: 775, y1: 454, cx0: 775, cy0: 455, cx1: 775, cy1: 455)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 776, y0: 465, x1: 773, y1: 466, cx0: 775, cy0: 465, cx1: 774, cy1: 466) > BezierCurve(x0: 767, y0: 466, x1: 764, y1: 465, cx0: 766, cy0: 466, cx1: 765, cy1: 465) > BezierCurve(x0: 765, y0: 464, x1: 767, y1: 465, cx0: 766, cy0: 464, cx1: 766, cy1: 465) > BezierCurve(x0: 773, y0: 465, x1: 775, y1: 464, cx0: 774, cy0: 465, cx1: 774, cy1: 464)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 764, y0: 465, x1: 764, y1: 463, cx0: 764, cy0: 464, cx1: 764, cy1: 463) > BezierCurve(x0: 764, y0: 456, x1: 764, y1: 454, cx0: 764, cy0: 455, cx1: 764, cy1: 454) > BezierCurve(x0: 765, y0: 454, x1: 765, y1: 456, cx0: 765, cy0: 455, cx1: 765, cy1: 455) > BezierCurve(x0: 765, y0: 463, x1: 765, y1: 464, cx0: 765, cy0: 463, cx1: 765, cy1: 464)) -Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial - [766, 465]: ✔ -Clip: Path (BezierCurve(x0: 183, y0: 672, x1: 185, y1: 670, cx0: 183, cy0: 671, cx1: 183, cy1: 670) > BezierCurve(x0: 199, y0: 670, x1: 201, y1: 672, cx0: 200, cy0: 670, cx1: 201, cy1: 671) > BezierCurve(x0: 201, y0: 686, x1: 199, y1: 688, cx0: 201, cy0: 687, cx1: 200, cy1: 688) > BezierCurve(x0: 185, y0: 688, x1: 183, y1: 686, cx0: 183, cy0: 688, cx1: 183, cy1: 687)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 48, y0: 480, x1: 50, y1: 479, cx0: 48, cy0: 479, cx1: 49, cy1: 479) > BezierCurve(x0: 57, y0: 479, x1: 59, y1: 480, cx0: 57, cy0: 479, cx1: 58, cy1: 479) > BezierCurve(x0: 58, y0: 480, x1: 57, y1: 480, cx0: 58, cy0: 480, cx1: 57, cy1: 480) > BezierCurve(x0: 50, y0: 480, x1: 48, y1: 480, cx0: 49, cy0: 480, cx1: 49, cy1: 480)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 59, y0: 480, x1: 60, y1: 482, cx0: 59, cy0: 480, cx1: 60, cy1: 481) > BezierCurve(x0: 60, y0: 489, x1: 59, y1: 491, cx0: 60, cy0: 489, cx1: 59, cy1: 490) > BezierCurve(x0: 58, y0: 490, x1: 59, y1: 489, cx0: 58, cy0: 490, cx1: 59, cy1: 489) > BezierCurve(x0: 59, y0: 482, x1: 58, y1: 480, cx0: 59, cy0: 481, cx1: 58, cy1: 481)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 59, y0: 491, x1: 57, y1: 492, cx0: 58, cy0: 491, cx1: 57, cy1: 492) > BezierCurve(x0: 50, y0: 492, x1: 48, y1: 491, cx0: 49, cy0: 492, cx1: 48, cy1: 491) > BezierCurve(x0: 48, y0: 490, x1: 50, y1: 491, cx0: 49, cy0: 490, cx1: 49, cy1: 491) > BezierCurve(x0: 57, y0: 491, x1: 58, y1: 490, cx0: 57, cy0: 491, cx1: 58, cy1: 490)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 48, y0: 491, x1: 47, y1: 489, cx0: 47, cy0: 490, cx1: 47, cy1: 489) > BezierCurve(x0: 47, y0: 482, x1: 48, y1: 480, cx0: 47, cy0: 481, cx1: 47, cy1: 480) > BezierCurve(x0: 48, y0: 480, x1: 48, y1: 482, cx0: 48, cy0: 481, cx1: 48, cy1: 481) > BezierCurve(x0: 48, y0: 489, x1: 48, y1: 490, cx0: 48, cy0: 489, cx1: 48, cy1: 490)) +Clip: Path (BezierCurve(x0: 48, y0: 482, x1: 50, y1: 480, cx0: 48, cy0: 481, cx1: 49, cy1: 480) > BezierCurve(x0: 57, y0: 480, x1: 59, y1: 482, cx0: 58, cy0: 480, cx1: 59, cy1: 481) > BezierCurve(x0: 59, y0: 489, x1: 57, y1: 491, cx0: 59, cy0: 490, cx1: 58, cy1: 491) > BezierCurve(x0: 50, y0: 491, x1: 48, y1: 489, cx0: 49, cy0: 491, cx1: 48, cy1: 490)) + Shape: rgb(42,42,42) Path (Vector(x: 52, y: 489) > Vector(x: 49, y: 486) > Vector(x: 50, y: 484) > Vector(x: 52, y: 486) > Vector(x: 56, y: 482) > Vector(x: 58, y: 483) > Vector(x: 52, y: 489)) +Clip: Path (BezierCurve(x0: 248, y0: 478, x1: 250, y1: 476, cx0: 248, cy0: 477, cx1: 249, cy1: 476) > BezierCurve(x0: 264, y0: 476, x1: 266, y1: 478, cx0: 265, cy0: 476, cx1: 266, cy1: 477) > BezierCurve(x0: 266, y0: 492, x1: 264, y1: 494, cx0: 266, cy0: 493, cx1: 265, cy1: 494) > BezierCurve(x0: 250, y0: 494, x1: 248, y1: 492, cx0: 249, cy0: 494, cx1: 248, cy1: 493)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 182, y0: 670, x1: 185, y1: 669, cx0: 183, cy0: 670, cx1: 184, cy1: 669) > BezierCurve(x0: 199, y0: 669, x1: 201, y1: 670, cx0: 199, cy0: 669, cx1: 200, cy1: 670) > BezierCurve(x0: 200, y0: 671, x1: 199, y1: 670, cx0: 200, cy0: 670, cx1: 199, cy1: 670) > BezierCurve(x0: 185, y0: 670, x1: 183, y1: 671, cx0: 184, cy0: 670, cx1: 184, cy1: 670)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 201, y0: 670, x1: 202, y1: 672, cx0: 201, cy0: 671, cx1: 202, cy1: 671) > BezierCurve(x0: 202, y0: 686, x1: 201, y1: 688, cx0: 202, cy0: 687, cx1: 201, cy1: 688) > BezierCurve(x0: 200, y0: 688, x1: 201, y1: 686, cx0: 200, cy0: 687, cx1: 201, cy1: 687) > BezierCurve(x0: 201, y0: 672, x1: 200, y1: 671, cx0: 201, cy0: 672, cx1: 200, cy1: 671)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 201, y0: 688, x1: 199, y1: 689, cx0: 200, cy0: 689, cx1: 199, cy1: 689) > BezierCurve(x0: 185, y0: 689, x1: 182, y1: 688, cx0: 184, cy0: 689, cx1: 183, cy1: 689) > BezierCurve(x0: 183, y0: 688, x1: 185, y1: 688, cx0: 184, cy0: 688, cx1: 184, cy1: 688) > BezierCurve(x0: 199, y0: 688, x1: 200, y1: 688, cx0: 199, cy0: 688, cx1: 200, cy1: 688)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 182, y0: 688, x1: 182, y1: 686, cx0: 182, cy0: 688, cx1: 182, cy1: 687) > BezierCurve(x0: 182, y0: 672, x1: 182, y1: 670, cx0: 182, cy0: 671, cx1: 182, cy1: 671) > BezierCurve(x0: 183, y0: 671, x1: 183, y1: 672, cx0: 183, cy0: 671, cx1: 183, cy1: 672) > BezierCurve(x0: 183, y0: 686, x1: 183, y1: 688, cx0: 183, cy0: 687, cx1: 183, cy1: 687)) -Clip: Path (BezierCurve(x0: 317, y0: 492, x1: 319, y1: 490, cx0: 317, cy0: 491, cx1: 317, cy1: 490) > BezierCurve(x0: 513, y0: 490, x1: 515, y1: 492, cx0: 514, cy0: 490, cx1: 515, cy1: 491) > BezierCurve(x0: 515, y0: 686, x1: 513, y1: 688, cx0: 515, cy0: 687, cx1: 514, cy1: 688) > BezierCurve(x0: 319, y0: 688, x1: 317, y1: 686, cx0: 317, cy0: 688, cx1: 317, cy1: 687)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 248, y0: 476, x1: 250, y1: 475, cx0: 249, cy0: 476, cx1: 249, cy1: 475) > BezierCurve(x0: 264, y0: 475, x1: 266, y1: 476, cx0: 265, cy0: 475, cx1: 266, cy1: 476) > BezierCurve(x0: 266, y0: 477, x1: 264, y1: 476, cx0: 265, cy0: 476, cx1: 265, cy1: 476) > BezierCurve(x0: 250, y0: 476, x1: 249, y1: 477, cx0: 250, cy0: 476, cx1: 249, cy1: 476)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 266, y0: 476, x1: 267, y1: 478, cx0: 267, cy0: 477, cx1: 267, cy1: 477) > BezierCurve(x0: 267, y0: 492, x1: 266, y1: 494, cx0: 267, cy0: 493, cx1: 267, cy1: 494) > BezierCurve(x0: 266, y0: 494, x1: 266, y1: 492, cx0: 266, cy0: 493, cx1: 266, cy1: 493) > BezierCurve(x0: 266, y0: 478, x1: 266, y1: 477, cx0: 266, cy0: 478, cx1: 266, cy1: 477)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 266, y0: 494, x1: 264, y1: 495, cx0: 266, cy0: 495, cx1: 265, cy1: 495) > BezierCurve(x0: 250, y0: 495, x1: 248, y1: 494, cx0: 249, cy0: 495, cx1: 249, cy1: 495) > BezierCurve(x0: 249, y0: 494, x1: 250, y1: 494, cx0: 249, cy0: 494, cx1: 250, cy1: 494) > BezierCurve(x0: 264, y0: 494, x1: 266, y1: 494, cx0: 265, cy0: 494, cx1: 265, cy1: 494)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 248, y0: 494, x1: 247, y1: 492, cx0: 248, cy0: 494, cx1: 247, cy1: 493) > BezierCurve(x0: 247, y0: 478, x1: 248, y1: 476, cx0: 247, cy0: 477, cx1: 248, cy1: 477) > BezierCurve(x0: 249, y0: 477, x1: 248, y1: 478, cx0: 248, cy0: 477, cx1: 248, cy1: 478) > BezierCurve(x0: 248, y0: 492, x1: 249, y1: 494, cx0: 248, cy0: 493, cx1: 248, cy1: 493)) +Clip: Path (BezierCurve(x0: 248, y0: 478, x1: 250, y1: 476, cx0: 248, cy0: 477, cx1: 249, cy1: 476) > BezierCurve(x0: 264, y0: 476, x1: 266, y1: 478, cx0: 265, cy0: 476, cx1: 266, cy1: 477) > BezierCurve(x0: 266, y0: 492, x1: 264, y1: 494, cx0: 266, cy0: 493, cx1: 265, cy1: 494) > BezierCurve(x0: 250, y0: 494, x1: 248, y1: 492, cx0: 249, cy0: 494, cx1: 248, cy1: 493)) +Clip: Path (BezierCurve(x0: 382, y0: 478, x1: 384, y1: 476, cx0: 382, cy0: 477, cx1: 383, cy1: 476) > BezierCurve(x0: 578, y0: 476, x1: 580, y1: 478, cx0: 579, cy0: 476, cx1: 580, cy1: 477) > BezierCurve(x0: 580, y0: 672, x1: 578, y1: 674, cx0: 580, cy0: 673, cx1: 579, cy1: 674) > BezierCurve(x0: 384, y0: 674, x1: 382, y1: 672, cx0: 383, cy0: 674, cx1: 382, cy1: 673)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 490, x1: 319, y1: 489, cx0: 317, cy0: 490, cx1: 318, cy1: 489) > BezierCurve(x0: 513, y0: 489, x1: 515, y1: 490, cx0: 513, cy0: 489, cx1: 514, cy1: 490) > BezierCurve(x0: 514, y0: 491, x1: 513, y1: 490, cx0: 514, cy0: 490, cx1: 513, cy1: 490) > BezierCurve(x0: 319, y0: 490, x1: 317, y1: 491, cx0: 318, cy0: 490, cx1: 318, cy1: 490)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 515, y0: 490, x1: 516, y1: 492, cx0: 515, cy0: 491, cx1: 516, cy1: 491) > BezierCurve(x0: 516, y0: 686, x1: 515, y1: 688, cx0: 516, cy0: 687, cx1: 515, cy1: 688) > BezierCurve(x0: 514, y0: 688, x1: 515, y1: 686, cx0: 514, cy0: 687, cx1: 515, cy1: 687) > BezierCurve(x0: 515, y0: 492, x1: 514, y1: 491, cx0: 515, cy0: 492, cx1: 514, cy1: 491)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 515, y0: 688, x1: 513, y1: 689, cx0: 514, cy0: 689, cx1: 513, cy1: 689) > BezierCurve(x0: 319, y0: 689, x1: 316, y1: 688, cx0: 318, cy0: 689, cx1: 317, cy1: 689) > BezierCurve(x0: 317, y0: 688, x1: 319, y1: 688, cx0: 318, cy0: 688, cx1: 318, cy1: 688) > BezierCurve(x0: 513, y0: 688, x1: 514, y1: 688, cx0: 513, cy0: 688, cx1: 514, cy1: 688)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 316, y0: 688, x1: 316, y1: 686, cx0: 316, cy0: 688, cx1: 316, cy1: 687) > BezierCurve(x0: 316, y0: 492, x1: 316, y1: 490, cx0: 316, cy0: 491, cx1: 316, cy1: 491) > BezierCurve(x0: 317, y0: 491, x1: 317, y1: 492, cx0: 317, cy0: 491, cx1: 317, cy1: 492) > BezierCurve(x0: 317, y0: 686, x1: 317, y1: 688, cx0: 317, cy0: 687, cx1: 317, cy1: 687)) -Clip: Path (BezierCurve(x0: 541, y0: 492, x1: 543, y1: 490, cx0: 541, cy0: 491, cx1: 541, cy1: 490) > BezierCurve(x0: 737, y0: 490, x1: 739, y1: 492, cx0: 738, cy0: 490, cx1: 739, cy1: 491) > BezierCurve(x0: 739, y0: 686, x1: 737, y1: 688, cx0: 739, cy0: 687, cx1: 738, cy1: 688) > BezierCurve(x0: 543, y0: 688, x1: 541, y1: 686, cx0: 541, cy0: 688, cx1: 541, cy1: 687)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 382, y0: 476, x1: 384, y1: 475, cx0: 383, cy0: 476, cx1: 383, cy1: 475) > BezierCurve(x0: 578, y0: 475, x1: 580, y1: 476, cx0: 579, cy0: 475, cx1: 580, cy1: 476) > BezierCurve(x0: 580, y0: 477, x1: 578, y1: 476, cx0: 579, cy0: 476, cx1: 579, cy1: 476) > BezierCurve(x0: 384, y0: 476, x1: 383, y1: 477, cx0: 384, cy0: 476, cx1: 383, cy1: 476)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 580, y0: 476, x1: 581, y1: 478, cx0: 581, cy0: 477, cx1: 581, cy1: 477) > BezierCurve(x0: 581, y0: 672, x1: 580, y1: 674, cx0: 581, cy0: 673, cx1: 581, cy1: 674) > BezierCurve(x0: 580, y0: 674, x1: 580, y1: 672, cx0: 580, cy0: 673, cx1: 580, cy1: 673) > BezierCurve(x0: 580, y0: 478, x1: 580, y1: 477, cx0: 580, cy0: 478, cx1: 580, cy1: 477)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 580, y0: 674, x1: 578, y1: 675, cx0: 580, cy0: 675, cx1: 579, cy1: 675) > BezierCurve(x0: 384, y0: 675, x1: 382, y1: 674, cx0: 383, cy0: 675, cx1: 383, cy1: 675) > BezierCurve(x0: 383, y0: 674, x1: 384, y1: 674, cx0: 383, cy0: 674, cx1: 384, cy1: 674) > BezierCurve(x0: 578, y0: 674, x1: 580, y1: 674, cx0: 579, cy0: 674, cx1: 579, cy1: 674)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 382, y0: 674, x1: 381, y1: 672, cx0: 382, cy0: 674, cx1: 381, cy1: 673) > BezierCurve(x0: 381, y0: 478, x1: 382, y1: 476, cx0: 381, cy0: 477, cx1: 382, cy1: 477) > BezierCurve(x0: 383, y0: 477, x1: 382, y1: 478, cx0: 382, cy0: 477, cx1: 382, cy1: 478) > BezierCurve(x0: 382, y0: 672, x1: 383, y1: 674, cx0: 382, cy0: 673, cx1: 382, cy1: 673)) +Clip: Path (BezierCurve(x0: 382, y0: 478, x1: 384, y1: 476, cx0: 382, cy0: 477, cx1: 383, cy1: 476) > BezierCurve(x0: 578, y0: 476, x1: 580, y1: 478, cx0: 579, cy0: 476, cx1: 580, cy1: 477) > BezierCurve(x0: 580, y0: 672, x1: 578, y1: 674, cx0: 580, cy0: 673, cx1: 579, cy1: 674) > BezierCurve(x0: 384, y0: 674, x1: 382, y1: 672, cx0: 383, cy0: 674, cx1: 382, cy1: 673)) +Clip: Path (BezierCurve(x0: 11, y0: 698, x1: 13, y1: 696, cx0: 11, cy0: 697, cx1: 12, cy1: 696) > BezierCurve(x0: 207, y0: 696, x1: 209, y1: 698, cx0: 208, cy0: 696, cx1: 209, cy1: 697) > BezierCurve(x0: 209, y0: 892, x1: 207, y1: 894, cx0: 209, cy0: 893, cx1: 208, cy1: 894) > BezierCurve(x0: 13, y0: 894, x1: 11, y1: 892, cx0: 12, cy0: 894, cx1: 11, cy1: 893)) Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 540, y0: 490, x1: 543, y1: 489, cx0: 541, cy0: 490, cx1: 542, cy1: 489) > BezierCurve(x0: 737, y0: 489, x1: 739, y1: 490, cx0: 737, cy0: 489, cx1: 738, cy1: 490) > BezierCurve(x0: 738, y0: 491, x1: 737, y1: 490, cx0: 738, cy0: 490, cx1: 737, cy1: 490) > BezierCurve(x0: 543, y0: 490, x1: 541, y1: 491, cx0: 542, cy0: 490, cx1: 542, cy1: 490)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 490, x1: 740, y1: 492, cx0: 739, cy0: 491, cx1: 740, cy1: 491) > BezierCurve(x0: 740, y0: 686, x1: 739, y1: 688, cx0: 740, cy0: 687, cx1: 739, cy1: 688) > BezierCurve(x0: 738, y0: 688, x1: 739, y1: 686, cx0: 738, cy0: 687, cx1: 739, cy1: 687) > BezierCurve(x0: 739, y0: 492, x1: 738, y1: 491, cx0: 739, cy0: 492, cx1: 738, cy1: 491)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 688, x1: 737, y1: 689, cx0: 738, cy0: 689, cx1: 737, cy1: 689) > BezierCurve(x0: 543, y0: 689, x1: 540, y1: 688, cx0: 542, cy0: 689, cx1: 541, cy1: 689) > BezierCurve(x0: 541, y0: 688, x1: 543, y1: 688, cx0: 542, cy0: 688, cx1: 542, cy1: 688) > BezierCurve(x0: 737, y0: 688, x1: 738, y1: 688, cx0: 737, cy0: 688, cx1: 738, cy1: 688)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 540, y0: 688, x1: 540, y1: 686, cx0: 540, cy0: 688, cx1: 540, cy1: 687) > BezierCurve(x0: 540, y0: 492, x1: 540, y1: 490, cx0: 540, cy0: 491, cx1: 540, cy1: 491) > BezierCurve(x0: 541, y0: 491, x1: 541, y1: 492, cx0: 541, cy0: 491, cx1: 541, cy1: 492) > BezierCurve(x0: 541, y0: 686, x1: 541, y1: 688, cx0: 541, cy0: 687, cx1: 541, cy1: 687)) -Text: rgb(42,42,42) normal normal 400 197px Arial - [573, 688]: ✔ -Transform: (579, 243) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 574, y0: 239, x1: 579, y1: 234, cx0: 574, cy0: 236, cx1: 576, cy1: 234) > BezierCurve(x0: 579, y0: 234, x1: 585, y1: 239, cx0: 582, cy0: 234, cx1: 585, cy1: 236) > BezierCurve(x0: 585, y0: 239, x1: 579, y1: 245, cx0: 585, cy0: 242, cx1: 582, cy1: 245) > BezierCurve(x0: 579, y0: 245, x1: 574, y1: 239, cx0: 576, cy0: 245, cx1: 574, cy1: 242)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 696, x1: 13, y1: 695, cx0: 11, cy0: 696, cx1: 12, cy1: 695) > BezierCurve(x0: 207, y0: 695, x1: 209, y1: 696, cx0: 208, cy0: 695, cx1: 209, cy1: 696) > BezierCurve(x0: 208, y0: 697, x1: 207, y1: 696, cx0: 208, cy0: 696, cx1: 208, cy1: 696) > BezierCurve(x0: 13, y0: 696, x1: 12, y1: 697, cx0: 12, cy0: 696, cx1: 12, cy1: 696)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 209, y0: 696, x1: 210, y1: 698, cx0: 210, cy0: 697, cx1: 210, cy1: 697) > BezierCurve(x0: 210, y0: 892, x1: 209, y1: 894, cx0: 210, cy0: 893, cx1: 210, cy1: 894) > BezierCurve(x0: 208, y0: 894, x1: 209, y1: 892, cx0: 209, cy0: 893, cx1: 209, cy1: 893) > BezierCurve(x0: 209, y0: 698, x1: 208, y1: 697, cx0: 209, cy0: 698, cx1: 209, cy1: 697)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 209, y0: 894, x1: 207, y1: 895, cx0: 209, cy0: 895, cx1: 208, cy1: 895) > BezierCurve(x0: 13, y0: 895, x1: 11, y1: 894, cx0: 12, cy0: 895, cx1: 11, cy1: 895) > BezierCurve(x0: 12, y0: 894, x1: 13, y1: 894, cx0: 12, cy0: 894, cx1: 12, cy1: 894) > BezierCurve(x0: 207, y0: 894, x1: 208, y1: 894, cx0: 208, cy0: 894, cx1: 208, cy1: 894)) +Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 894, x1: 10, y1: 892, cx0: 10, cy0: 894, cx1: 10, cy1: 893) > BezierCurve(x0: 10, y0: 698, x1: 11, y1: 696, cx0: 10, cy0: 697, cx1: 10, cy1: 697) > BezierCurve(x0: 12, y0: 697, x1: 11, y1: 698, cx0: 11, cy0: 697, cx1: 11, cy1: 698) > BezierCurve(x0: 11, y0: 892, x1: 12, y1: 894, cx0: 11, cy0: 893, cx1: 11, cy1: 893)) +Clip: Path (BezierCurve(x0: 11, y0: 698, x1: 13, y1: 696, cx0: 11, cy0: 697, cx1: 12, cy1: 696) > BezierCurve(x0: 207, y0: 696, x1: 209, y1: 698, cx0: 208, cy0: 696, cx1: 209, cy1: 697) > BezierCurve(x0: 209, y0: 892, x1: 207, y1: 894, cx0: 209, cy0: 893, cx1: 208, cy1: 894) > BezierCurve(x0: 13, y0: 894, x1: 11, y1: 892, cx0: 12, cy0: 894, cx1: 11, cy1: 893)) + Shape: rgb(42,42,42) Path (Vector(x: 89, y: 853) > Vector(x: 42, y: 806) > Vector(x: 65, y: 783) > Vector(x: 89, y: 808) > Vector(x: 156, y: 741) > Vector(x: 178, y: 763) > Vector(x: 89, y: 853)) +Transform: (733, 221) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 728, y0: 217, x1: 733, y1: 212, cx0: 728, cy0: 214, cx1: 730, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 739, y1: 217, cx0: 736, cy0: 212, cx1: 739, cy1: 214) > BezierCurve(x0: 739, y0: 217, x1: 733, y1: 223, cx0: 739, cy0: 220, cx1: 736, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 728, y1: 217, cx0: 730, cy0: 223, cx1: 728, cy1: 220)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 575, y0: 235, x1: 579, y1: 233, cx0: 576, cy0: 234, cx1: 577, cy1: 233) > BezierCurve(x0: 579, y0: 233, x1: 584, y1: 235, cx0: 581, cy0: 233, cx1: 583, cy1: 234) > BezierCurve(x0: 583, y0: 235, x1: 579, y1: 234, cx0: 582, cy0: 234, cx1: 581, cy1: 234) > BezierCurve(x0: 579, y0: 234, x1: 575, y1: 235, cx0: 578, cy0: 234, cx1: 576, cy1: 234)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 584, y0: 235, x1: 586, y1: 239, cx0: 585, cy0: 236, cx1: 586, cy1: 237) > BezierCurve(x0: 586, y0: 239, x1: 584, y1: 244, cx0: 586, cy0: 241, cx1: 585, cy1: 243) > BezierCurve(x0: 583, y0: 243, x1: 585, y1: 239, cx0: 584, cy0: 242, cx1: 585, cy1: 241) > BezierCurve(x0: 585, y0: 239, x1: 583, y1: 235, cx0: 585, cy0: 238, cx1: 584, cy1: 236)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 584, y0: 244, x1: 579, y1: 246, cx0: 583, cy0: 245, cx1: 581, cy1: 246) > BezierCurve(x0: 579, y0: 246, x1: 575, y1: 244, cx0: 577, cy0: 246, cx1: 576, cy1: 245) > BezierCurve(x0: 575, y0: 243, x1: 579, y1: 245, cx0: 576, cy0: 244, cx1: 578, cy1: 245) > BezierCurve(x0: 579, y0: 245, x1: 583, y1: 243, cx0: 581, cy0: 245, cx1: 582, cy1: 244)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 575, y0: 244, x1: 573, y1: 239, cx0: 574, cy0: 243, cx1: 573, cy1: 241) > BezierCurve(x0: 573, y0: 239, x1: 575, y1: 235, cx0: 573, cy0: 237, cx1: 574, cy1: 236) > BezierCurve(x0: 575, y0: 235, x1: 574, y1: 239, cx0: 574, cy0: 236, cx1: 574, cy1: 238) > BezierCurve(x0: 574, y0: 239, x1: 575, y1: 243, cx0: 574, cy0: 241, cx1: 574, cy1: 242)) -Transform: (653, 243) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 647, y0: 239, x1: 653, y1: 234, cx0: 647, cy0: 236, cx1: 650, cy1: 234) > BezierCurve(x0: 653, y0: 234, x1: 658, y1: 239, cx0: 656, cy0: 234, cx1: 658, cy1: 236) > BezierCurve(x0: 658, y0: 239, x1: 653, y1: 245, cx0: 658, cy0: 242, cx1: 656, cy1: 245) > BezierCurve(x0: 653, y0: 245, x1: 647, y1: 239, cx0: 650, cy0: 245, cx1: 647, cy1: 242)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 729, y0: 213, x1: 733, y1: 211, cx0: 730, cy0: 212, cx1: 731, cy1: 211) > BezierCurve(x0: 733, y0: 211, x1: 738, y1: 213, cx0: 735, cy0: 211, cx1: 737, cy1: 212) > BezierCurve(x0: 737, y0: 213, x1: 733, y1: 212, cx0: 736, cy0: 212, cx1: 735, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 729, y1: 213, cx0: 732, cy0: 212, cx1: 730, cy1: 212)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 738, y0: 213, x1: 740, y1: 217, cx0: 739, cy0: 214, cx1: 740, cy1: 215) > BezierCurve(x0: 740, y0: 217, x1: 738, y1: 222, cx0: 740, cy0: 219, cx1: 739, cy1: 221) > BezierCurve(x0: 737, y0: 221, x1: 739, y1: 217, cx0: 738, cy0: 220, cx1: 739, cy1: 219) > BezierCurve(x0: 739, y0: 217, x1: 737, y1: 213, cx0: 739, cy0: 216, cx1: 738, cy1: 214)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 738, y0: 222, x1: 733, y1: 224, cx0: 737, cy0: 223, cx1: 735, cy1: 224) > BezierCurve(x0: 733, y0: 224, x1: 729, y1: 222, cx0: 731, cy0: 224, cx1: 730, cy1: 223) > BezierCurve(x0: 729, y0: 221, x1: 733, y1: 223, cx0: 730, cy0: 222, cx1: 732, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 737, y1: 221, cx0: 735, cy0: 223, cx1: 736, cy1: 222)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 729, y0: 222, x1: 727, y1: 217, cx0: 728, cy0: 221, cx1: 727, cy1: 219) > BezierCurve(x0: 727, y0: 217, x1: 729, y1: 213, cx0: 727, cy0: 215, cx1: 728, cy1: 214) > BezierCurve(x0: 729, y0: 213, x1: 728, y1: 217, cx0: 728, cy0: 214, cx1: 728, cy1: 216) > BezierCurve(x0: 728, y0: 217, x1: 729, y1: 221, cx0: 728, cy0: 219, cx1: 728, cy1: 220)) + Clip: Path (BezierCurve(x0: 728, y0: 217, x1: 733, y1: 212, cx0: 728, cy0: 214, cx1: 730, cy1: 212) > BezierCurve(x0: 733, y0: 212, x1: 739, y1: 217, cx0: 736, cy0: 212, cx1: 739, cy1: 214) > BezierCurve(x0: 739, y0: 217, x1: 733, y1: 223, cx0: 739, cy0: 220, cx1: 736, cy1: 223) > BezierCurve(x0: 733, y0: 223, x1: 728, y1: 217, cx0: 730, cy0: 223, cx1: 728, cy1: 220)) +Transform: (16, 269) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 11, y0: 265, x1: 16, y1: 260, cx0: 11, cy0: 262, cx1: 13, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 22, y1: 265, cx0: 19, cy0: 260, cx1: 22, cy1: 262) > BezierCurve(x0: 22, y0: 265, x1: 16, y1: 271, cx0: 22, cy0: 268, cx1: 19, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 11, y1: 265, cx0: 13, cy0: 271, cx1: 11, cy1: 268)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 648, y0: 235, x1: 653, y1: 233, cx0: 649, cy0: 234, cx1: 651, cy1: 233) > BezierCurve(x0: 653, y0: 233, x1: 657, y1: 235, cx0: 655, cy0: 233, cx1: 656, cy1: 234) > BezierCurve(x0: 657, y0: 235, x1: 653, y1: 234, cx0: 656, cy0: 234, cx1: 654, cy1: 234) > BezierCurve(x0: 653, y0: 234, x1: 649, y1: 235, cx0: 651, cy0: 234, cx1: 650, cy1: 234)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 657, y0: 235, x1: 659, y1: 239, cx0: 658, cy0: 236, cx1: 659, cy1: 237) > BezierCurve(x0: 659, y0: 239, x1: 657, y1: 244, cx0: 659, cy0: 241, cx1: 658, cy1: 243) > BezierCurve(x0: 657, y0: 243, x1: 658, y1: 239, cx0: 658, cy0: 242, cx1: 658, cy1: 241) > BezierCurve(x0: 658, y0: 239, x1: 657, y1: 235, cx0: 658, cy0: 238, cx1: 658, cy1: 236)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 657, y0: 244, x1: 653, y1: 246, cx0: 656, cy0: 245, cx1: 655, cy1: 246) > BezierCurve(x0: 653, y0: 246, x1: 648, y1: 244, cx0: 651, cy0: 246, cx1: 649, cy1: 245) > BezierCurve(x0: 649, y0: 243, x1: 653, y1: 245, cx0: 650, cy0: 244, cx1: 651, cy1: 245) > BezierCurve(x0: 653, y0: 245, x1: 657, y1: 243, cx0: 654, cy0: 245, cx1: 656, cy1: 244)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 648, y0: 244, x1: 646, y1: 239, cx0: 647, cy0: 243, cx1: 646, cy1: 241) > BezierCurve(x0: 646, y0: 239, x1: 648, y1: 235, cx0: 646, cy0: 237, cx1: 647, cy1: 236) > BezierCurve(x0: 649, y0: 235, x1: 647, y1: 239, cx0: 648, cy0: 236, cx1: 647, cy1: 238) > BezierCurve(x0: 647, y0: 239, x1: 649, y1: 243, cx0: 647, cy0: 241, cx1: 648, cy1: 242)) - Shape: rgb(42,42,42) Circle(x: 650, y: 236, r: 3) -Transform: (690, 243) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 684, y0: 239, x1: 690, y1: 234, cx0: 684, cy0: 236, cx1: 687, cy1: 234) > BezierCurve(x0: 690, y0: 234, x1: 695, y1: 239, cx0: 693, cy0: 234, cx1: 695, cy1: 236) > BezierCurve(x0: 695, y0: 239, x1: 690, y1: 245, cx0: 695, cy0: 242, cx1: 693, cy1: 245) > BezierCurve(x0: 690, y0: 245, x1: 684, y1: 239, cx0: 687, cy0: 245, cx1: 684, cy1: 242)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 12, y0: 261, x1: 16, y1: 259, cx0: 13, cy0: 260, cx1: 15, cy1: 259) > BezierCurve(x0: 16, y0: 259, x1: 21, y1: 261, cx0: 18, cy0: 259, cx1: 20, cy1: 260) > BezierCurve(x0: 20, y0: 261, x1: 16, y1: 260, cx0: 19, cy0: 260, cx1: 18, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 13, y1: 261, cx0: 15, cy0: 260, cx1: 14, cy1: 260)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 21, y0: 261, x1: 23, y1: 265, cx0: 22, cy0: 262, cx1: 23, cy1: 263) > BezierCurve(x0: 23, y0: 265, x1: 21, y1: 270, cx0: 23, cy0: 267, cx1: 22, cy1: 269) > BezierCurve(x0: 20, y0: 269, x1: 22, y1: 265, cx0: 21, cy0: 268, cx1: 22, cy1: 267) > BezierCurve(x0: 22, y0: 265, x1: 20, y1: 261, cx0: 22, cy0: 264, cx1: 21, cy1: 262)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 21, y0: 270, x1: 16, y1: 272, cx0: 20, cy0: 271, cx1: 18, cy1: 272) > BezierCurve(x0: 16, y0: 272, x1: 12, y1: 270, cx0: 15, cy0: 272, cx1: 13, cy1: 271) > BezierCurve(x0: 13, y0: 269, x1: 16, y1: 271, cx0: 14, cy0: 270, cx1: 15, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 20, y1: 269, cx0: 18, cy0: 271, cx1: 19, cy1: 270)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 12, y0: 270, x1: 10, y1: 265, cx0: 11, cy0: 269, cx1: 10, cy1: 267) > BezierCurve(x0: 10, y0: 265, x1: 12, y1: 261, cx0: 10, cy0: 263, cx1: 11, cy1: 262) > BezierCurve(x0: 13, y0: 261, x1: 11, y1: 265, cx0: 12, cy0: 262, cx1: 11, cy1: 264) > BezierCurve(x0: 11, y0: 265, x1: 13, y1: 269, cx0: 11, cy0: 267, cx1: 12, cy1: 268)) + Clip: Path (BezierCurve(x0: 11, y0: 265, x1: 16, y1: 260, cx0: 11, cy0: 262, cx1: 13, cy1: 260) > BezierCurve(x0: 16, y0: 260, x1: 22, y1: 265, cx0: 19, cy0: 260, cx1: 22, cy1: 262) > BezierCurve(x0: 22, y0: 265, x1: 16, y1: 271, cx0: 22, cy0: 268, cx1: 19, cy1: 271) > BezierCurve(x0: 16, y0: 271, x1: 11, y1: 265, cx0: 13, cy0: 271, cx1: 11, cy1: 268)) + Shape: rgb(42,42,42) Circle(x: 13, y: 262, r: 3) +Transform: (53, 269) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 48, y0: 265, x1: 53, y1: 260, cx0: 48, cy0: 262, cx1: 50, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 59, y1: 265, cx0: 56, cy0: 260, cx1: 59, cy1: 262) > BezierCurve(x0: 59, y0: 265, x1: 53, y1: 271, cx0: 59, cy0: 268, cx1: 56, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 48, y1: 265, cx0: 50, cy0: 271, cx1: 48, cy1: 268)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 685, y0: 235, x1: 690, y1: 233, cx0: 686, cy0: 234, cx1: 688, cy1: 233) > BezierCurve(x0: 690, y0: 233, x1: 694, y1: 235, cx0: 691, cy0: 233, cx1: 693, cy1: 234) > BezierCurve(x0: 693, y0: 235, x1: 690, y1: 234, cx0: 692, cy0: 234, cx1: 691, cy1: 234) > BezierCurve(x0: 690, y0: 234, x1: 686, y1: 235, cx0: 688, cy0: 234, cx1: 687, cy1: 234)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 694, y0: 235, x1: 696, y1: 239, cx0: 695, cy0: 236, cx1: 696, cy1: 237) > BezierCurve(x0: 696, y0: 239, x1: 694, y1: 244, cx0: 696, cy0: 241, cx1: 695, cy1: 243) > BezierCurve(x0: 693, y0: 243, x1: 695, y1: 239, cx0: 694, cy0: 242, cx1: 695, cy1: 241) > BezierCurve(x0: 695, y0: 239, x1: 693, y1: 235, cx0: 695, cy0: 238, cx1: 694, cy1: 236)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 694, y0: 244, x1: 690, y1: 246, cx0: 693, cy0: 245, cx1: 691, cy1: 246) > BezierCurve(x0: 690, y0: 246, x1: 685, y1: 244, cx0: 688, cy0: 246, cx1: 686, cy1: 245) > BezierCurve(x0: 686, y0: 243, x1: 690, y1: 245, cx0: 687, cy0: 244, cx1: 688, cy1: 245) > BezierCurve(x0: 690, y0: 245, x1: 693, y1: 243, cx0: 691, cy0: 245, cx1: 692, cy1: 244)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 685, y0: 244, x1: 683, y1: 239, cx0: 684, cy0: 243, cx1: 683, cy1: 241) > BezierCurve(x0: 683, y0: 239, x1: 685, y1: 235, cx0: 683, cy0: 237, cx1: 684, cy1: 236) > BezierCurve(x0: 686, y0: 235, x1: 684, y1: 239, cx0: 685, cy0: 236, cx1: 684, cy1: 238) > BezierCurve(x0: 684, y0: 239, x1: 686, y1: 243, cx0: 684, cy0: 241, cx1: 685, cy1: 242)) -Transform: (733, 463) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 728, y0: 456, x1: 730, y1: 454, cx0: 728, cy0: 455, cx1: 729, cy1: 454) > BezierCurve(x0: 737, y0: 454, x1: 739, y1: 456, cx0: 738, cy0: 454, cx1: 739, cy1: 455) > BezierCurve(x0: 739, y0: 463, x1: 737, y1: 465, cx0: 739, cy0: 464, cx1: 738, cy1: 465) > BezierCurve(x0: 730, y0: 465, x1: 728, y1: 463, cx0: 729, cy0: 465, cx1: 728, cy1: 464)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 49, y0: 261, x1: 53, y1: 259, cx0: 50, cy0: 260, cx1: 51, cy1: 259) > BezierCurve(x0: 53, y0: 259, x1: 58, y1: 261, cx0: 55, cy0: 259, cx1: 57, cy1: 260) > BezierCurve(x0: 57, y0: 261, x1: 53, y1: 260, cx0: 56, cy0: 260, cx1: 55, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 49, y1: 261, cx0: 52, cy0: 260, cx1: 50, cy1: 260)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 58, y0: 261, x1: 60, y1: 265, cx0: 59, cy0: 262, cx1: 60, cy1: 263) > BezierCurve(x0: 60, y0: 265, x1: 58, y1: 270, cx0: 60, cy0: 267, cx1: 59, cy1: 269) > BezierCurve(x0: 57, y0: 269, x1: 59, y1: 265, cx0: 58, cy0: 268, cx1: 59, cy1: 267) > BezierCurve(x0: 59, y0: 265, x1: 57, y1: 261, cx0: 59, cy0: 264, cx1: 58, cy1: 262)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 58, y0: 270, x1: 53, y1: 272, cx0: 57, cy0: 271, cx1: 55, cy1: 272) > BezierCurve(x0: 53, y0: 272, x1: 49, y1: 270, cx0: 51, cy0: 272, cx1: 50, cy1: 271) > BezierCurve(x0: 49, y0: 269, x1: 53, y1: 271, cx0: 50, cy0: 270, cx1: 52, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 57, y1: 269, cx0: 55, cy0: 271, cx1: 56, cy1: 270)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 49, y0: 270, x1: 47, y1: 265, cx0: 48, cy0: 269, cx1: 47, cy1: 267) > BezierCurve(x0: 47, y0: 265, x1: 49, y1: 261, cx0: 47, cy0: 263, cx1: 48, cy1: 262) > BezierCurve(x0: 49, y0: 261, x1: 48, y1: 265, cx0: 48, cy0: 262, cx1: 48, cy1: 264) > BezierCurve(x0: 48, y0: 265, x1: 49, y1: 269, cx0: 48, cy0: 267, cx1: 48, cy1: 268)) + Clip: Path (BezierCurve(x0: 48, y0: 265, x1: 53, y1: 260, cx0: 48, cy0: 262, cx1: 50, cy1: 260) > BezierCurve(x0: 53, y0: 260, x1: 59, y1: 265, cx0: 56, cy0: 260, cx1: 59, cy1: 262) > BezierCurve(x0: 59, y0: 265, x1: 53, y1: 271, cx0: 59, cy0: 268, cx1: 56, cy1: 271) > BezierCurve(x0: 53, y0: 271, x1: 48, y1: 265, cx0: 50, cy0: 271, cx1: 48, cy1: 268)) +Transform: (16, 489) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 11, y0: 482, x1: 13, y1: 480, cx0: 11, cy0: 481, cx1: 12, cy1: 480) > BezierCurve(x0: 20, y0: 480, x1: 22, y1: 482, cx0: 21, cy0: 480, cx1: 22, cy1: 481) > BezierCurve(x0: 22, y0: 489, x1: 20, y1: 491, cx0: 22, cy0: 490, cx1: 21, cy1: 491) > BezierCurve(x0: 13, y0: 491, x1: 11, y1: 489, cx0: 12, cy0: 491, cx1: 11, cy1: 490)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 728, y0: 454, x1: 730, y1: 453, cx0: 728, cy0: 453, cx1: 729, cy1: 453) > BezierCurve(x0: 737, y0: 453, x1: 739, y1: 454, cx0: 737, cy0: 453, cx1: 738, cy1: 453) > BezierCurve(x0: 738, y0: 454, x1: 737, y1: 454, cx0: 738, cy0: 454, cx1: 737, cy1: 454) > BezierCurve(x0: 730, y0: 454, x1: 728, y1: 454, cx0: 729, cy0: 454, cx1: 729, cy1: 454)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 454, x1: 740, y1: 456, cx0: 739, cy0: 454, cx1: 740, cy1: 455) > BezierCurve(x0: 740, y0: 463, x1: 739, y1: 465, cx0: 740, cy0: 463, cx1: 739, cy1: 464) > BezierCurve(x0: 738, y0: 464, x1: 739, y1: 463, cx0: 738, cy0: 464, cx1: 739, cy1: 463) > BezierCurve(x0: 739, y0: 456, x1: 738, y1: 454, cx0: 739, cy0: 455, cx1: 738, cy1: 455)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 739, y0: 465, x1: 737, y1: 466, cx0: 738, cy0: 465, cx1: 737, cy1: 466) > BezierCurve(x0: 730, y0: 466, x1: 728, y1: 465, cx0: 729, cy0: 466, cx1: 728, cy1: 465) > BezierCurve(x0: 728, y0: 464, x1: 730, y1: 465, cx0: 729, cy0: 464, cx1: 729, cy1: 465) > BezierCurve(x0: 737, y0: 465, x1: 738, y1: 464, cx0: 737, cy0: 465, cx1: 738, cy1: 464)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 728, y0: 465, x1: 727, y1: 463, cx0: 727, cy0: 464, cx1: 727, cy1: 463) > BezierCurve(x0: 727, y0: 456, x1: 728, y1: 454, cx0: 727, cy0: 455, cx1: 727, cy1: 454) > BezierCurve(x0: 728, y0: 454, x1: 728, y1: 456, cx0: 728, cy0: 455, cx1: 728, cy1: 455) > BezierCurve(x0: 728, y0: 463, x1: 728, y1: 464, cx0: 728, cy0: 463, cx1: 728, cy1: 464)) -Transform: (24, 683) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 19, y0: 676, x1: 21, y1: 674, cx0: 19, cy0: 675, cx1: 20, cy1: 674) > BezierCurve(x0: 28, y0: 674, x1: 30, y1: 676, cx0: 29, cy0: 674, cx1: 30, cy1: 675) > BezierCurve(x0: 30, y0: 683, x1: 28, y1: 685, cx0: 30, cy0: 684, cx1: 29, cy1: 685) > BezierCurve(x0: 21, y0: 685, x1: 19, y1: 683, cx0: 20, cy0: 685, cx1: 19, cy1: 684)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 480, x1: 13, y1: 479, cx0: 11, cy0: 479, cx1: 12, cy1: 479) > BezierCurve(x0: 20, y0: 479, x1: 22, y1: 480, cx0: 21, cy0: 479, cx1: 21, cy1: 479) > BezierCurve(x0: 21, y0: 480, x1: 20, y1: 480, cx0: 21, cy0: 480, cx1: 20, cy1: 480) > BezierCurve(x0: 13, y0: 480, x1: 12, y1: 480, cx0: 12, cy0: 480, cx1: 12, cy1: 480)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 22, y0: 480, x1: 23, y1: 482, cx0: 22, cy0: 480, cx1: 23, cy1: 481) > BezierCurve(x0: 23, y0: 489, x1: 22, y1: 491, cx0: 23, cy0: 489, cx1: 22, cy1: 490) > BezierCurve(x0: 21, y0: 490, x1: 22, y1: 489, cx0: 22, cy0: 490, cx1: 22, cy1: 489) > BezierCurve(x0: 22, y0: 482, x1: 21, y1: 480, cx0: 22, cy0: 481, cx1: 22, cy1: 481)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 22, y0: 491, x1: 20, y1: 492, cx0: 21, cy0: 491, cx1: 21, cy1: 492) > BezierCurve(x0: 13, y0: 492, x1: 11, y1: 491, cx0: 12, cy0: 492, cx1: 11, cy1: 491) > BezierCurve(x0: 12, y0: 490, x1: 13, y1: 491, cx0: 12, cy0: 490, cx1: 12, cy1: 491) > BezierCurve(x0: 20, y0: 491, x1: 21, y1: 490, cx0: 20, cy0: 491, cx1: 21, cy1: 490)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 11, y0: 491, x1: 10, y1: 489, cx0: 10, cy0: 490, cx1: 10, cy1: 489) > BezierCurve(x0: 10, y0: 482, x1: 11, y1: 480, cx0: 10, cy0: 481, cx1: 10, cy1: 480) > BezierCurve(x0: 12, y0: 480, x1: 11, y1: 482, cx0: 11, cy0: 481, cx1: 11, cy1: 481) > BezierCurve(x0: 11, y0: 489, x1: 12, y1: 490, cx0: 11, cy0: 489, cx1: 11, cy1: 490)) + Clip: Path (BezierCurve(x0: 11, y0: 482, x1: 13, y1: 480, cx0: 11, cy0: 481, cx1: 12, cy1: 480) > BezierCurve(x0: 20, y0: 480, x1: 22, y1: 482, cx0: 21, cy0: 480, cx1: 22, cy1: 481) > BezierCurve(x0: 22, y0: 489, x1: 20, y1: 491, cx0: 22, cy0: 490, cx1: 21, cy1: 491) > BezierCurve(x0: 13, y0: 491, x1: 11, y1: 489, cx0: 12, cy0: 491, cx1: 11, cy1: 490)) +Transform: (90, 489) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 85, y0: 482, x1: 87, y1: 480, cx0: 85, cy0: 481, cx1: 85, cy1: 480) > BezierCurve(x0: 93, y0: 480, x1: 95, y1: 482, cx0: 95, cy0: 480, cx1: 95, cy1: 481) > BezierCurve(x0: 95, y0: 489, x1: 93, y1: 491, cx0: 95, cy0: 490, cx1: 95, cy1: 491) > BezierCurve(x0: 87, y0: 491, x1: 85, y1: 489, cx0: 85, cy0: 491, cx1: 85, cy1: 490)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 674, x1: 21, y1: 673, cx0: 19, cy0: 673, cx1: 20, cy1: 673) > BezierCurve(x0: 28, y0: 673, x1: 30, y1: 674, cx0: 29, cy0: 673, cx1: 29, cy1: 673) > BezierCurve(x0: 29, y0: 674, x1: 28, y1: 674, cx0: 29, cy0: 674, cx1: 28, cy1: 674) > BezierCurve(x0: 21, y0: 674, x1: 20, y1: 674, cx0: 20, cy0: 674, cx1: 20, cy1: 674)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 30, y0: 674, x1: 31, y1: 676, cx0: 30, cy0: 674, cx1: 31, cy1: 675) > BezierCurve(x0: 31, y0: 683, x1: 30, y1: 685, cx0: 31, cy0: 683, cx1: 30, cy1: 684) > BezierCurve(x0: 29, y0: 684, x1: 30, y1: 683, cx0: 30, cy0: 684, cx1: 30, cy1: 683) > BezierCurve(x0: 30, y0: 676, x1: 29, y1: 674, cx0: 30, cy0: 675, cx1: 30, cy1: 675)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 30, y0: 685, x1: 28, y1: 686, cx0: 29, cy0: 685, cx1: 29, cy1: 686) > BezierCurve(x0: 21, y0: 686, x1: 19, y1: 685, cx0: 20, cy0: 686, cx1: 19, cy1: 685) > BezierCurve(x0: 20, y0: 684, x1: 21, y1: 685, cx0: 20, cy0: 684, cx1: 20, cy1: 685) > BezierCurve(x0: 28, y0: 685, x1: 29, y1: 684, cx0: 28, cy0: 685, cx1: 29, cy1: 684)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 685, x1: 18, y1: 683, cx0: 18, cy0: 684, cx1: 18, cy1: 683) > BezierCurve(x0: 18, y0: 676, x1: 19, y1: 674, cx0: 18, cy0: 675, cx1: 18, cy1: 674) > BezierCurve(x0: 20, y0: 674, x1: 19, y1: 676, cx0: 19, cy0: 675, cx1: 19, cy1: 675) > BezierCurve(x0: 19, y0: 683, x1: 20, y1: 684, cx0: 19, cy0: 683, cx1: 19, cy1: 684)) - Text: rgb(42,42,42) normal normal 400 9.800000190734863px Arial - [20, 685]: ✔ -Transform: (61, 683) [3, 0, 0, 3, 0, 0] - Clip: Path (BezierCurve(x0: 56, y0: 676, x1: 58, y1: 674, cx0: 56, cy0: 675, cx1: 57, cy1: 674) > BezierCurve(x0: 65, y0: 674, x1: 67, y1: 676, cx0: 66, cy0: 674, cx1: 67, cy1: 675) > BezierCurve(x0: 67, y0: 683, x1: 65, y1: 685, cx0: 67, cy0: 684, cx1: 66, cy1: 685) > BezierCurve(x0: 58, y0: 685, x1: 56, y1: 683, cx0: 57, cy0: 685, cx1: 56, cy1: 684)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 84, y0: 480, x1: 87, y1: 479, cx0: 85, cy0: 479, cx1: 86, cy1: 479) > BezierCurve(x0: 93, y0: 479, x1: 96, y1: 480, cx0: 94, cy0: 479, cx1: 95, cy1: 479) > BezierCurve(x0: 95, y0: 480, x1: 93, y1: 480, cx0: 94, cy0: 480, cx1: 94, cy1: 480) > BezierCurve(x0: 87, y0: 480, x1: 85, y1: 480, cx0: 86, cy0: 480, cx1: 86, cy1: 480)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 96, y0: 480, x1: 96, y1: 482, cx0: 96, cy0: 480, cx1: 96, cy1: 481) > BezierCurve(x0: 96, y0: 489, x1: 96, y1: 491, cx0: 96, cy0: 489, cx1: 96, cy1: 490) > BezierCurve(x0: 95, y0: 490, x1: 95, y1: 489, cx0: 95, cy0: 490, cx1: 95, cy1: 489) > BezierCurve(x0: 95, y0: 482, x1: 95, y1: 480, cx0: 95, cy0: 481, cx1: 95, cy1: 481)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 96, y0: 491, x1: 93, y1: 492, cx0: 95, cy0: 491, cx1: 94, cy1: 492) > BezierCurve(x0: 87, y0: 492, x1: 84, y1: 491, cx0: 86, cy0: 492, cx1: 85, cy1: 491) > BezierCurve(x0: 85, y0: 490, x1: 87, y1: 491, cx0: 86, cy0: 490, cx1: 86, cy1: 491) > BezierCurve(x0: 93, y0: 491, x1: 95, y1: 490, cx0: 94, cy0: 491, cx1: 94, cy1: 490)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 84, y0: 491, x1: 84, y1: 489, cx0: 84, cy0: 490, cx1: 84, cy1: 489) > BezierCurve(x0: 84, y0: 482, x1: 84, y1: 480, cx0: 84, cy0: 481, cx1: 84, cy1: 480) > BezierCurve(x0: 85, y0: 480, x1: 85, y1: 482, cx0: 85, cy0: 481, cx1: 85, cy1: 481) > BezierCurve(x0: 85, y0: 489, x1: 85, y1: 490, cx0: 85, cy0: 489, cx1: 85, cy1: 490)) + Clip: Path (BezierCurve(x0: 85, y0: 482, x1: 87, y1: 480, cx0: 85, cy0: 481, cx1: 85, cy1: 480) > BezierCurve(x0: 93, y0: 480, x1: 95, y1: 482, cx0: 95, cy0: 480, cx1: 95, cy1: 481) > BezierCurve(x0: 95, y0: 489, x1: 93, y1: 491, cx0: 95, cy0: 490, cx1: 95, cy1: 491) > BezierCurve(x0: 87, y0: 491, x1: 85, y1: 489, cx0: 85, cy0: 491, cx1: 85, cy1: 490)) + Shape: rgb(42,42,42) Path (Vector(x: 89, y: 489) > Vector(x: 86, y: 486) > Vector(x: 87, y: 484) > Vector(x: 89, y: 486) > Vector(x: 93, y: 482) > Vector(x: 94, y: 483) > Vector(x: 89, y: 489)) +Transform: (127, 489) [3, 0, 0, 3, 0, 0] + Clip: Path (BezierCurve(x0: 121, y0: 482, x1: 123, y1: 480, cx0: 121, cy0: 481, cx1: 122, cy1: 480) > BezierCurve(x0: 130, y0: 480, x1: 132, y1: 482, cx0: 131, cy0: 480, cx1: 132, cy1: 481) > BezierCurve(x0: 132, y0: 489, x1: 130, y1: 491, cx0: 132, cy0: 490, cx1: 131, cy1: 491) > BezierCurve(x0: 123, y0: 491, x1: 121, y1: 489, cx0: 122, cy0: 491, cx1: 121, cy1: 490)) Fill: rgb(222,222,222) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 56, y0: 674, x1: 58, y1: 673, cx0: 56, cy0: 673, cx1: 57, cy1: 673) > BezierCurve(x0: 65, y0: 673, x1: 67, y1: 674, cx0: 65, cy0: 673, cx1: 66, cy1: 673) > BezierCurve(x0: 66, y0: 674, x1: 65, y1: 674, cx0: 66, cy0: 674, cx1: 65, cy1: 674) > BezierCurve(x0: 58, y0: 674, x1: 56, y1: 674, cx0: 57, cy0: 674, cx1: 57, cy1: 674)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 67, y0: 674, x1: 68, y1: 676, cx0: 67, cy0: 674, cx1: 68, cy1: 675) > BezierCurve(x0: 68, y0: 683, x1: 67, y1: 685, cx0: 68, cy0: 683, cx1: 67, cy1: 684) > BezierCurve(x0: 66, y0: 684, x1: 67, y1: 683, cx0: 66, cy0: 684, cx1: 67, cy1: 683) > BezierCurve(x0: 67, y0: 676, x1: 66, y1: 674, cx0: 67, cy0: 675, cx1: 66, cy1: 675)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 67, y0: 685, x1: 65, y1: 686, cx0: 66, cy0: 685, cx1: 65, cy1: 686) > BezierCurve(x0: 58, y0: 686, x1: 56, y1: 685, cx0: 57, cy0: 686, cx1: 56, cy1: 685) > BezierCurve(x0: 56, y0: 684, x1: 58, y1: 685, cx0: 57, cy0: 684, cx1: 57, cy1: 685) > BezierCurve(x0: 65, y0: 685, x1: 66, y1: 684, cx0: 65, cy0: 685, cx1: 66, cy1: 684)) - Shape: rgb(165,165,165) Path (BezierCurve(x0: 56, y0: 685, x1: 55, y1: 683, cx0: 55, cy0: 684, cx1: 55, cy1: 683) > BezierCurve(x0: 55, y0: 676, x1: 56, y1: 674, cx0: 55, cy0: 675, cx1: 55, cy1: 674) > BezierCurve(x0: 56, y0: 674, x1: 56, y1: 676, cx0: 56, cy0: 675, cx1: 56, cy1: 675) > BezierCurve(x0: 56, y0: 683, x1: 56, y1: 684, cx0: 56, cy0: 683, cx1: 56, cy1: 684)) -Clip: Path (BezierCurve(x0: 8, y0: 702, x1: 11, y1: 699, cx0: 8, cy0: 701, cx1: 9, cy1: 699) > BezierCurve(x0: 17, y0: 699, x1: 20, y1: 702, cx0: 19, cy0: 699, cx1: 20, cy1: 701) > BezierCurve(x0: 20, y0: 708, x1: 17, y1: 711, cx0: 20, cy0: 710, cx1: 19, cy1: 711) > BezierCurve(x0: 11, y0: 711, x1: 8, y1: 708, cx0: 9, cy0: 711, cx1: 8, cy1: 710)) - Fill: rgb(222,222,222) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 700, x1: 11, y1: 699, cx0: 9, cy0: 700, cx1: 10, cy1: 699) > BezierCurve(x0: 17, y0: 699, x1: 19, y1: 700, cx0: 18, cy0: 699, cx1: 19, cy1: 700) > BezierCurve(x0: 18, y0: 701, x1: 17, y1: 700, cx0: 18, cy0: 700, cx1: 18, cy1: 700) > BezierCurve(x0: 11, y0: 700, x1: 10, y1: 701, cx0: 10, cy0: 700, cx1: 10, cy1: 700)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 700, x1: 20, y1: 702, cx0: 20, cy0: 701, cx1: 20, cy1: 701) > BezierCurve(x0: 20, y0: 708, x1: 19, y1: 710, cx0: 20, cy0: 709, cx1: 20, cy1: 710) > BezierCurve(x0: 18, y0: 710, x1: 19, y1: 708, cx0: 19, cy0: 709, cx1: 19, cy1: 709) > BezierCurve(x0: 19, y0: 702, x1: 18, y1: 701, cx0: 19, cy0: 702, cx1: 19, cy1: 701)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 19, y0: 710, x1: 17, y1: 711, cx0: 19, cy0: 711, cx1: 18, cy1: 711) > BezierCurve(x0: 11, y0: 711, x1: 9, y1: 710, cx0: 10, cy0: 711, cx1: 9, cy1: 711) > BezierCurve(x0: 10, y0: 710, x1: 11, y1: 710, cx0: 10, cy0: 710, cx1: 10, cy1: 710) > BezierCurve(x0: 17, y0: 710, x1: 18, y1: 710, cx0: 18, cy0: 710, cx1: 18, cy1: 710)) -Shape: rgb(165,165,165) Path (BezierCurve(x0: 9, y0: 710, x1: 8, y1: 708, cx0: 8, cy0: 710, cx1: 8, cy1: 709) > BezierCurve(x0: 8, y0: 702, x1: 9, y1: 700, cx0: 8, cy0: 701, cx1: 8, cy1: 701) > BezierCurve(x0: 10, y0: 701, x1: 9, y1: 702, cx0: 9, cy0: 701, cx1: 9, cy1: 702) > BezierCurve(x0: 9, y0: 708, x1: 10, y1: 710, cx0: 9, cy0: 709, cx1: 9, cy1: 709)) \ No newline at end of file + Shape: rgb(165,165,165) Path (BezierCurve(x0: 121, y0: 480, x1: 123, y1: 479, cx0: 122, cy0: 479, cx1: 123, cy1: 479) > BezierCurve(x0: 130, y0: 479, x1: 132, y1: 480, cx0: 131, cy0: 479, cx1: 132, cy1: 479) > BezierCurve(x0: 132, y0: 480, x1: 130, y1: 480, cx0: 131, cy0: 480, cx1: 131, cy1: 480) > BezierCurve(x0: 123, y0: 480, x1: 122, y1: 480, cx0: 123, cy0: 480, cx1: 122, cy1: 480)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 132, y0: 480, x1: 133, y1: 482, cx0: 133, cy0: 480, cx1: 133, cy1: 481) > BezierCurve(x0: 133, y0: 489, x1: 132, y1: 491, cx0: 133, cy0: 489, cx1: 133, cy1: 490) > BezierCurve(x0: 132, y0: 490, x1: 132, y1: 489, cx0: 132, cy0: 490, cx1: 132, cy1: 489) > BezierCurve(x0: 132, y0: 482, x1: 132, y1: 480, cx0: 132, cy0: 481, cx1: 132, cy1: 481)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 132, y0: 491, x1: 130, y1: 492, cx0: 132, cy0: 491, cx1: 131, cy1: 492) > BezierCurve(x0: 123, y0: 492, x1: 121, y1: 491, cx0: 123, cy0: 492, cx1: 122, cy1: 491) > BezierCurve(x0: 122, y0: 490, x1: 123, y1: 491, cx0: 122, cy0: 490, cx1: 123, cy1: 491) > BezierCurve(x0: 130, y0: 491, x1: 132, y1: 490, cx0: 131, cy0: 491, cx1: 131, cy1: 490)) + Shape: rgb(165,165,165) Path (BezierCurve(x0: 121, y0: 491, x1: 120, y1: 489, cx0: 121, cy0: 490, cx1: 120, cy1: 489) > BezierCurve(x0: 120, y0: 482, x1: 121, y1: 480, cx0: 120, cy0: 481, cx1: 121, cy1: 480) > BezierCurve(x0: 122, y0: 480, x1: 121, y1: 482, cx0: 122, cy0: 481, cx1: 121, cy1: 481) > BezierCurve(x0: 121, y0: 489, x1: 122, y1: 490, cx0: 121, cy0: 489, cx1: 122, cy1: 490)) + Clip: Path (BezierCurve(x0: 121, y0: 482, x1: 123, y1: 480, cx0: 121, cy0: 481, cx1: 122, cy1: 480) > BezierCurve(x0: 130, y0: 480, x1: 132, y1: 482, cx0: 131, cy0: 480, cx1: 132, cy1: 481) > BezierCurve(x0: 132, y0: 489, x1: 130, y1: 491, cx0: 132, cy0: 490, cx1: 131, cy1: 491) > BezierCurve(x0: 123, y0: 491, x1: 121, y1: 489, cx0: 122, cy0: 491, cx1: 121, cy1: 490)) \ No newline at end of file diff --git a/tests/reftests/images/base.txt b/tests/reftests/images/base.txt index 294dbe216..6ccb2acf1 100644 --- a/tests/reftests/images/base.txt +++ b/tests/reftests/images/base.txt @@ -1,10 +1,10 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 700 32px Arial +Text: rgb(0,0,0) normal normal 700 32 Arial [8, 22]: External [143, 22]: image -Text: rgb(0,0,0) normal normal 700 32px Arial +Text: rgb(0,0,0) normal normal 700 32 Arial [8, 278]: External [143, 278]: image [244, 278]: (using diff --git a/tests/reftests/images/cross-origin.txt b/tests/reftests/images/cross-origin.txt index 497cfc579..c4f53b183 100644 --- a/tests/reftests/images/cross-origin.txt +++ b/tests/reftests/images/cross-origin.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 700 32px Arial +Text: rgb(0,0,0) normal normal 700 32 Arial [8, 22]: External [143, 22]: image [244, 22]: (CORS) \ No newline at end of file diff --git a/tests/reftests/images/empty.txt b/tests/reftests/images/empty.txt index 48fcd6013..ec973c06b 100644 --- a/tests/reftests/images/empty.txt +++ b/tests/reftests/images/empty.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: Image [57, 8]: without [112, 8]: src @@ -9,7 +9,7 @@ Text: rgb(0,0,0) normal normal 400 16px Arial [204, 8]: should [256, 8]: not [283, 8]: crash: -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 78]: Image [57, 78]: with [90, 78]: broken diff --git a/tests/reftests/images/svg/base64.txt b/tests/reftests/images/svg/base64.txt index 07f87a5ec..bc01fdd67 100644 --- a/tests/reftests/images/svg/base64.txt +++ b/tests/reftests/images/svg/base64.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: Inline [51, 8]: svg [80, 8]: image: diff --git a/tests/reftests/images/svg/external.txt b/tests/reftests/images/svg/external.txt index 24972295f..795d7ea63 100644 --- a/tests/reftests/images/svg/external.txt +++ b/tests/reftests/images/svg/external.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: SVG [46, 8]: taints [89, 8]: image: diff --git a/tests/reftests/images/svg/inline.txt b/tests/reftests/images/svg/inline.txt index 35ab8bbed..2eb327e11 100644 --- a/tests/reftests/images/svg/inline.txt +++ b/tests/reftests/images/svg/inline.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: Inline [51, 8]: svg [80, 8]: image: \ No newline at end of file diff --git a/tests/reftests/images/svg/node.txt b/tests/reftests/images/svg/node.txt index 3b0c45e5c..f5151bdca 100644 --- a/tests/reftests/images/svg/node.txt +++ b/tests/reftests/images/svg/node.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: SVG [46, 8]: node [86, 8]: image: \ No newline at end of file diff --git a/tests/reftests/list/decimal-leading-zero.html b/tests/reftests/list/decimal-leading-zero.html index d994d3119..8694963ef 100644 --- a/tests/reftests/list/decimal-leading-zero.html +++ b/tests/reftests/list/decimal-leading-zero.html @@ -17,7 +17,7 @@ @@ -107,7 +110,7 @@

      Division Element #5

      position: relative;
      z-index: 1;
      - +

      Division Element #6

      position: absolute;
      @@ -117,4 +120,4 @@

      Division Element #6

      - \ No newline at end of file + diff --git a/tests/reftests/zindex/z-index10.txt b/tests/reftests/zindex/z-index10.txt index c3a21dfa1..36c194ec1 100644 --- a/tests/reftests/zindex/z-index10.txt +++ b/tests/reftests/zindex/z-index10.txt @@ -8,14 +8,14 @@ Shape: rgb(102,153,102) Path (Vector(x: 20, y: 292) > Vector(x: 780, y: 292) > V Shape: rgb(102,153,102) Path (Vector(x: 780, y: 292) > Vector(x: 780, y: 374) > Vector(x: 779, y: 373) > Vector(x: 779, y: 293)) Shape: rgb(102,153,102) Path (Vector(x: 780, y: 374) > Vector(x: 20, y: 374) > Vector(x: 21, y: 373) > Vector(x: 779, y: 373)) Shape: rgb(102,153,102) Path (Vector(x: 20, y: 374) > Vector(x: 20, y: 292) > Vector(x: 21, y: 293) > Vector(x: 21, y: 373)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [31, 306]: Division [81, 306]: Element [131, 306]: #2 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [31, 326]: position: [97, 326]: relative; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [31, 346]: z [37, 346]: - [44, 346]: index: @@ -27,14 +27,14 @@ Shape: rgb(153,0,0) Path (Vector(x: 180, y: 40) > Vector(x: 552, y: 40) > Vector Shape: rgb(153,0,0) Path (Vector(x: 552, y: 40) > Vector(x: 552, y: 356) > Vector(x: 551, y: 355) > Vector(x: 551, y: 41)) Shape: rgb(153,0,0) Path (Vector(x: 552, y: 356) > Vector(x: 180, y: 356) > Vector(x: 181, y: 355) > Vector(x: 551, y: 355)) Shape: rgb(153,0,0) Path (Vector(x: 180, y: 356) > Vector(x: 180, y: 40) > Vector(x: 181, y: 41) > Vector(x: 181, y: 355)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [201, 191]: Division [251, 191]: Element [301, 191]: #3 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [201, 211]: position: [267, 211]: absolute; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [201, 231]: z [207, 231]: - [214, 231]: index: @@ -46,14 +46,14 @@ Shape: rgb(153,153,102) Path (Vector(x: 201, y: 263) > Vector(x: 531, y: 263) > Shape: rgb(153,153,102) Path (Vector(x: 531, y: 263) > Vector(x: 531, y: 335) > Vector(x: 530, y: 334) > Vector(x: 530, y: 264)) Shape: rgb(153,153,102) Path (Vector(x: 531, y: 335) > Vector(x: 201, y: 335) > Vector(x: 202, y: 334) > Vector(x: 530, y: 334)) Shape: rgb(153,153,102) Path (Vector(x: 201, y: 335) > Vector(x: 201, y: 263) > Vector(x: 202, y: 264) > Vector(x: 202, y: 334)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [212, 272]: Division [262, 272]: Element [312, 272]: #5 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [212, 292]: position: [278, 292]: relative; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [212, 312]: z [218, 312]: - [225, 312]: index: @@ -64,14 +64,14 @@ Shape: rgb(0,0,153) Path (Vector(x: 361, y: 61) > Vector(x: 513, y: 61) > Vector Shape: rgb(0,0,153) Path (Vector(x: 513, y: 61) > Vector(x: 513, y: 313) > Vector(x: 512, y: 312) > Vector(x: 512, y: 62)) Shape: rgb(0,0,153) Path (Vector(x: 513, y: 313) > Vector(x: 361, y: 313) > Vector(x: 362, y: 312) > Vector(x: 512, y: 312)) Shape: rgb(0,0,153) Path (Vector(x: 361, y: 313) > Vector(x: 361, y: 61) > Vector(x: 362, y: 62) > Vector(x: 362, y: 312)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [380, 190]: Division [430, 190]: Element [480, 190]: #6 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [374, 210]: position: [440, 210]: absolute; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [401, 230]: z [407, 230]: - [414, 230]: index: @@ -82,14 +82,14 @@ Shape: rgb(153,153,102) Path (Vector(x: 201, y: 81) > Vector(x: 531, y: 81) > Ve Shape: rgb(153,153,102) Path (Vector(x: 531, y: 81) > Vector(x: 531, y: 173) > Vector(x: 530, y: 172) > Vector(x: 530, y: 82)) Shape: rgb(153,153,102) Path (Vector(x: 531, y: 173) > Vector(x: 201, y: 173) > Vector(x: 202, y: 172) > Vector(x: 530, y: 172)) Shape: rgb(153,153,102) Path (Vector(x: 201, y: 173) > Vector(x: 201, y: 81) > Vector(x: 202, y: 82) > Vector(x: 202, y: 172)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [212, 110]: Division [262, 110]: Element [312, 110]: #4 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [212, 130]: position: [278, 130]: relative; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [212, 150]: z [218, 150]: - [225, 150]: index: @@ -100,14 +100,14 @@ Shape: rgb(102,153,102) Path (Vector(x: 20, y: 20) > Vector(x: 780, y: 20) > Vec Shape: rgb(102,153,102) Path (Vector(x: 780, y: 20) > Vector(x: 780, y: 102) > Vector(x: 779, y: 101) > Vector(x: 779, y: 21)) Shape: rgb(102,153,102) Path (Vector(x: 780, y: 102) > Vector(x: 20, y: 102) > Vector(x: 21, y: 101) > Vector(x: 779, y: 101)) Shape: rgb(102,153,102) Path (Vector(x: 20, y: 102) > Vector(x: 20, y: 20) > Vector(x: 21, y: 21) > Vector(x: 21, y: 101)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [31, 34]: Division [81, 34]: Element [131, 34]: #1 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [31, 54]: position: [97, 54]: relative; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [31, 74]: z [37, 74]: - [44, 74]: index: diff --git a/tests/reftests/zindex/z-index11.html b/tests/reftests/zindex/z-index11.html index f649d41da..c200c4f6a 100644 --- a/tests/reftests/zindex/z-index11.html +++ b/tests/reftests/zindex/z-index11.html @@ -25,7 +25,9 @@ #div3 { float:left; } - + code { + font-family: monospace; + } @@ -45,4 +47,4 @@

      Div Element #3

      - \ No newline at end of file + diff --git a/tests/reftests/zindex/z-index11.txt b/tests/reftests/zindex/z-index11.txt index 2e237a37c..f0d44cae2 100644 --- a/tests/reftests/zindex/z-index11.txt +++ b/tests/reftests/zindex/z-index11.txt @@ -3,26 +3,26 @@ Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 Clip: Path (Vector(x: 28, y: 28) > Vector(x: 772, y: 28) > Vector(x: 772, y: 245) > Vector(x: 28, y: 245)) Fill: rgb(155,255,248) -Text: rgb(0,0,0) normal normal 700 24px Arial +Text: rgb(0,0,0) normal normal 700 24 Arial [38, 50]: Div [82, 50]: Element [182, 50]: #1 Clip: Path (Vector(x: 38, y: 110) > Vector(x: 321, y: 110) > Vector(x: 321, y: 235) > Vector(x: 38, y: 235)) Fill: rgb(124,182,89) -Text: rgb(0,0,0) normal normal 700 24px Arial +Text: rgb(0,0,0) normal normal 700 24 Arial [38, 123]: Div [82, 123]: Element [182, 123]: #2 -Text: rgb(0,0,0) normal normal 700 24px Arial +Text: rgb(0,0,0) normal normal 700 24 Arial [38, 175]: Div [82, 175]: Element [182, 175]: #3 -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [38, 217]: float: [84, 217]: left; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [38, 93]: position: [104, 93]: relative; -Text: rgb(0,0,0) normal normal 400 12px monospace +Text: rgb(0,0,0) normal normal 400 12 monospace [209, 165]: position: [275, 165]: static; \ No newline at end of file diff --git a/tests/reftests/zindex/z-index12.txt b/tests/reftests/zindex/z-index12.txt index a2c79455b..295f8713d 100644 --- a/tests/reftests/zindex/z-index12.txt +++ b/tests/reftests/zindex/z-index12.txt @@ -5,11 +5,11 @@ Clip: Path (Vector(x: 28, y: 28) > Vector(x: 199, y: 28) > Vector(x: 199, y: 80) Fill: rgb(124,182,89) Clip: Path (Vector(x: 28, y: 28) > Vector(x: 199, y: 28) > Vector(x: 199, y: 80) > Vector(x: 28, y: 80)) Fill: rgb(182,159,26) -Text: rgb(0,0,0) normal normal 700 24px Arial +Text: rgb(0,0,0) normal normal 700 24 Arial [28, 40]: Div [72, 40]: Element [172, 40]: #3 -Text: rgb(0,0,0) normal normal 700 24px Arial +Text: rgb(0,0,0) normal normal 700 24 Arial [28, 40]: Div [72, 40]: Element [172, 40]: #2 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index13.txt b/tests/reftests/zindex/z-index13.txt index fe35f4c1e..65a3d24e4 100644 --- a/tests/reftests/zindex/z-index13.txt +++ b/tests/reftests/zindex/z-index13.txt @@ -5,5 +5,5 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 208, y: 8) > Vector(x: 208, y: 208) > Fill: rgb(0,255,255) Clip: Path (Vector(x: 8, y: 8) > Vector(x: 108, y: 8) > Vector(x: 108, y: 108) > Vector(x: 8, y: 108)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: outer \ No newline at end of file diff --git a/tests/reftests/zindex/z-index14.txt b/tests/reftests/zindex/z-index14.txt index b5f64e94e..ca08399c1 100644 --- a/tests/reftests/zindex/z-index14.txt +++ b/tests/reftests/zindex/z-index14.txt @@ -5,5 +5,5 @@ Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 18) > Fill: rgb(0,128,0) Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Vector(x: 0, y: 200)) Fill: rgb(0,255,255) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [0, 0]: body \ No newline at end of file diff --git a/tests/reftests/zindex/z-index15.txt b/tests/reftests/zindex/z-index15.txt index f0332188e..e16824b2f 100644 --- a/tests/reftests/zindex/z-index15.txt +++ b/tests/reftests/zindex/z-index15.txt @@ -5,5 +5,5 @@ Clip: Path (Vector(x: 0, y: 0) > Vector(x: 200, y: 0) > Vector(x: 200, y: 200) > Fill: rgb(0,255,255) Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 18) > Vector(x: 0, y: 18)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [0, 0]: body \ No newline at end of file diff --git a/tests/reftests/zindex/z-index16.txt b/tests/reftests/zindex/z-index16.txt index 5a9f1838a..38d08c3df 100644 --- a/tests/reftests/zindex/z-index16.txt +++ b/tests/reftests/zindex/z-index16.txt @@ -1,7 +1,7 @@ Window: [800, 600] Rectangle: [0, 0, 800, 600] rgba(0,0,0,0) Opacity: 1 -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 16]: This [43, 16]: text [73, 16]: will @@ -10,7 +10,7 @@ Text: rgb(0,0,0) normal normal 400 16px Arial [184, 16]: everything. Clip: Path (Vector(x: 192, y: 192) > Vector(x: 480, y: 192) > Vector(x: 480, y: 480) > Vector(x: 192, y: 480)) Draw image: Image ("/tests/assets/image.jpg") (source: [0, 0, 75, 75]) (destination: [0, 0, 75, 75]) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [192, 192]: This [227, 192]: text [257, 192]: will @@ -21,7 +21,7 @@ Text: rgb(0,0,0) normal normal 400 16px Arial [192, 210]: the [219, 210]: butterfly [280, 210]: image -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [192, 192]: This [227, 192]: text [257, 192]: will diff --git a/tests/reftests/zindex/z-index17.txt b/tests/reftests/zindex/z-index17.txt index 34395435b..5e79019d2 100644 --- a/tests/reftests/zindex/z-index17.txt +++ b/tests/reftests/zindex/z-index17.txt @@ -5,7 +5,7 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 8) > V Fill: rgb(238,130,238) Clip: Path (Vector(x: 0, y: 0) > Vector(x: 800, y: 0) > Vector(x: 800, y: 100) > Vector(x: 0, y: 100)) Fill: rgb(85,107,47) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [0, 0]: fixed [38, 0]: z [46, 0]: - diff --git a/tests/reftests/zindex/z-index18.txt b/tests/reftests/zindex/z-index18.txt index 6d4fb45b1..e9418363a 100644 --- a/tests/reftests/zindex/z-index18.txt +++ b/tests/reftests/zindex/z-index18.txt @@ -5,43 +5,43 @@ Clip: Path (Vector(x: 8, y: 8) > Vector(x: 792, y: 8) > Vector(x: 792, y: 308) > Fill: rgb(238,130,238) Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: a Clip: Path (Vector(x: 8, y: 8) > Vector(x: 808, y: 8) > Vector(x: 808, y: 308) > Vector(x: 8, y: 308)) Fill: rgb(0,128,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [8, 8]: b -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: c -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: d -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: e Clip: Path (Vector(x: 24, y: 18) > Vector(x: 824, y: 18) > Vector(x: 824, y: 318) > Vector(x: 24, y: 318)) Fill: rgb(255,0,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: f Clip: Path (Vector(x: 24, y: 18) > Vector(x: 424, y: 18) > Vector(x: 424, y: 318) > Vector(x: 24, y: 318)) Fill: rgb(0,0,255) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: g Clip: Path (Vector(x: 24, y: 18) > Vector(x: 224, y: 18) > Vector(x: 224, y: 218) > Vector(x: 24, y: 218)) Fill: rgb(255,165,0) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: h Clip: Path (Vector(x: -24, y: 18) > Vector(x: 776, y: 18) > Vector(x: 776, y: 118) > Vector(x: -24, y: 118)) Fill: rgb(128,0,128) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [-24, 18]: i Clip: Path (Vector(x: 24, y: 68) > Vector(x: 824, y: 68) > Vector(x: 824, y: 168) > Vector(x: 24, y: 168)) Fill: rgb(255,192,203) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 68]: j Clip: Path (Vector(x: 64, y: 98) > Vector(x: 864, y: 98) > Vector(x: 864, y: 198) > Vector(x: 64, y: 198)) Fill: rgb(0,0,128) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [64, 98]: k Clip: Path (Vector(x: 24, y: 18) > Vector(x: 124, y: 18) > Vector(x: 124, y: 118) > Vector(x: 24, y: 118)) Fill: rgb(165,42,42) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [24, 18]: l \ No newline at end of file diff --git a/tests/reftests/zindex/z-index2.txt b/tests/reftests/zindex/z-index2.txt index 73448c084..727e15e2c 100644 --- a/tests/reftests/zindex/z-index2.txt +++ b/tests/reftests/zindex/z-index2.txt @@ -7,10 +7,10 @@ Shape: rgb(0,0,153) Path (Vector(x: 8, y: 257) > Vector(x: 792, y: 257) > Vector Shape: rgb(0,0,153) Path (Vector(x: 792, y: 257) > Vector(x: 792, y: 299) > Vector(x: 791, y: 298) > Vector(x: 791, y: 258)) Shape: rgb(0,0,153) Path (Vector(x: 792, y: 299) > Vector(x: 8, y: 299) > Vector(x: 9, y: 298) > Vector(x: 791, y: 298)) Shape: rgb(0,0,153) Path (Vector(x: 8, y: 299) > Vector(x: 8, y: 257) > Vector(x: 9, y: 258) > Vector(x: 9, y: 298)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [19, 271]: DIV [42, 271]: #6 -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [19, 285]: position:static; Clip: Path (Vector(x: 8, y: 27) > Vector(x: 792, y: 27) > Vector(x: 792, y: 109) > Vector(x: 8, y: 109)) Fill: rgb(204,255,204) @@ -18,10 +18,10 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 27) > Vector(x: 792, y: 27) > Vect Shape: rgb(102,153,102) Path (Vector(x: 792, y: 27) > Vector(x: 792, y: 109) > Vector(x: 791, y: 108) > Vector(x: 791, y: 28)) Shape: rgb(102,153,102) Path (Vector(x: 792, y: 109) > Vector(x: 8, y: 109) > Vector(x: 9, y: 108) > Vector(x: 791, y: 108)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 109) > Vector(x: 8, y: 27) > Vector(x: 9, y: 28) > Vector(x: 9, y: 108)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [14, 55]: position: [62, 55]: relative; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [14, 42]: DIV [37, 42]: #1 Clip: Path (Vector(x: 8, y: 220) > Vector(x: 792, y: 220) > Vector(x: 792, y: 272) > Vector(x: 8, y: 272)) @@ -30,10 +30,10 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 220) > Vector(x: 792, y: 220) > Ve Shape: rgb(102,153,102) Path (Vector(x: 792, y: 220) > Vector(x: 792, y: 272) > Vector(x: 791, y: 271) > Vector(x: 791, y: 221)) Shape: rgb(102,153,102) Path (Vector(x: 792, y: 272) > Vector(x: 8, y: 272) > Vector(x: 9, y: 271) > Vector(x: 791, y: 271)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 272) > Vector(x: 8, y: 220) > Vector(x: 9, y: 221) > Vector(x: 9, y: 271)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [14, 234]: DIV [37, 234]: #5 -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [14, 248]: position:relative; Clip: Path (Vector(x: 8, y: 128) > Vector(x: 792, y: 128) > Vector(x: 792, y: 210) > Vector(x: 8, y: 210)) Fill: rgb(204,255,204) @@ -41,15 +41,15 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 128) > Vector(x: 792, y: 128) > Ve Shape: rgb(102,153,102) Path (Vector(x: 792, y: 128) > Vector(x: 792, y: 210) > Vector(x: 791, y: 209) > Vector(x: 791, y: 129)) Shape: rgb(102,153,102) Path (Vector(x: 792, y: 210) > Vector(x: 8, y: 210) > Vector(x: 9, y: 209) > Vector(x: 791, y: 209)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 210) > Vector(x: 8, y: 128) > Vector(x: 9, y: 129) > Vector(x: 9, y: 209)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [14, 156]: position: [62, 156]: relative; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [14, 170]: z [20, 170]: - [24, 170]: index: [59, 170]: 1; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [14, 142]: DIV [37, 142]: #3 Opacity: 0.8 @@ -59,15 +59,15 @@ Shape: rgb(0,0,153) Path (Vector(x: 59, y: 194) > Vector(x: 271, y: 194) > Vecto Shape: rgb(0,0,153) Path (Vector(x: 271, y: 194) > Vector(x: 271, y: 266) > Vector(x: 270, y: 265) > Vector(x: 270, y: 195)) Shape: rgb(0,0,153) Path (Vector(x: 271, y: 266) > Vector(x: 59, y: 266) > Vector(x: 60, y: 265) > Vector(x: 270, y: 265)) Shape: rgb(0,0,153) Path (Vector(x: 59, y: 266) > Vector(x: 59, y: 194) > Vector(x: 60, y: 195) > Vector(x: 60, y: 265)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [70, 222]: position: [118, 222]: absolute; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [70, 236]: z [76, 236]: - [80, 236]: index: [115, 236]: 10; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [70, 208]: DIV [93, 208]: #4 Clip: Path (Vector(x: 179, y: 48) > Vector(x: 331, y: 48) > Vector(x: 331, y: 250) > Vector(x: 179, y: 250)) @@ -76,14 +76,14 @@ Shape: rgb(153,0,0) Path (Vector(x: 179, y: 48) > Vector(x: 331, y: 48) > Vector Shape: rgb(153,0,0) Path (Vector(x: 331, y: 48) > Vector(x: 331, y: 250) > Vector(x: 330, y: 249) > Vector(x: 330, y: 49)) Shape: rgb(153,0,0) Path (Vector(x: 331, y: 250) > Vector(x: 179, y: 250) > Vector(x: 180, y: 249) > Vector(x: 330, y: 249)) Shape: rgb(153,0,0) Path (Vector(x: 179, y: 250) > Vector(x: 179, y: 48) > Vector(x: 180, y: 49) > Vector(x: 180, y: 249)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [205, 76]: position: [253, 76]: absolute; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [227, 90]: z [233, 90]: - [237, 90]: index: [273, 90]: 2; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [235, 63]: DIV [258, 63]: #2 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index3.txt b/tests/reftests/zindex/z-index3.txt index 39e93e235..e429a45dd 100644 --- a/tests/reftests/zindex/z-index3.txt +++ b/tests/reftests/zindex/z-index3.txt @@ -7,7 +7,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 101) > Vector(x: 267, y: 101) > Ve Shape: rgb(102,153,102) Path (Vector(x: 267, y: 101) > Vector(x: 267, y: 175) > Vector(x: 265, y: 173) > Vector(x: 265, y: 103)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 175) > Vector(x: 8, y: 175) > Vector(x: 10, y: 173) > Vector(x: 265, y: 173)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 175) > Vector(x: 8, y: 101) > Vector(x: 10, y: 103) > Vector(x: 10, y: 173)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [15, 103]: LEVEL [57, 103]: #1 Clip: Path (Vector(x: 8, y: 27) > Vector(x: 267, y: 27) > Vector(x: 267, y: 101) > Vector(x: 8, y: 101)) @@ -16,7 +16,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 27) > Vector(x: 267, y: 27) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 27) > Vector(x: 267, y: 101) > Vector(x: 265, y: 99) > Vector(x: 265, y: 29)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 101) > Vector(x: 8, y: 101) > Vector(x: 10, y: 99) > Vector(x: 265, y: 99)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 101) > Vector(x: 8, y: 27) > Vector(x: 10, y: 29) > Vector(x: 10, y: 99)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [15, 29]: LEVEL [57, 29]: #1 Clip: Path (Vector(x: 8, y: 175) > Vector(x: 267, y: 175) > Vector(x: 267, y: 249) > Vector(x: 8, y: 249)) @@ -25,7 +25,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 175) > Vector(x: 267, y: 175) > Ve Shape: rgb(102,153,102) Path (Vector(x: 267, y: 175) > Vector(x: 267, y: 249) > Vector(x: 265, y: 247) > Vector(x: 265, y: 177)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 249) > Vector(x: 8, y: 249) > Vector(x: 10, y: 247) > Vector(x: 265, y: 247)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 249) > Vector(x: 8, y: 175) > Vector(x: 10, y: 177) > Vector(x: 10, y: 247)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [15, 177]: LEVEL [57, 177]: #1 Clip: Path (Vector(x: 8, y: 249) > Vector(x: 267, y: 249) > Vector(x: 267, y: 323) > Vector(x: 8, y: 323)) @@ -34,7 +34,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 249) > Vector(x: 267, y: 249) > Ve Shape: rgb(102,153,102) Path (Vector(x: 267, y: 249) > Vector(x: 267, y: 323) > Vector(x: 265, y: 321) > Vector(x: 265, y: 251)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 323) > Vector(x: 8, y: 323) > Vector(x: 10, y: 321) > Vector(x: 265, y: 321)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 323) > Vector(x: 8, y: 249) > Vector(x: 10, y: 251) > Vector(x: 10, y: 321)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [15, 251]: LEVEL [57, 251]: #1 Opacity: 0.9 @@ -44,12 +44,12 @@ Shape: rgb(153,0,0) Path (Vector(x: 85, y: 59) > Vector(x: 294, y: 59) > Vector( Shape: rgb(153,0,0) Path (Vector(x: 294, y: 59) > Vector(x: 294, y: 123) > Vector(x: 292, y: 121) > Vector(x: 292, y: 61)) Shape: rgb(153,0,0) Path (Vector(x: 294, y: 123) > Vector(x: 85, y: 123) > Vector(x: 87, y: 121) > Vector(x: 292, y: 121)) Shape: rgb(153,0,0) Path (Vector(x: 85, y: 123) > Vector(x: 85, y: 59) > Vector(x: 87, y: 61) > Vector(x: 87, y: 121)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [92, 88]: z [98, 88]: - [102, 88]: index: [137, 88]: 1; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [92, 74]: LEVEL [134, 74]: #2 Clip: Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector(x: 306, y: 98) > Vector(x: 197, y: 98)) @@ -58,7 +58,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 81) > Vector(x: 306, y: 81) > Vector Shape: rgb(0,0,153) Path (Vector(x: 306, y: 81) > Vector(x: 306, y: 98) > Vector(x: 304, y: 96) > Vector(x: 304, y: 83)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 197, y: 98) > Vector(x: 199, y: 96) > Vector(x: 304, y: 96)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 197, y: 81) > Vector(x: 199, y: 83) > Vector(x: 199, y: 96)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 83]: LEVEL [246, 83]: #3 Clip: Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 197, y: 116)) @@ -67,7 +67,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 98) > Vector(x: 306, y: 98) > Vector Shape: rgb(0,0,153) Path (Vector(x: 306, y: 98) > Vector(x: 306, y: 116) > Vector(x: 304, y: 114) > Vector(x: 304, y: 100)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 197, y: 116) > Vector(x: 199, y: 114) > Vector(x: 304, y: 114)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 197, y: 98) > Vector(x: 199, y: 100) > Vector(x: 199, y: 114)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 100]: LEVEL [246, 100]: #3 Clip: Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vector(x: 306, y: 134) > Vector(x: 197, y: 134)) @@ -76,7 +76,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 116) > Vector(x: 306, y: 116) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 116) > Vector(x: 306, y: 134) > Vector(x: 304, y: 132) > Vector(x: 304, y: 118)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 134) > Vector(x: 197, y: 134) > Vector(x: 199, y: 132) > Vector(x: 304, y: 132)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 134) > Vector(x: 197, y: 116) > Vector(x: 199, y: 118) > Vector(x: 199, y: 132)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 118]: LEVEL [246, 118]: #3 Clip: Path (Vector(x: 197, y: 134) > Vector(x: 306, y: 134) > Vector(x: 306, y: 151) > Vector(x: 197, y: 151)) @@ -85,7 +85,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 134) > Vector(x: 306, y: 134) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 134) > Vector(x: 306, y: 151) > Vector(x: 304, y: 149) > Vector(x: 304, y: 136)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 151) > Vector(x: 197, y: 151) > Vector(x: 199, y: 149) > Vector(x: 304, y: 149)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 151) > Vector(x: 197, y: 134) > Vector(x: 199, y: 136) > Vector(x: 199, y: 149)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 136]: LEVEL [246, 136]: #3 Clip: Path (Vector(x: 197, y: 151) > Vector(x: 306, y: 151) > Vector(x: 306, y: 169) > Vector(x: 197, y: 169)) @@ -94,7 +94,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 151) > Vector(x: 306, y: 151) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 151) > Vector(x: 306, y: 169) > Vector(x: 304, y: 167) > Vector(x: 304, y: 153)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 197, y: 169) > Vector(x: 199, y: 167) > Vector(x: 304, y: 167)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 197, y: 151) > Vector(x: 199, y: 153) > Vector(x: 199, y: 167)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 153]: LEVEL [246, 153]: #3 Clip: Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 197, y: 186)) @@ -103,7 +103,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 169) > Vector(x: 306, y: 169) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 169) > Vector(x: 306, y: 186) > Vector(x: 304, y: 184) > Vector(x: 304, y: 171)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 197, y: 186) > Vector(x: 199, y: 184) > Vector(x: 304, y: 184)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 197, y: 169) > Vector(x: 199, y: 171) > Vector(x: 199, y: 184)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 171]: LEVEL [246, 171]: #3 Clip: Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vector(x: 306, y: 204) > Vector(x: 197, y: 204)) @@ -112,7 +112,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 186) > Vector(x: 306, y: 186) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 186) > Vector(x: 306, y: 204) > Vector(x: 304, y: 202) > Vector(x: 304, y: 188)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 204) > Vector(x: 197, y: 204) > Vector(x: 199, y: 202) > Vector(x: 304, y: 202)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 204) > Vector(x: 197, y: 186) > Vector(x: 199, y: 188) > Vector(x: 199, y: 202)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 188]: LEVEL [246, 188]: #3 Clip: Path (Vector(x: 197, y: 204) > Vector(x: 306, y: 204) > Vector(x: 306, y: 222) > Vector(x: 197, y: 222)) @@ -121,7 +121,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 204) > Vector(x: 306, y: 204) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 204) > Vector(x: 306, y: 222) > Vector(x: 304, y: 220) > Vector(x: 304, y: 206)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 222) > Vector(x: 197, y: 222) > Vector(x: 199, y: 220) > Vector(x: 304, y: 220)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 222) > Vector(x: 197, y: 204) > Vector(x: 199, y: 206) > Vector(x: 199, y: 220)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 206]: LEVEL [246, 206]: #3 Clip: Path (Vector(x: 197, y: 222) > Vector(x: 306, y: 222) > Vector(x: 306, y: 239) > Vector(x: 197, y: 239)) @@ -130,7 +130,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 222) > Vector(x: 306, y: 222) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 222) > Vector(x: 306, y: 239) > Vector(x: 304, y: 237) > Vector(x: 304, y: 224)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 239) > Vector(x: 197, y: 239) > Vector(x: 199, y: 237) > Vector(x: 304, y: 237)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 239) > Vector(x: 197, y: 222) > Vector(x: 199, y: 224) > Vector(x: 199, y: 237)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 224]: LEVEL [246, 224]: #3 Clip: Path (Vector(x: 197, y: 239) > Vector(x: 306, y: 239) > Vector(x: 306, y: 257) > Vector(x: 197, y: 257)) @@ -139,7 +139,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 239) > Vector(x: 306, y: 239) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 239) > Vector(x: 306, y: 257) > Vector(x: 304, y: 255) > Vector(x: 304, y: 241)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 257) > Vector(x: 197, y: 257) > Vector(x: 199, y: 255) > Vector(x: 304, y: 255)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 257) > Vector(x: 197, y: 239) > Vector(x: 199, y: 241) > Vector(x: 199, y: 255)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 241]: LEVEL [246, 241]: #3 Clip: Path (Vector(x: 197, y: 257) > Vector(x: 306, y: 257) > Vector(x: 306, y: 274) > Vector(x: 197, y: 274)) @@ -148,7 +148,7 @@ Shape: rgb(0,0,153) Path (Vector(x: 197, y: 257) > Vector(x: 306, y: 257) > Vect Shape: rgb(0,0,153) Path (Vector(x: 306, y: 257) > Vector(x: 306, y: 274) > Vector(x: 304, y: 272) > Vector(x: 304, y: 259)) Shape: rgb(0,0,153) Path (Vector(x: 306, y: 274) > Vector(x: 197, y: 274) > Vector(x: 199, y: 272) > Vector(x: 304, y: 272)) Shape: rgb(0,0,153) Path (Vector(x: 197, y: 274) > Vector(x: 197, y: 257) > Vector(x: 199, y: 259) > Vector(x: 199, y: 272)) -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [204, 259]: LEVEL [246, 259]: #3 Clip: Path (Vector(x: 85, y: 123) > Vector(x: 294, y: 123) > Vector(x: 294, y: 187) > Vector(x: 85, y: 187)) @@ -157,11 +157,11 @@ Shape: rgb(153,0,0) Path (Vector(x: 85, y: 123) > Vector(x: 294, y: 123) > Vecto Shape: rgb(153,0,0) Path (Vector(x: 294, y: 123) > Vector(x: 294, y: 187) > Vector(x: 292, y: 185) > Vector(x: 292, y: 125)) Shape: rgb(153,0,0) Path (Vector(x: 294, y: 187) > Vector(x: 85, y: 187) > Vector(x: 87, y: 185) > Vector(x: 292, y: 185)) Shape: rgb(153,0,0) Path (Vector(x: 85, y: 187) > Vector(x: 85, y: 123) > Vector(x: 87, y: 125) > Vector(x: 87, y: 185)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [92, 152]: z [98, 152]: - [102, 152]: index: [137, 152]: 1; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [92, 138]: LEVEL [134, 138]: #2 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index4.txt b/tests/reftests/zindex/z-index4.txt index 6c9b6b180..ca25387ce 100644 --- a/tests/reftests/zindex/z-index4.txt +++ b/tests/reftests/zindex/z-index4.txt @@ -9,7 +9,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 10]: LEVEL [69, 10]: #1 Clip: Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 8, y: 156)) @@ -18,6 +18,6 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 84]: LEVEL [69, 84]: #1 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index5.txt b/tests/reftests/zindex/z-index5.txt index a1480be51..cf5a5ac49 100644 --- a/tests/reftests/zindex/z-index5.txt +++ b/tests/reftests/zindex/z-index5.txt @@ -7,7 +7,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 8) > Vector(x: 267, y: 8) > Vector Shape: rgb(102,153,102) Path (Vector(x: 267, y: 8) > Vector(x: 267, y: 82) > Vector(x: 265, y: 80) > Vector(x: 265, y: 10)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 8, y: 82) > Vector(x: 10, y: 80) > Vector(x: 265, y: 80)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 8, y: 8) > Vector(x: 10, y: 10) > Vector(x: 10, y: 80)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 10]: LEVEL [69, 10]: #1 Clip: Path (Vector(x: 8, y: 0) > Vector(x: 258, y: 0) > Vector(x: 258, y: 600) > Vector(x: 8, y: 600)) @@ -18,6 +18,6 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 84]: LEVEL [69, 84]: #1 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index6.txt b/tests/reftests/zindex/z-index6.txt index 349cffe4b..f6ca9b459 100644 --- a/tests/reftests/zindex/z-index6.txt +++ b/tests/reftests/zindex/z-index6.txt @@ -7,7 +7,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 28, y: 113) > Vector(x: 287, y: 113) > V Shape: rgb(102,153,102) Path (Vector(x: 287, y: 113) > Vector(x: 287, y: 187) > Vector(x: 285, y: 185) > Vector(x: 285, y: 115)) Shape: rgb(102,153,102) Path (Vector(x: 287, y: 187) > Vector(x: 28, y: 187) > Vector(x: 30, y: 185) > Vector(x: 285, y: 185)) Shape: rgb(102,153,102) Path (Vector(x: 28, y: 187) > Vector(x: 28, y: 113) > Vector(x: 30, y: 115) > Vector(x: 30, y: 185)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [35, 115]: z [43, 115]: - [48, 115]: index:0 @@ -17,7 +17,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 82) > Vector(x: 267, y: 82) > Vect Shape: rgb(102,153,102) Path (Vector(x: 267, y: 82) > Vector(x: 267, y: 156) > Vector(x: 265, y: 154) > Vector(x: 265, y: 84)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 8, y: 156) > Vector(x: 10, y: 154) > Vector(x: 265, y: 154)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 8, y: 82) > Vector(x: 10, y: 84) > Vector(x: 10, y: 154)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 84]: default [68, 84]: z [76, 84]: - @@ -28,7 +28,7 @@ Shape: rgb(102,153,102) Path (Vector(x: 8, y: 156) > Vector(x: 267, y: 156) > Ve Shape: rgb(102,153,102) Path (Vector(x: 267, y: 156) > Vector(x: 267, y: 230) > Vector(x: 265, y: 228) > Vector(x: 265, y: 158)) Shape: rgb(102,153,102) Path (Vector(x: 267, y: 230) > Vector(x: 8, y: 230) > Vector(x: 10, y: 228) > Vector(x: 265, y: 228)) Shape: rgb(102,153,102) Path (Vector(x: 8, y: 230) > Vector(x: 8, y: 156) > Vector(x: 10, y: 158) > Vector(x: 10, y: 228)) -Text: rgb(0,0,0) normal normal 400 16px Arial +Text: rgb(0,0,0) normal normal 400 16 Arial [15, 158]: z [23, 158]: - [28, 158]: index:1 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index7.txt b/tests/reftests/zindex/z-index7.txt index ece60bcc6..e762a7050 100644 --- a/tests/reftests/zindex/z-index7.txt +++ b/tests/reftests/zindex/z-index7.txt @@ -7,10 +7,10 @@ Shape: rgb(153,153,102) Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > V Shape: rgb(153,153,102) Path (Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 741, y: 321) > Vector(x: 741, y: 251)) Shape: rgb(153,153,102) Path (Vector(x: 742, y: 322) > Vector(x: 58, y: 322) > Vector(x: 59, y: 321) > Vector(x: 741, y: 321)) Shape: rgb(153,153,102) Path (Vector(x: 58, y: 322) > Vector(x: 58, y: 250) > Vector(x: 59, y: 251) > Vector(x: 59, y: 321)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [363, 278]: no [380, 278]: positioning -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [380, 264]: DIV [403, 264]: #5 Opacity: 0.7 @@ -20,10 +20,10 @@ Shape: rgb(153,0,0) Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector( Shape: rgb(153,0,0) Path (Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 161, y: 361) > Vector(x: 161, y: 11)) Shape: rgb(153,0,0) Path (Vector(x: 162, y: 362) > Vector(x: 10, y: 362) > Vector(x: 11, y: 361) > Vector(x: 161, y: 361)) Shape: rgb(153,0,0) Path (Vector(x: 10, y: 362) > Vector(x: 10, y: 10) > Vector(x: 11, y: 11) > Vector(x: 11, y: 361)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [38, 38]: position: [86, 38]: absolute; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [66, 25]: DIV [89, 25]: #1 Clip: Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 58, y: 178)) @@ -32,10 +32,10 @@ Shape: rgb(102,153,102) Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vec Shape: rgb(102,153,102) Path (Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 741, y: 177) > Vector(x: 741, y: 77)) Shape: rgb(102,153,102) Path (Vector(x: 742, y: 178) > Vector(x: 58, y: 178) > Vector(x: 59, y: 177) > Vector(x: 741, y: 177)) Shape: rgb(102,153,102) Path (Vector(x: 58, y: 178) > Vector(x: 58, y: 76) > Vector(x: 59, y: 77) > Vector(x: 59, y: 177)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [355, 104]: position: [403, 104]: relative; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [380, 90]: DIV [403, 90]: #2 Clip: Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 78, y: 265)) @@ -44,10 +44,10 @@ Shape: rgb(102,153,102) Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > V Shape: rgb(102,153,102) Path (Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 761, y: 264) > Vector(x: 761, y: 164)) Shape: rgb(102,153,102) Path (Vector(x: 762, y: 265) > Vector(x: 78, y: 265) > Vector(x: 79, y: 264) > Vector(x: 761, y: 264)) Shape: rgb(102,153,102) Path (Vector(x: 78, y: 265) > Vector(x: 78, y: 163) > Vector(x: 79, y: 164) > Vector(x: 79, y: 264)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [375, 191]: position: [423, 191]: relative; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [400, 177]: DIV [423, 177]: #3 Clip: Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 638, y: 362)) @@ -56,9 +56,9 @@ Shape: rgb(153,0,0) Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector Shape: rgb(153,0,0) Path (Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 789, y: 361) > Vector(x: 789, y: 11)) Shape: rgb(153,0,0) Path (Vector(x: 790, y: 362) > Vector(x: 638, y: 362) > Vector(x: 639, y: 361) > Vector(x: 789, y: 361)) Shape: rgb(153,0,0) Path (Vector(x: 638, y: 362) > Vector(x: 638, y: 10) > Vector(x: 639, y: 11) > Vector(x: 639, y: 361)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [666, 38]: position: [714, 38]: absolute; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [694, 25]: DIV [717, 25]: #4 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index8.txt b/tests/reftests/zindex/z-index8.txt index 49e37bff0..a6f4e180e 100644 --- a/tests/reftests/zindex/z-index8.txt +++ b/tests/reftests/zindex/z-index8.txt @@ -7,10 +7,10 @@ Shape: rgb(153,153,102) Path (Vector(x: 18, y: 64) > Vector(x: 782, y: 64) > Vec Shape: rgb(153,153,102) Path (Vector(x: 782, y: 64) > Vector(x: 782, y: 166) > Vector(x: 781, y: 165) > Vector(x: 781, y: 65)) Shape: rgb(153,153,102) Path (Vector(x: 782, y: 166) > Vector(x: 18, y: 166) > Vector(x: 19, y: 165) > Vector(x: 781, y: 165)) Shape: rgb(153,153,102) Path (Vector(x: 18, y: 166) > Vector(x: 18, y: 64) > Vector(x: 19, y: 65) > Vector(x: 19, y: 165)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [190, 93]: no [207, 93]: positioning -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [190, 79]: DIV [213, 79]: #4 Opacity: 0.7 @@ -20,10 +20,10 @@ Shape: rgb(153,0,0) Path (Vector(x: 508, y: 10) > Vector(x: 660, y: 10) > Vector Shape: rgb(153,0,0) Path (Vector(x: 660, y: 10) > Vector(x: 660, y: 212) > Vector(x: 659, y: 211) > Vector(x: 659, y: 11)) Shape: rgb(153,0,0) Path (Vector(x: 660, y: 212) > Vector(x: 508, y: 212) > Vector(x: 509, y: 211) > Vector(x: 659, y: 211)) Shape: rgb(153,0,0) Path (Vector(x: 508, y: 212) > Vector(x: 508, y: 10) > Vector(x: 509, y: 11) > Vector(x: 509, y: 211)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [536, 38]: position: [584, 38]: absolute; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [564, 25]: DIV [587, 25]: #1 Clip: Path (Vector(x: 28, y: 46) > Vector(x: 180, y: 46) > Vector(x: 180, y: 248) > Vector(x: 28, y: 248)) @@ -32,10 +32,10 @@ Shape: rgb(0,153,0) Path (Vector(x: 28, y: 46) > Vector(x: 180, y: 46) > Vector( Shape: rgb(0,153,0) Path (Vector(x: 180, y: 46) > Vector(x: 180, y: 248) > Vector(x: 179, y: 247) > Vector(x: 179, y: 47)) Shape: rgb(0,153,0) Path (Vector(x: 180, y: 248) > Vector(x: 28, y: 248) > Vector(x: 29, y: 247) > Vector(x: 179, y: 247)) Shape: rgb(0,153,0) Path (Vector(x: 28, y: 248) > Vector(x: 28, y: 46) > Vector(x: 29, y: 47) > Vector(x: 29, y: 247)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [80, 74]: float: [109, 74]: left; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [84, 60]: DIV [107, 60]: #2 Clip: Path (Vector(x: 620, y: 46) > Vector(x: 772, y: 46) > Vector(x: 772, y: 248) > Vector(x: 620, y: 248)) @@ -44,10 +44,10 @@ Shape: rgb(0,153,0) Path (Vector(x: 620, y: 46) > Vector(x: 772, y: 46) > Vector Shape: rgb(0,153,0) Path (Vector(x: 772, y: 46) > Vector(x: 772, y: 248) > Vector(x: 771, y: 247) > Vector(x: 771, y: 47)) Shape: rgb(0,153,0) Path (Vector(x: 772, y: 248) > Vector(x: 620, y: 248) > Vector(x: 621, y: 247) > Vector(x: 771, y: 247)) Shape: rgb(0,153,0) Path (Vector(x: 620, y: 248) > Vector(x: 620, y: 46) > Vector(x: 621, y: 47) > Vector(x: 621, y: 247)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [668, 74]: float: [697, 74]: right; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [676, 60]: DIV [699, 60]: #3 Clip: Path (Vector(x: 100, y: 130) > Vector(x: 252, y: 130) > Vector(x: 252, y: 232) > Vector(x: 100, y: 232)) @@ -56,9 +56,9 @@ Shape: rgb(153,0,0) Path (Vector(x: 100, y: 130) > Vector(x: 252, y: 130) > Vect Shape: rgb(153,0,0) Path (Vector(x: 252, y: 130) > Vector(x: 252, y: 232) > Vector(x: 251, y: 231) > Vector(x: 251, y: 131)) Shape: rgb(153,0,0) Path (Vector(x: 252, y: 232) > Vector(x: 100, y: 232) > Vector(x: 101, y: 231) > Vector(x: 251, y: 231)) Shape: rgb(153,0,0) Path (Vector(x: 100, y: 232) > Vector(x: 100, y: 130) > Vector(x: 101, y: 131) > Vector(x: 101, y: 231)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [128, 158]: position: [176, 158]: absolute; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [156, 145]: DIV [179, 145]: #5 \ No newline at end of file diff --git a/tests/reftests/zindex/z-index9.txt b/tests/reftests/zindex/z-index9.txt index 0571bfbef..2d8f23fde 100644 --- a/tests/reftests/zindex/z-index9.txt +++ b/tests/reftests/zindex/z-index9.txt @@ -8,15 +8,15 @@ Shape: rgb(153,153,102) Path (Vector(x: 58, y: 250) > Vector(x: 742, y: 250) > V Shape: rgb(153,153,102) Path (Vector(x: 742, y: 250) > Vector(x: 742, y: 322) > Vector(x: 741, y: 321) > Vector(x: 741, y: 251)) Shape: rgb(153,153,102) Path (Vector(x: 742, y: 322) > Vector(x: 58, y: 322) > Vector(x: 59, y: 321) > Vector(x: 741, y: 321)) Shape: rgb(153,153,102) Path (Vector(x: 58, y: 322) > Vector(x: 58, y: 250) > Vector(x: 59, y: 251) > Vector(x: 59, y: 321)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [361, 278]: no [378, 278]: positioning -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [372, 292]: z [378, 292]: - [382, 292]: index: [418, 292]: 8; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [380, 264]: DIV [403, 264]: #5 Clip: Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 638, y: 362)) @@ -25,15 +25,15 @@ Shape: rgb(153,0,0) Path (Vector(x: 638, y: 10) > Vector(x: 790, y: 10) > Vector Shape: rgb(153,0,0) Path (Vector(x: 790, y: 10) > Vector(x: 790, y: 362) > Vector(x: 789, y: 361) > Vector(x: 789, y: 11)) Shape: rgb(153,0,0) Path (Vector(x: 790, y: 362) > Vector(x: 638, y: 362) > Vector(x: 639, y: 361) > Vector(x: 789, y: 361)) Shape: rgb(153,0,0) Path (Vector(x: 638, y: 362) > Vector(x: 638, y: 10) > Vector(x: 639, y: 11) > Vector(x: 639, y: 361)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [664, 38]: position: [712, 38]: absolute; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [686, 52]: z [692, 52]: - [696, 52]: index: [732, 52]: 1; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [694, 25]: DIV [717, 25]: #4 Clip: Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 78, y: 265)) @@ -42,15 +42,15 @@ Shape: rgb(102,153,102) Path (Vector(x: 78, y: 163) > Vector(x: 762, y: 163) > V Shape: rgb(102,153,102) Path (Vector(x: 762, y: 163) > Vector(x: 762, y: 265) > Vector(x: 761, y: 264) > Vector(x: 761, y: 164)) Shape: rgb(102,153,102) Path (Vector(x: 762, y: 265) > Vector(x: 78, y: 265) > Vector(x: 79, y: 264) > Vector(x: 761, y: 264)) Shape: rgb(102,153,102) Path (Vector(x: 78, y: 265) > Vector(x: 78, y: 163) > Vector(x: 79, y: 164) > Vector(x: 79, y: 264)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [373, 191]: position: [421, 191]: relative; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [392, 205]: z [398, 205]: - [402, 205]: index: [438, 205]: 2; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [400, 177]: DIV [423, 177]: #3 Clip: Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 58, y: 178)) @@ -59,15 +59,15 @@ Shape: rgb(102,153,102) Path (Vector(x: 58, y: 76) > Vector(x: 742, y: 76) > Vec Shape: rgb(102,153,102) Path (Vector(x: 742, y: 76) > Vector(x: 742, y: 178) > Vector(x: 741, y: 177) > Vector(x: 741, y: 77)) Shape: rgb(102,153,102) Path (Vector(x: 742, y: 178) > Vector(x: 58, y: 178) > Vector(x: 59, y: 177) > Vector(x: 741, y: 177)) Shape: rgb(102,153,102) Path (Vector(x: 58, y: 178) > Vector(x: 58, y: 76) > Vector(x: 59, y: 77) > Vector(x: 59, y: 177)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [353, 104]: position: [401, 104]: relative; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [372, 118]: z [378, 118]: - [382, 118]: index: [418, 118]: 3; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [380, 90]: DIV [403, 90]: #2 Clip: Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 10, y: 362)) @@ -76,14 +76,14 @@ Shape: rgb(153,0,0) Path (Vector(x: 10, y: 10) > Vector(x: 162, y: 10) > Vector( Shape: rgb(153,0,0) Path (Vector(x: 162, y: 10) > Vector(x: 162, y: 362) > Vector(x: 161, y: 361) > Vector(x: 161, y: 11)) Shape: rgb(153,0,0) Path (Vector(x: 162, y: 362) > Vector(x: 10, y: 362) > Vector(x: 11, y: 361) > Vector(x: 161, y: 361)) Shape: rgb(153,0,0) Path (Vector(x: 10, y: 362) > Vector(x: 10, y: 10) > Vector(x: 11, y: 11) > Vector(x: 11, y: 361)) -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [36, 38]: position: [84, 38]: absolute; -Text: rgb(0,0,0) normal normal 400 12px Arial +Text: rgb(0,0,0) normal normal 400 12 Arial [58, 52]: z [64, 52]: - [68, 52]: index: [104, 52]: 5; -Text: rgb(0,0,0) normal normal 700 12px Arial +Text: rgb(0,0,0) normal normal 700 12 Arial [66, 25]: DIV [89, 25]: #1 \ No newline at end of file From d327327166924c5232a60724d639d69b220ce121 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 23:21:28 +0800 Subject: [PATCH 066/377] Fix pseudoelement image content not being loaded in time --- src/NodeContainer.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 07a48d566..b13f57cee 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -135,6 +135,17 @@ export default class NodeContainer { node.style.transform = 'matrix(1,0,0,1,0,0)'; } + // TODO move bound retrieval for all nodes to a later stage? + if (node.tagName === 'IMG') { + node.addEventListener('load', () => { + this.bounds = parseBounds(node); + this.curvedBounds = parseBoundCurves( + this.bounds, + this.style.border, + this.style.borderRadius + ); + }); + } this.image = getImage(node, imageLoader); this.bounds = IS_INPUT ? reformatInputBounds(parseBounds(node)) : parseBounds(node); this.curvedBounds = parseBoundCurves( From c765e2042f7a48bc129946e206a55c81f1e7e7ee Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 12:16:48 +0800 Subject: [PATCH 067/377] Don't render 0 sized images --- src/Renderer.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/Renderer.js b/src/Renderer.js index 112134141..9d42a60d6 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -133,12 +133,23 @@ export default class Renderer { container.style.padding, container.style.border ); - const width = typeof image.width === 'number' ? image.width : contentBox.width; + const width = + typeof image.width === 'number' && image.width > 0 + ? image.width + : contentBox.width; const height = - typeof image.height === 'number' ? image.height : contentBox.height; - this.target.clip([calculatePaddingBoxPath(container.curvedBounds)], () => { - this.target.drawImage(image, new Bounds(0, 0, width, height), contentBox); - }); + typeof image.height === 'number' && image.height > 0 + ? image.height + : contentBox.height; + if (width > 0 && height > 0) { + this.target.clip([calculatePaddingBoxPath(container.curvedBounds)], () => { + this.target.drawImage( + image, + new Bounds(0, 0, width, height), + contentBox + ); + }); + } } } }; From 37a9249a4ae0d75a3ad54a16482aea9f776db0a5 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 13:11:03 +0800 Subject: [PATCH 068/377] Don't render SVG nodes if it taints canvas --- src/Feature.js | 21 +++++++++++++++++++++ src/ImageLoader.js | 32 ++++++++++++++++++++++++-------- tests/testrunner.js | 4 ++-- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/Feature.js b/src/Feature.js index b4af35f3f..c05fa9b71 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -25,6 +25,21 @@ const testRangeBounds = document => { return false; }; +const testSVG = document => { + const img = new Image(); + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + img.src = `data:image/svg+xml,`; + + try { + ctx.drawImage(img, 0, 0); + canvas.toDataURL(); + } catch (e) { + return false; + } + return true; +}; + const FEATURES = { // $FlowFixMe - get/set properties not yet supported get SUPPORT_RANGE_BOUNDS() { @@ -32,6 +47,12 @@ const FEATURES = { const value = testRangeBounds(document); Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value}); return value; + }, + get SUPPORT_SVG_DRAWING() { + 'use strict'; + const value = testSVG(document); + Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value}); + return value; } }; diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 523e31804..855a751f4 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -7,6 +7,8 @@ import type Logger from './Logger'; export type ImageElement = Image | HTMLCanvasElement; type ImageCache = {[string]: Promise}; +import FEATURES from './Feature'; + export default class ImageLoader { origin: string; options: Options; @@ -30,10 +32,20 @@ export default class ImageLoader { return src; } - if (this.options.allowTaint === true || this.isInlineImage(src) || this.isSameOrigin(src)) { - return this.addImage(src, src); - } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { - // TODO proxy + if (isSVG(src)) { + if (this.options.allowTaint === true || FEATURES.SUPPORT_SVG_DRAWING) { + return this.addImage(src, src); + } + } else { + if ( + this.options.allowTaint === true || + isInlineImage(src) || + this.isSameOrigin(src) + ) { + return this.addImage(src, src); + } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { + // TODO proxy + } } } @@ -43,10 +55,6 @@ export default class ImageLoader { return key; } - isInlineImage(src: string): boolean { - return /data:image\/.*;base64,/i.test(src); - } - hasImageInCache(key: string): boolean { return typeof this.cache[key] !== 'undefined'; } @@ -112,3 +120,11 @@ export class ImageStore { return index === -1 ? null : this._images[index]; } } + +const INLINE_SVG = /^data:image\/svg\+xml/i; +const INLINE_IMG = /^data:image\/.*;base64,/i; + +const isInlineImage = (src: string): boolean => INLINE_IMG.test(src); + +const isSVG = (src: string): boolean => + src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); diff --git a/tests/testrunner.js b/tests/testrunner.js index ffa95395c..c13c026c6 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -3,7 +3,7 @@ import parseRefTest from '../scripts/parse-reftest'; import reftests from './reftests'; import querystring from 'querystring'; -const DOWNLOAD_REFTESTS = true; +const DOWNLOAD_REFTESTS = false; const query = querystring.parse(location.search.replace(/^\?/, '')); const downloadResult = (filename, data) => { @@ -126,7 +126,7 @@ const assertPath = (result, expected, desc) => { const delta = 10; - if (REFTEST) { + if (REFTEST && query.refTest === 'true') { const RESULTS = parseRefTest(result); REFTEST.forEach(({action, line, ...args}, i) => { const RESULT = RESULTS[i]; From f3d6d2fdf43b05e736d3267a61bfc0a6241edad7 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 13:57:03 +0800 Subject: [PATCH 069/377] Don't resolve images immediately if they appear complete --- src/Feature.js | 1 + src/ImageLoader.js | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Feature.js b/src/Feature.js index c05fa9b71..ff3dd4870 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -48,6 +48,7 @@ const FEATURES = { Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value}); return value; }, + // $FlowFixMe - get/set properties not yet supported get SUPPORT_SVG_DRAWING() { 'use strict'; const value = testSVG(document); diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 855a751f4..d1aeee3ca 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -37,11 +37,7 @@ export default class ImageLoader { return this.addImage(src, src); } } else { - if ( - this.options.allowTaint === true || - isInlineImage(src) || - this.isSameOrigin(src) - ) { + if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) { return this.addImage(src, src); } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { // TODO proxy @@ -66,10 +62,14 @@ export default class ImageLoader { this.cache[key] = new Promise((resolve, reject) => { const img = new Image(); img.onload = () => resolve(img); + img.onerror = reject; img.src = src; if (img.complete === true) { - resolve(img); + // Inline XML images may fail to parse, throwing an Error later on + setTimeout(() => { + resolve(img); + }, 500); } }); return key; From c9fb5d50262d14ee16d45cccc21dab1c1cc311a4 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 11 Aug 2017 23:25:37 +0800 Subject: [PATCH 070/377] Add Chrome reftests to Travis --- .travis.yml | 6 ++++++ karma.conf.js | 2 +- package.json | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a9b2644c4..9033590d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,13 @@ env: - secure: Y2Av+Gd3z9uQEB36GwdOOuGka0hx0/HeitASEo59z934O8RxnmN9eNTXS7dDT3XtKtwxIyLTOEpS7qlRdWahH28hr/dS4xJj6ao58C+1xMcDs6NAPGmDxUlcJWpcGEsnjmXjQCc3fBioSTdpIBrK/gdvgpNh77UKG74Sk7Z+YGk= - secure: YI+YbTOGf2x4fPMKW+KhJiZWswoXT6xOKGwLfsQsVwmFX1LerJouil5D5iYOQuL4FE3pNaoJSNakIsokJQuGKJMmnPc8rdhMZuBJBk6MRghurE2Xe9qBHfuUBPlfD61nARESm4WDcyMwM0QVYaOKeY6aIpZ91qbUbyc60EEx3C4= addons: + chrome: stable sauce_connect: true +dist: trusty +sudo: false +before_script: + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start notifications: webhooks: urls: diff --git a/karma.conf.js b/karma.conf.js index c09cceec3..4a5166483 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -17,7 +17,7 @@ module.exports = function(config) { // list of files / patterns to load in the browser files: [ - 'tests/testrunner.js', + 'build/testrunner.js', { pattern: './tests/**/*', 'watched': true, 'included': false, 'served': true}, { pattern: './dist/**/*', 'watched': true, 'included': false, 'served': true}, { pattern: './node_modules/**/*', 'watched': true, 'included': false, 'served': true} diff --git a/package.json b/package.json index 4aff99824..284ebdc46 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", "flow": "flow", "lint": "eslint src/**", - "test": "npm run flow && npm run lint", + "test": "npm run flow && npm run lint && karma start --single-run --browsers Chrome", "karma": "karma start karma.conf.js", "watch": "webpack --progress --colors --watch" }, From 068480f6063230fd701dcc3a651967e578df7421 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 12 Aug 2017 13:46:02 +0800 Subject: [PATCH 071/377] Add saucelabs to karma runner --- .travis.yml | 3 +-- karma.conf.js | 56 ++++++++++++++++++++++++++------------------------- package.json | 5 +++-- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9033590d0..5db607259 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,9 @@ env: global: - secure: eW41gIqOizwO4pTgWnAAbW75AP7F+CK9qfSed/fSh4sJ9HWMIY1YRIaY8gjr+6jV/f7XVHcXuym6ZxgINYSkVKbF1JKxBJNLOXtSgNbVHSic58pYFvUjwxIBI9aPig9uux1+DbnpWqXFDTcACJSevQZE0xwmjdrSkDLgB0G34v8= - secure: Y2Av+Gd3z9uQEB36GwdOOuGka0hx0/HeitASEo59z934O8RxnmN9eNTXS7dDT3XtKtwxIyLTOEpS7qlRdWahH28hr/dS4xJj6ao58C+1xMcDs6NAPGmDxUlcJWpcGEsnjmXjQCc3fBioSTdpIBrK/gdvgpNh77UKG74Sk7Z+YGk= - - secure: YI+YbTOGf2x4fPMKW+KhJiZWswoXT6xOKGwLfsQsVwmFX1LerJouil5D5iYOQuL4FE3pNaoJSNakIsokJQuGKJMmnPc8rdhMZuBJBk6MRghurE2Xe9qBHfuUBPlfD61nARESm4WDcyMwM0QVYaOKeY6aIpZ91qbUbyc60EEx3C4= addons: chrome: stable - sauce_connect: true + firefox: latest dist: trusty sudo: false before_script: diff --git a/karma.conf.js b/karma.conf.js index 4a5166483..d265b0247 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -2,8 +2,30 @@ // Generated on Sat Aug 05 2017 23:42:26 GMT+0800 (Malay Peninsula Standard Time) const port = 9876; - module.exports = function(config) { + const slLaunchers = (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) ? {} : { + sl_beta_chrome: { + base: 'SauceLabs', + browserName: 'chrome', + platform: 'Windows 10', + version: 'beta' + }, + sl_stable_firefox: { + base: 'SauceLabs', + browserName: 'firefox', + platform: 'Windows 10' + } + }; + + const customLaunchers = Object.assign({}, slLaunchers, { + stable_chrome: { + base: 'Chrome' + }, + stable_firefox: { + base: 'Firefox' + } + }); + config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) @@ -38,8 +60,7 @@ module.exports = function(config) { // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - + reporters: ['dots', 'saucelabs'], // web server port port, @@ -60,37 +81,18 @@ module.exports = function(config) { // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: [ - 'Chrome', - 'Firefox', - 'IE9', - 'IE10', - 'IE11', - 'Edge' - ], + browsers: Object.keys(customLaunchers), - customLaunchers: { - IE9: { - base: 'IE', - 'x-ua-compatible': 'IE=EmulateIE9' - }, - IE10: { - base: 'IE', - 'x-ua-compatible': 'IE=EmulateIE10' - }, - IE11: { - base: 'IE' - } - }, + customLaunchers, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits - singleRun: false, + singleRun: true, // Concurrency level // how many browser should be started simultaneous - concurrency: Infinity, + concurrency: 5, proxies: { '/dist': `http://localhost:${port}/base/dist`, @@ -106,6 +108,6 @@ module.exports = function(config) { } }, - browserNoActivityTimeout: 30000 + browserNoActivityTimeout: 120000 }) }; diff --git a/package.json b/package.json index 284ebdc46..6ec10bef7 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "karma-firefox-launcher": "1.0.1", "karma-ie-launcher": "1.0.0", "karma-mocha": "1.3.0", + "karma-sauce-launcher": "1.1.0", "mocha": "3.5.0", "prettier": "1.5.3", "promise-polyfill": "6.0.2", @@ -57,8 +58,8 @@ "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", "flow": "flow", "lint": "eslint src/**", - "test": "npm run flow && npm run lint && karma start --single-run --browsers Chrome", - "karma": "karma start karma.conf.js", + "test": "npm run flow && npm run lint && npm run karma", + "karma": "karma start --single-run", "watch": "webpack --progress --colors --watch" }, "homepage": "https://html2canvas.hertzen.com", From 05e5d932f01696f7c8a4d9f83d9387bc6c4705e1 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 14:27:30 +0800 Subject: [PATCH 072/377] Add IE and Edge browsers to saucelabs tests --- karma.conf.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/karma.conf.js b/karma.conf.js index d265b0247..18e3fbe21 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -14,6 +14,30 @@ module.exports = function(config) { base: 'SauceLabs', browserName: 'firefox', platform: 'Windows 10' + }, + sl_ie9: { + base: 'SauceLabs', + browserName: 'internet explorer', + version: '9.0', + platform: 'Windows 7' + }, + sl_ie10: { + base: 'SauceLabs', + browserName: 'internet explorer', + version: '10.0', + platform: 'Windows 7' + }, + sl_ie11: { + base: 'SauceLabs', + browserName: 'internet explorer', + version: '11.0', + platform: 'Windows 7' + }, + sl_edge: { + base: 'SauceLabs', + browserName: 'MicrosoftEdge', + version: '15.15063', + platform: 'Windows 10' } }; From a101b52685660b235c6efc5cb3f94a114f3ac453 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 17:48:37 +0800 Subject: [PATCH 073/377] Render SVG nodes correctly --- flow-typed/myLibDef.js | 7 +++++++ src/Bounds.js | 2 +- src/NodeContainer.js | 19 ++++++++++++++++--- src/NodeParser.js | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/flow-typed/myLibDef.js b/flow-typed/myLibDef.js index a2094ce28..03fae64c8 100644 --- a/flow-typed/myLibDef.js +++ b/flow-typed/myLibDef.js @@ -1,2 +1,9 @@ declare var __DEV__: boolean; declare var __VERSION__: string; + +declare class SVGSVGElement extends Element { + className: string; + style: CSSStyleDeclaration; + + getPresentationAttribute(name: string): any; +} diff --git a/src/Bounds.js b/src/Bounds.js index a6d737f3f..34a64ee7e 100644 --- a/src/Bounds.js +++ b/src/Bounds.js @@ -46,7 +46,7 @@ export class Bounds { } } -export const parseBounds = (node: HTMLElement): Bounds => { +export const parseBounds = (node: HTMLElement | SVGSVGElement): Bounds => { return Bounds.fromClientRect(node.getBoundingClientRect()); }; diff --git a/src/NodeContainer.js b/src/NodeContainer.js index b13f57cee..598cc9607 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -85,7 +85,7 @@ export default class NodeContainer { index: number; constructor( - node: HTMLElement, + node: HTMLElement | SVGSVGElement, parent: ?NodeContainer, imageLoader: ImageLoader, index: number @@ -157,7 +157,11 @@ export default class NodeContainer { if (__DEV__) { this.name = `${node.tagName.toLowerCase()}${node.id ? `#${node.id}` - : ''}${node.className.split(' ').map(s => (s.length ? `.${s}` : '')).join('')}`; + : ''}${node.className + .toString() + .split(' ') + .map(s => (s.length ? `.${s}` : '')) + .join('')}`; } } getClipPaths(): Array { @@ -215,7 +219,16 @@ export default class NodeContainer { } } -const getImage = (node: HTMLElement, imageLoader: ImageLoader): ?string => { +const getImage = (node: HTMLElement | SVGSVGElement, imageLoader: ImageLoader): ?string => { + if ( + node instanceof node.ownerDocument.defaultView.SVGSVGElement || + node instanceof SVGSVGElement + ) { + const s = new XMLSerializer(); + return imageLoader.loadImage( + `data:image/svg+xml,${encodeURIComponent(s.serializeToString(node))}` + ); + } switch (node.tagName) { case 'IMG': // $FlowFixMe diff --git a/src/NodeParser.js b/src/NodeParser.js index 167d17b92..98c166532 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -102,6 +102,28 @@ const parseNodeTree = ( } } } + } else if ( + childNode instanceof defaultView.SVGSVGElement || + childNode instanceof SVGSVGElement + ) { + const container = new NodeContainer(childNode, parent, imageLoader, index++); + const treatAsRealStackingContext = createsRealStackingContext(container, childNode); + if (treatAsRealStackingContext || createsStackingContext(container)) { + // for treatAsRealStackingContext:false, any positioned descendants and descendants + // which actually create a new stacking context should be considered part of the parent stacking context + const parentStack = + treatAsRealStackingContext || container.isPositioned() + ? stack.getRealParentStackingContext() + : stack; + const childStack = new StackingContext( + container, + parentStack, + treatAsRealStackingContext + ); + parentStack.contexts.push(childStack); + } else { + stack.children.push(container); + } } } }; @@ -144,7 +166,10 @@ const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after') } }; -const createsRealStackingContext = (container: NodeContainer, node: HTMLElement): boolean => { +const createsRealStackingContext = ( + container: NodeContainer, + node: HTMLElement | SVGSVGElement +): boolean => { return ( container.isRootElement() || container.isPositionedWithZIndex() || @@ -158,7 +183,10 @@ const createsStackingContext = (container: NodeContainer): boolean => { return container.isPositioned() || container.isFloating(); }; -const isBodyWithTransparentRoot = (container: NodeContainer, node: HTMLElement): boolean => { +const isBodyWithTransparentRoot = ( + container: NodeContainer, + node: HTMLElement | SVGSVGElement +): boolean => { return ( node.nodeName === 'BODY' && container.parent instanceof NodeContainer && From ea080e0f5d5c73d45e2aa90ebaa8a87a856cf151 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 21:39:57 +0800 Subject: [PATCH 074/377] Fix recursion for safari 10 on pseudoelements --- src/Font.js | 3 +-- src/NodeParser.js | 4 ++++ src/Util.js | 14 ++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/Font.js b/src/Font.js index 595adaca4..cd32f2514 100644 --- a/src/Font.js +++ b/src/Font.js @@ -4,8 +4,7 @@ import type {Font} from './parsing/font'; const SAMPLE_TEXT = 'Hidden Text'; -const SMALL_IMAGE = - 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; +import {SMALL_IMAGE} from './Util'; export class FontMetrics { _data: {}; diff --git a/src/NodeParser.js b/src/NodeParser.js index 98c166532..661ce2bd8 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -46,6 +46,10 @@ const parseNodeTree = ( imageLoader: ImageLoader, index: number ): void => { + if (__DEV__ && index > 50000) { + throw new Error(`Recursion error while parsing node tree`); + } + for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; const defaultView = childNode.ownerDocument.defaultView; diff --git a/src/Util.js b/src/Util.js index 4dac94d80..217a2a154 100644 --- a/src/Util.js +++ b/src/Util.js @@ -4,13 +4,15 @@ export const contains = (bit: number, value: number): boolean => (bit & value) !== 0; export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): void => { - if (style.cssText) { - target.style.cssText = style.cssText; - } else { - // Edge does not provide value for cssText - for (let i = style.length - 1; i >= 0; i--) { - const property = style.item(i); + // Edge does not provide value for cssText + for (let i = style.length - 1; i >= 0; i--) { + const property = style.item(i); + // Safari shows pseudoelements if content is set + if (property !== 'content') { target.style.setProperty(property, style.getPropertyValue(property)); } } }; + +export const SMALL_IMAGE = + 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; From fd1447a6e7885922d6cf8885acb1eb9a4b1e47ac Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 23:24:39 +0800 Subject: [PATCH 075/377] Add sauceconnect launcher --- tests/sauceconnect.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 tests/sauceconnect.js diff --git a/tests/sauceconnect.js b/tests/sauceconnect.js new file mode 100644 index 000000000..04b54a473 --- /dev/null +++ b/tests/sauceconnect.js @@ -0,0 +1,16 @@ +const sauceConnectLauncher = require('sauce-connect-launcher'); + +sauceConnectLauncher( + { + username: process.env.SAUCE_USERNAME, + accessKey: process.env.SAUCE_ACCESS_KEY, + logger: console.log + }, + err => { + if (err) { + console.error(err.message); + return; + } + console.log('Sauce Connect ready'); + } +); From 8999c7618184e1564d19d9c367a488c22c0d65a3 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 13 Aug 2017 23:27:03 +0800 Subject: [PATCH 076/377] Fix iOS 10.3 base64 image tainting canvas (Fix #1151) --- src/Feature.js | 39 +++++++++++++++++++++++++++ src/ImageLoader.js | 41 ++++++++++++++++++----------- tests/reftests/images/svg/node.html | 3 +++ tests/testrunner.js | 8 ++++-- 4 files changed, 74 insertions(+), 17 deletions(-) diff --git a/src/Feature.js b/src/Feature.js index ff3dd4870..1b467f2d9 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -25,6 +25,38 @@ const testRangeBounds = document => { return false; }; +// iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous' +const testBase64 = (document: Document): Promise => { + const img = new Image(); + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + + return new Promise(resolve => { + // Single pixel base64 image renders fine on iOS 10.3??? + // TODO add a smaller base64 image that still fails on iOS 10.3 + img.src = "data:image/jpeg;base64,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"; + + const onload = () => { + try { + ctx.drawImage(img, 0, 0); + canvas.toDataURL(); + } catch (e) { + return resolve(false); + } + + return resolve(true); + }; + + img.onload = onload; + + if (img.complete === true) { + setTimeout(() => { + onload(); + }, 500); + } + }); +}; + const testSVG = document => { const img = new Image(); const canvas = document.createElement('canvas'); @@ -54,6 +86,13 @@ const FEATURES = { const value = testSVG(document); Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value}); return value; + }, + // $FlowFixMe - get/set properties not yet supported + get SUPPORT_BASE64_DRAWING() { + 'use strict'; + const value = testBase64(document); + Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', {value}); + return value; } }; diff --git a/src/ImageLoader.js b/src/ImageLoader.js index d1aeee3ca..3a6736ab8 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -59,19 +59,30 @@ export default class ImageLoader { if (__DEV__) { this.logger.log(`Added image ${key.substring(0, 256)}`); } - this.cache[key] = new Promise((resolve, reject) => { - const img = new Image(); - img.onload = () => resolve(img); - - img.onerror = reject; - img.src = src; - if (img.complete === true) { - // Inline XML images may fail to parse, throwing an Error later on - setTimeout(() => { - resolve(img); - }, 500); - } - }); + + const imageLoadHandler = (supportsDataImages: boolean): Promise => { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous + if (!supportsDataImages) { + img.crossOrigin = 'anonymous'; + } + + img.onerror = reject; + img.src = src; + if (img.complete === true) { + // Inline XML images may fail to parse, throwing an Error later on + setTimeout(() => { + resolve(img); + }, 500); + } + }); + }; + + this.cache[key] = isInlineImage(src) + ? FEATURES.SUPPORT_BASE64_DRAWING.then(imageLoadHandler) + : imageLoadHandler(true); return key; } @@ -122,9 +133,9 @@ export class ImageStore { } const INLINE_SVG = /^data:image\/svg\+xml/i; -const INLINE_IMG = /^data:image\/.*;base64,/i; +const INLINE_BASE64 = /^data:image\/.*;base64,/i; -const isInlineImage = (src: string): boolean => INLINE_IMG.test(src); +const isInlineImage = (src: string): boolean => INLINE_BASE64.test(src); const isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); diff --git a/tests/reftests/images/svg/node.html b/tests/reftests/images/svg/node.html index f5e546960..8db54337b 100644 --- a/tests/reftests/images/svg/node.html +++ b/tests/reftests/images/svg/node.html @@ -20,6 +20,9 @@ style="fill:#40aa54;fill-opacity:1;stroke:#20552a;stroke-width:7.99999952;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> + ABCDEABCDE + + ABCABC123123
      diff --git a/tests/testrunner.js b/tests/testrunner.js index c13c026c6..cc61727b1 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -95,14 +95,18 @@ const assertPath = (result, expected, desc) => { testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); if (hasHistoryApi) { // Chrome does not resolve relative background urls correctly inside of a nested iframe - history.replaceState(null, '', url); + try { + history.replaceState(null, '', url); + } catch (e) {} } document.body.appendChild(testContainer); }); after(() => { if (hasHistoryApi) { - history.replaceState(null, '', testRunnerUrl); + try { + history.replaceState(null, '', testRunnerUrl); + } catch (e) {} } document.body.removeChild(testContainer); }); From d77301a3531271c062981967f2f2656d8f75bbbb Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 16 Aug 2017 19:50:05 +0800 Subject: [PATCH 077/377] Fix base64 images for ios 10.3 --- src/Feature.js | 13 +++++++------ src/ImageLoader.js | 8 +++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Feature.js b/src/Feature.js index 1b467f2d9..3679e78ea 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -26,15 +26,14 @@ const testRangeBounds = document => { }; // iOS 10.3 taints canvas with base64 images unless crossOrigin = 'anonymous' -const testBase64 = (document: Document): Promise => { +const testBase64 = (document: Document, src: string): Promise => { const img = new Image(); const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); return new Promise(resolve => { // Single pixel base64 image renders fine on iOS 10.3??? - // TODO add a smaller base64 image that still fails on iOS 10.3 - img.src = "data:image/jpeg;base64,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"; + img.src = src; const onload = () => { try { @@ -90,9 +89,11 @@ const FEATURES = { // $FlowFixMe - get/set properties not yet supported get SUPPORT_BASE64_DRAWING() { 'use strict'; - const value = testBase64(document); - Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', {value}); - return value; + return (src: string) => { + const value = testBase64(document, src); + Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', {value: () => value}); + return value; + }; } }; diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 3a6736ab8..982e23099 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -80,9 +80,11 @@ export default class ImageLoader { }); }; - this.cache[key] = isInlineImage(src) - ? FEATURES.SUPPORT_BASE64_DRAWING.then(imageLoadHandler) - : imageLoadHandler(true); + this.cache[key] = + isInlineImage(src) && !isSVG(src) + // $FlowFixMe + ? FEATURES.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) + : imageLoadHandler(true); return key; } From fa4a4a4db5092b517fee5bb31563e34d83fa5e14 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 16 Aug 2017 19:50:14 +0800 Subject: [PATCH 078/377] Add saucelabs browsers --- karma.conf.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 18e3fbe21..97a1c6c26 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -33,11 +33,51 @@ module.exports = function(config) { version: '11.0', platform: 'Windows 7' }, - sl_edge: { + sl_edge_15: { base: 'SauceLabs', browserName: 'MicrosoftEdge', version: '15.15063', platform: 'Windows 10' + }, + sl_edge_14: { + base: 'SauceLabs', + browserName: 'MicrosoftEdge', + version: '14.14393', + platform: 'Windows 10' + }, + sl_safari: { + base: 'SauceLabs', + browserName: 'safari', + version: '10.0', + platform: 'macOS 10.12' + }, + 'sl_android_4.4': { + base: 'SauceLabs', + browserName: 'Browser', + platform: 'Android', + version: '4.4', + device: 'Android Emulator', + }, + 'sl_ios_10.3_safari': { + base: 'SauceLabs', + browserName: 'Safari', + platform: 'iOS', + version: '10.3', + device: 'iPhone 7 Plus Simulator' + }, + 'sl_ios_9.3_safari': { + base: 'SauceLabs', + browserName: 'Safari', + platform: 'iOS', + version: '9.3', + device: 'iPhone 6 Plus Simulator' + }, + 'sl_ios_8.4_safari': { + base: 'SauceLabs', + browserName: 'Safari', + platform: 'iOS', + version: '8.4', + device: 'iPhone 5s Simulator' } }; @@ -50,6 +90,16 @@ module.exports = function(config) { } }); + /* + 'sl_opera_12.15': { + base: 'SauceLabs', + browserName: 'opera', + platform: 'Linux', + version: '12.15' + }, + */ + + config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) @@ -84,7 +134,7 @@ module.exports = function(config) { // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['dots', 'saucelabs'], + reporters: ['progress', 'saucelabs'], // web server port port, @@ -132,6 +182,10 @@ module.exports = function(config) { } }, - browserNoActivityTimeout: 120000 + captureTimeout: 300000, + + browserDisconnectTimeout: 60000, + + browserNoActivityTimeout: 1200000 }) }; From 26cdc0441b15c1e67de99cf4740f24bcb6105e44 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 16 Aug 2017 19:54:48 +0800 Subject: [PATCH 079/377] Fix formatting --- src/ImageLoader.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 982e23099..0a3daca4c 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -82,8 +82,8 @@ export default class ImageLoader { this.cache[key] = isInlineImage(src) && !isSVG(src) - // $FlowFixMe - ? FEATURES.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) + ? // $FlowFixMe + FEATURES.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true); return key; } From a73dbf8067c92e4f25f4db71f75643f0647cb1ac Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 17 Aug 2017 23:14:44 +0800 Subject: [PATCH 080/377] Implement foreignObject renderer --- flow-typed/myLibDef.js | 2 + src/Clone.js | 250 ++++++++++++++++++++------ src/Feature.js | 35 ++++ src/ImageLoader.js | 64 +++++-- src/NodeContainer.js | 9 +- src/NodeParser.js | 81 +-------- src/Renderer.js | 2 +- src/index.js | 180 +++++++++++-------- src/parsing/background.js | 21 +-- src/renderer/ForeignObjectRenderer.js | 52 ++++++ 10 files changed, 464 insertions(+), 232 deletions(-) create mode 100644 src/renderer/ForeignObjectRenderer.js diff --git a/flow-typed/myLibDef.js b/flow-typed/myLibDef.js index 03fae64c8..e9ac98246 100644 --- a/flow-typed/myLibDef.js +++ b/flow-typed/myLibDef.js @@ -7,3 +7,5 @@ declare class SVGSVGElement extends Element { getPresentationAttribute(name: string): any; } + +declare class HTMLBodyElement extends HTMLElement {} diff --git a/src/Clone.js b/src/Clone.js index bc9aa511e..06da9d68c 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -2,6 +2,127 @@ 'use strict'; import type {Bounds} from './Bounds'; import type {Options} from './index'; +import type Logger from './Logger'; + +import ImageLoader from './ImageLoader'; +import {copyCSSStyles} from './Util'; +import {parseBackgroundImage} from './parsing/background'; + +export class DocumentCloner { + scrolledElements: Array<[HTMLElement, number, number]>; + referenceElement: HTMLElement; + clonedReferenceElement: HTMLElement; + documentElement: HTMLElement; + imageLoader: ImageLoader; + logger: Logger; + inlineImages: boolean; + copyStyles: boolean; + + constructor(element: HTMLElement, options: Options, logger: Logger) { + this.referenceElement = element; + this.scrolledElements = []; + this.copyStyles = true; + this.inlineImages = true; + this.logger = logger; + this.imageLoader = new ImageLoader(options, logger, window); + // $FlowFixMe + this.documentElement = this.cloneNode(element.ownerDocument.documentElement); + } + + inlineAllImages(node: ?HTMLElement) { + if (this.inlineImages && node) { + const style = node.style; + Promise.all( + parseBackgroundImage(style.backgroundImage).map(backgroundImage => { + if (backgroundImage.method === 'url') { + return this.imageLoader + .inlineImage(backgroundImage.args[0]) + .then(src => (src ? `url("${src}")` : 'none')); + } + return Promise.resolve( + `${backgroundImage.prefix}${backgroundImage.method}(${backgroundImage.args.join( + ',' + )})` + ); + }) + ).then(backgroundImages => { + if (backgroundImages.length > 1) { + // TODO Multiple backgrounds somehow broken in Chrome + style.backgroundColor = ''; + } + style.backgroundImage = backgroundImages.join(','); + }); + + if (node instanceof HTMLImageElement) { + this.imageLoader.inlineImage(node.src).then(src => { + if (src && node instanceof HTMLImageElement) { + node.src = src; + } + }); + } + } + } + + createElementClone(node: Node) { + if (this.copyStyles && node instanceof HTMLCanvasElement) { + const img = node.ownerDocument.createElement('img'); + try { + img.src = node.toDataURL(); + return img; + } catch (e) { + this.logger.log(`Unable to clone canvas contents, canvas is tainted`); + } + } + + return node.cloneNode(false); + } + + cloneNode(node: Node): Node { + const clone = + node.nodeType === Node.TEXT_NODE + ? document.createTextNode(node.nodeValue) + : this.createElementClone(node); + + if (this.referenceElement === node && clone instanceof HTMLElement) { + this.clonedReferenceElement = clone; + } + + if (clone instanceof HTMLBodyElement) { + createPseudoHideStyles(clone); + } + + for (let child = node.firstChild; child; child = child.nextSibling) { + if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') { + clone.appendChild(this.cloneNode(child)); + } + } + if (node instanceof HTMLElement && clone instanceof HTMLElement) { + this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_BEFORE)); + this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_AFTER)); + if (this.copyStyles) { + copyCSSStyles(node.ownerDocument.defaultView.getComputedStyle(node), clone); + } + this.inlineAllImages(clone); + if (node.scrollTop !== 0 || node.scrollLeft !== 0) { + this.scrolledElements.push([node, node.scrollLeft, node.scrollTop]); + } + switch (node.nodeName) { + case 'CANVAS': + if (!this.copyStyles) { + // $FlowFixMe + cloneCanvasContents(node, clone); + } + break; + case 'TEXTAREA': + case 'SELECT': + // $FlowFixMe + clone.value = node.value; + break; + } + } + return clone; + } +} const restoreOwnerScroll = (ownerDocument: Document, x: number, y: number) => { if ( @@ -28,44 +149,80 @@ const cloneCanvasContents = (canvas: HTMLCanvasElement, clonedCanvas: HTMLCanvas } catch (e) {} }; -const cloneNode = ( - node: Node, - referenceElement: [HTMLElement, ?HTMLElement], - scrolledElements: Array<[HTMLElement, number, number]> -) => { - const clone = - node.nodeType === Node.TEXT_NODE - ? document.createTextNode(node.nodeValue) - : node.cloneNode(false); - - if (referenceElement[0] === node && clone instanceof HTMLElement) { - referenceElement[1] = clone; +const inlinePseudoElement = ( + node: HTMLElement, + clone: HTMLElement, + pseudoElt: ':before' | ':after' +): ?HTMLElement => { + const style = node.ownerDocument.defaultView.getComputedStyle(node, pseudoElt); + if ( + !style || + !style.content || + style.content === 'none' || + style.content === '-moz-alt-content' || + style.display === 'none' + ) { + return; } - for (let child = node.firstChild; child; child = child.nextSibling) { - if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') { - clone.appendChild(cloneNode(child, referenceElement, scrolledElements)); - } + const content = stripQuotes(style.content); + const image = content.match(URL_REGEXP); + const anonymousReplacedElement = clone.ownerDocument.createElement( + image ? 'img' : 'html2canvaspseudoelement' + ); + if (image) { + // $FlowFixMe + anonymousReplacedElement.src = stripQuotes(image[1]); + } else { + anonymousReplacedElement.textContent = content; } - if (node instanceof HTMLElement) { - if (node.scrollTop !== 0 || node.scrollLeft !== 0) { - scrolledElements.push([node, node.scrollLeft, node.scrollTop]); - } - switch (node.nodeName) { - case 'CANVAS': - // $FlowFixMe - cloneCanvasContents(node, clone); - break; - case 'TEXTAREA': - case 'SELECT': - // $FlowFixMe - clone.value = node.value; - break; - } + copyCSSStyles(style, anonymousReplacedElement); + + anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; + clone.className += + pseudoElt === PSEUDO_BEFORE + ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}` + : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; + if (pseudoElt === PSEUDO_BEFORE) { + clone.insertBefore(anonymousReplacedElement, clone.firstChild); + } else { + clone.appendChild(anonymousReplacedElement); } - return clone; + return anonymousReplacedElement; +}; + +const stripQuotes = (content: string): string => { + const first = content.substr(0, 1); + return first === content.substr(content.length - 1) && first.match(/['"]/) + ? content.substr(1, content.length - 2) + : content; +}; + +const URL_REGEXP = /^url\((.+)\)$/i; +const PSEUDO_BEFORE = ':before'; +const PSEUDO_AFTER = ':after'; +const PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before'; +const PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after'; + +const PSEUDO_HIDE_ELEMENT_STYLE = `{ + content: "" !important; + display: none !important; +}`; + +const createPseudoHideStyles = (body: HTMLElement) => { + createStyles( + body, + `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE} + .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}` + ); +}; + +const createStyles = (body: HTMLElement, styles) => { + const style = body.ownerDocument.createElement('style'); + style.innerHTML = styles; + body.appendChild(style); }; const initNode = ([element, x, y]: [HTMLElement, number, number]) => { @@ -74,24 +231,13 @@ const initNode = ([element, x, y]: [HTMLElement, number, number]) => { }; export const cloneWindow = ( - documentToBeCloned: Document, ownerDocument: Document, bounds: Bounds, referenceElement: HTMLElement, - options: Options + options: Options, + logger: Logger ): Promise<[HTMLIFrameElement, HTMLElement]> => { - const scrolledElements = []; - const referenceElementSearch = [referenceElement, null]; - if (!(documentToBeCloned.documentElement instanceof HTMLElement)) { - return Promise.reject(__DEV__ ? `Invalid document provided for cloning` : ''); - } - - const documentElement = cloneNode( - documentToBeCloned.documentElement, - referenceElementSearch, - scrolledElements - ); - + const cloner = new DocumentCloner(referenceElement, options, logger); const cloneIframeContainer = ownerDocument.createElement('iframe'); cloneIframeContainer.className = 'html2canvas-container'; @@ -120,7 +266,7 @@ export const cloneWindow = ( cloneWindow.onload = cloneIframeContainer.onload = () => { const interval = setInterval(() => { if (documentClone.body.childNodes.length > 0) { - scrolledElements.forEach(initNode); + cloner.scrolledElements.forEach(initNode); clearInterval(interval); if (options.type === 'view') { cloneWindow.scrollTo(bounds.left, bounds.top); @@ -135,10 +281,10 @@ export const cloneWindow = ( } } if ( - referenceElementSearch[1] instanceof cloneWindow.HTMLElement || - referenceElementSearch[1] instanceof HTMLElement + cloner.clonedReferenceElement instanceof cloneWindow.HTMLElement || + cloner.clonedReferenceElement instanceof HTMLElement ) { - resolve([cloneIframeContainer, referenceElementSearch[1]]); + resolve([cloneIframeContainer, cloner.clonedReferenceElement]); } else { reject( __DEV__ @@ -153,9 +299,9 @@ export const cloneWindow = ( documentClone.open(); documentClone.write(''); // Chrome scrolls the parent document for some reason after the write to the cloned window??? - restoreOwnerScroll(documentToBeCloned, bounds.left, bounds.top); + restoreOwnerScroll(referenceElement.ownerDocument, bounds.left, bounds.top); documentClone.replaceChild( - documentClone.adoptNode(documentElement), + documentClone.adoptNode(cloner.documentElement), documentClone.documentElement ); documentClone.close(); diff --git a/src/Feature.js b/src/Feature.js index 3679e78ea..b1b27774e 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -71,6 +71,34 @@ const testSVG = document => { return true; }; +const testForeignObject = document => { + const img = new Image(); + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + img.src = `data:image/svg+xml,
      `; + + return new Promise(resolve => { + const onload = () => { + try { + ctx.drawImage(img, 0, 0); + canvas.toDataURL(); + } catch (e) { + return resolve(false); + } + + return resolve(true); + }; + + img.onload = onload; + + if (img.complete === true) { + setTimeout(() => { + onload(); + }, 50); + } + }); +}; + const FEATURES = { // $FlowFixMe - get/set properties not yet supported get SUPPORT_RANGE_BOUNDS() { @@ -94,6 +122,13 @@ const FEATURES = { Object.defineProperty(FEATURES, 'SUPPORT_BASE64_DRAWING', {value: () => value}); return value; }; + }, + // $FlowFixMe - get/set properties not yet supported + get SUPPORT_FOREIGNOBJECT_DRAWING() { + 'use strict'; + const value = testForeignObject(document); + Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value}); + return value; } }; diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 0a3daca4c..d6cdc2121 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -5,15 +5,16 @@ import type Options from './index'; import type Logger from './Logger'; export type ImageElement = Image | HTMLCanvasElement; -type ImageCache = {[string]: Promise}; +type ImageCache = {[string]: Promise}; import FEATURES from './Feature'; -export default class ImageLoader { +// $FlowFixMe +export default class ImageLoader { origin: string; options: Options; _link: HTMLAnchorElement; - cache: ImageCache; + cache: ImageCache; logger: Logger; _index: number; _window: WindowProxy; @@ -45,6 +46,46 @@ export default class ImageLoader { } } + inlineImage(src: string): Promise { + if (isInlineImage(src)) { + return Promise.resolve(src); + } + if (this.hasImageInCache(src)) { + return this.cache[src]; + } + // TODO proxy + return this.xhrImage(src); + } + + xhrImage(src: string): Promise { + this.cache[src] = new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.onreadystatechange = () => { + if (xhr.readyState === 4) { + if (xhr.status !== 200) { + reject(`Failed to fetch image ${src} with status code ${xhr.status}`); + } else { + const reader = new FileReader(); + // $FlowFixMe + reader.addEventListener('load', () => resolve(reader.result), false); + // $FlowFixMe + reader.addEventListener('error', e => reject(e), false); + reader.readAsDataURL(xhr.response); + } + } + }; + xhr.ontimeout = () => reject(`Timed out fetching ${src}`); + xhr.responseType = 'blob'; + if (this.options.imageTimeout) { + xhr.timeout = this.options.imageTimeout; + } + xhr.open('GET', src, true); + xhr.send(); + }); + + return this.cache[src]; + } + loadCanvas(node: HTMLCanvasElement): string { const key = String(this._index++); this.cache[key] = Promise.resolve(node); @@ -60,8 +101,8 @@ export default class ImageLoader { this.logger.log(`Added image ${key.substring(0, 256)}`); } - const imageLoadHandler = (supportsDataImages: boolean): Promise => { - return new Promise((resolve, reject) => { + const imageLoadHandler = (supportsDataImages: boolean): Promise => + new Promise((resolve, reject) => { const img = new Image(); img.onload = () => resolve(img); //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous @@ -78,7 +119,6 @@ export default class ImageLoader { }, 500); } }); - }; this.cache[key] = isInlineImage(src) && !isSVG(src) @@ -99,7 +139,7 @@ export default class ImageLoader { return link.protocol + link.hostname + link.port; } - ready(): Promise { + ready(): Promise> { const keys = Object.keys(this.cache); return Promise.all( keys.map(str => @@ -112,23 +152,23 @@ export default class ImageLoader { ) ).then(images => { if (__DEV__) { - this.logger.log('Finished loading images', images); + this.logger.log(`Finished loading ${images.length} images`, images); } return new ImageStore(keys, images); }); } } -export class ImageStore { +export class ImageStore { _keys: Array; - _images: Array; + _images: Array; - constructor(keys: Array, images: Array) { + constructor(keys: Array, images: Array) { this._keys = keys; this._images = images; } - get(key: string): ?ImageElement { + get(key: string): ?T { const index = this._keys.indexOf(key); return index === -1 ? null : this._images[index]; } diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 598cc9607..17a1f0cce 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -18,7 +18,7 @@ import type {Visibility} from './parsing/visibility'; import type {zIndex} from './parsing/zIndex'; import type {Bounds, BoundCurves} from './Bounds'; -import type ImageLoader from './ImageLoader'; +import type ImageLoader, {ImageElement} from './ImageLoader'; import type {Path} from './drawing/Path'; import type TextContainer from './TextContainer'; @@ -87,7 +87,7 @@ export default class NodeContainer { constructor( node: HTMLElement | SVGSVGElement, parent: ?NodeContainer, - imageLoader: ImageLoader, + imageLoader: ImageLoader, index: number ) { this.parent = parent; @@ -219,7 +219,10 @@ export default class NodeContainer { } } -const getImage = (node: HTMLElement | SVGSVGElement, imageLoader: ImageLoader): ?string => { +const getImage = ( + node: HTMLElement | SVGSVGElement, + imageLoader: ImageLoader +): ?string => { if ( node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement diff --git a/src/NodeParser.js b/src/NodeParser.js index 661ce2bd8..aca771826 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -1,16 +1,15 @@ /* @flow */ 'use strict'; -import type ImageLoader from './ImageLoader'; +import type ImageLoader, {ImageElement} from './ImageLoader'; import type Logger from './Logger'; import StackingContext from './StackingContext'; import NodeContainer from './NodeContainer'; import TextContainer from './TextContainer'; import {inlineInputElement, inlineTextAreaElement, inlineSelectElement} from './Input'; -import {copyCSSStyles} from './Util'; export const NodeParser = ( node: HTMLElement, - imageLoader: ImageLoader, + imageLoader: ImageLoader, logger: Logger ): StackingContext => { if (__DEV__) { @@ -22,7 +21,6 @@ export const NodeParser = ( const container = new NodeContainer(node, null, imageLoader, index++); const stack = new StackingContext(container, null, true); - createPseudoHideStyles(node.ownerDocument); parseNodeTree(node, container, stack, imageLoader, index); if (__DEV__) { @@ -33,17 +31,12 @@ export const NodeParser = ( }; const IGNORED_NODE_NAMES = ['SCRIPT', 'HEAD', 'TITLE', 'OBJECT', 'BR', 'OPTION']; -const URL_REGEXP = /^url\((.+)\)$/i; -const PSEUDO_BEFORE = ':before'; -const PSEUDO_AFTER = ':after'; -const PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before'; -const PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after'; const parseNodeTree = ( node: HTMLElement, parent: NodeContainer, stack: StackingContext, - imageLoader: ImageLoader, + imageLoader: ImageLoader, index: number ): void => { if (__DEV__ && index > 50000) { @@ -62,8 +55,6 @@ const parseNodeTree = ( childNode instanceof HTMLElement ) { if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { - inlinePseudoElement(childNode, PSEUDO_BEFORE); - inlinePseudoElement(childNode, PSEUDO_AFTER); const container = new NodeContainer(childNode, parent, imageLoader, index++); if (container.isVisible()) { if (childNode.tagName === 'INPUT') { @@ -132,44 +123,6 @@ const parseNodeTree = ( } }; -const inlinePseudoElement = (node: HTMLElement, pseudoElt: ':before' | ':after'): void => { - const style = node.ownerDocument.defaultView.getComputedStyle(node, pseudoElt); - if ( - !style || - !style.content || - style.content === 'none' || - style.content === '-moz-alt-content' || - style.display === 'none' - ) { - return; - } - - const content = stripQuotes(style.content); - const image = content.match(URL_REGEXP); - const anonymousReplacedElement = node.ownerDocument.createElement( - image ? 'img' : 'html2canvaspseudoelement' - ); - if (image) { - // $FlowFixMe - anonymousReplacedElement.src = stripQuotes(image[1]); - } else { - anonymousReplacedElement.textContent = content; - } - - copyCSSStyles(style, anonymousReplacedElement); - - anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; - node.className += - pseudoElt === PSEUDO_BEFORE - ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}` - : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; - if (pseudoElt === PSEUDO_BEFORE) { - node.insertBefore(anonymousReplacedElement, node.firstChild); - } else { - node.appendChild(anonymousReplacedElement); - } -}; - const createsRealStackingContext = ( container: NodeContainer, node: HTMLElement | SVGSVGElement @@ -197,31 +150,3 @@ const isBodyWithTransparentRoot = ( container.parent.style.background.backgroundColor.isTransparent() ); }; - -const stripQuotes = (content: string): string => { - const first = content.substr(0, 1); - return first === content.substr(content.length - 1) && first.match(/['"]/) - ? content.substr(1, content.length - 2) - : content; -}; - -const PSEUDO_HIDE_ELEMENT_STYLE = `{ - content: "" !important; - display: none !important; -}`; - -const createPseudoHideStyles = (document: Document) => { - createStyles( - document, - `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE} - .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}` - ); -}; - -const createStyles = (document: Document, styles) => { - const style = document.createElement('style'); - style.innerHTML = styles; - if (document.body) { - document.body.appendChild(style); - } -}; diff --git a/src/Renderer.js b/src/Renderer.js index 9d42a60d6..d924eda14 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -43,7 +43,7 @@ import {BORDER_STYLE} from './parsing/border'; export type RenderOptions = { scale: number, backgroundColor: ?Color, - imageStore: ImageStore, + imageStore: ImageStore, fontMetrics: FontMetrics, logger: Logger, width: number, diff --git a/src/index.js b/src/index.js index 2f80a399e..38a13760c 100644 --- a/src/index.js +++ b/src/index.js @@ -5,13 +5,15 @@ import type {RenderTarget} from './Renderer'; import {NodeParser} from './NodeParser'; import Renderer from './Renderer'; +import ForeignObjectRenderer from './renderer/ForeignObjectRenderer'; import CanvasRenderer from './renderer/CanvasRenderer'; import Logger from './Logger'; import ImageLoader from './ImageLoader'; +import Feature from './Feature'; import {Bounds, parseDocumentSize} from './Bounds'; -import {cloneWindow} from './Clone'; -import Color, {TRANSPARENT} from './Color'; +import {cloneWindow, DocumentCloner} from './Clone'; import {FontMetrics} from './Font'; +import Color, {TRANSPARENT} from './Color'; export type Options = { async: ?boolean, @@ -42,7 +44,7 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { const defaultOptions = { async: true, allowTaint: false, - imageTimeout: 10000, + imageTimeout: 15000, proxy: null, removeContainer: true, scale: defaultView.devicePixelRatio || 1, @@ -63,79 +65,105 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { options.windowHeight ); - const result = cloneWindow( - ownerDocument, - ownerDocument, - windowBounds, - element, - options - ).then(([container, clonedElement]) => { - if (__DEV__) { - logger.log(`Document cloned`); - } - - const imageLoader = new ImageLoader( - options, - logger, - clonedElement.ownerDocument.defaultView - ); - const stack = NodeParser(clonedElement, imageLoader, logger); - const clonedDocument = clonedElement.ownerDocument; - const size = options.type === 'view' ? windowBounds : parseDocumentSize(clonedDocument); - const width = size.width; - const height = size.height; - - // http://www.w3.org/TR/css3-background/#special-backgrounds - const backgroundColor = - clonedElement === clonedDocument.documentElement - ? stack.container.style.background.backgroundColor.isTransparent() - ? clonedDocument.body - ? new Color(getComputedStyle(clonedDocument.body).backgroundColor) - : null - : stack.container.style.background.backgroundColor - : null; - - if (backgroundColor === stack.container.style.background.backgroundColor) { - stack.container.style.background.backgroundColor = TRANSPARENT; - } - - return imageLoader.ready().then(imageStore => { - if (options.removeContainer === true) { - if (container.parentNode) { - container.parentNode.removeChild(container); - } else if (__DEV__) { - logger.log(`Cannot detach cloned iframe as it is not in the DOM anymore`); - } - } - - const fontMetrics = new FontMetrics(clonedDocument); - if (__DEV__) { - logger.log(`Starting renderer`); - } - - const renderOptions = { - backgroundColor, - fontMetrics, - imageStore, - logger, - scale: options.scale, - width, - height - }; - - if (Array.isArray(options.target)) { - return Promise.all( - options.target.map(target => { - const renderer = new Renderer(target, renderOptions); - return renderer.render(stack); - }) - ); - } else { - const renderer = new Renderer(options.target, renderOptions); - return renderer.render(stack); - } - }); - }); + const bounds = options.type === 'view' ? windowBounds : parseDocumentSize(ownerDocument); + + // http://www.w3.org/TR/css3-background/#special-backgrounds + const documentBackgroundColor = ownerDocument.documentElement + ? new Color(getComputedStyle(ownerDocument.documentElement).backgroundColor) + : TRANSPARENT; + const backgroundColor = + element === ownerDocument.documentElement + ? documentBackgroundColor.isTransparent() + ? ownerDocument.body + ? new Color(getComputedStyle(ownerDocument.body).backgroundColor) + : null + : documentBackgroundColor + : null; + + // $FlowFixMe + const result = Feature.SUPPORT_FOREIGNOBJECT_DRAWING.then( + supportForeignObject => + supportForeignObject + ? (cloner => { + if (__DEV__) { + logger.log(`Document cloned, using foreignObject rendering`); + } + + return cloner.imageLoader.ready().then(() => { + const renderer = new ForeignObjectRenderer(cloner.clonedReferenceElement); + return renderer.render({ + bounds, + backgroundColor, + logger, + scale: options.scale + }); + }); + })(new DocumentCloner(element, options, logger)) + : cloneWindow( + ownerDocument, + windowBounds, + element, + options, + logger + ).then(([container, clonedElement]) => { + if (__DEV__) { + logger.log(`Document cloned, using computed rendering`); + } + + const imageLoader = new ImageLoader( + options, + logger, + clonedElement.ownerDocument.defaultView + ); + const stack = NodeParser(clonedElement, imageLoader, logger); + const clonedDocument = clonedElement.ownerDocument; + const width = bounds.width; + const height = bounds.height; + + if (backgroundColor === stack.container.style.background.backgroundColor) { + stack.container.style.background.backgroundColor = TRANSPARENT; + } + + return imageLoader.ready().then(imageStore => { + if (options.removeContainer === true) { + if (container.parentNode) { + container.parentNode.removeChild(container); + } else if (__DEV__) { + logger.log( + `Cannot detach cloned iframe as it is not in the DOM anymore` + ); + } + } + + const fontMetrics = new FontMetrics(clonedDocument); + if (__DEV__) { + logger.log(`Starting renderer`); + } + + const renderOptions = { + backgroundColor, + fontMetrics, + imageStore, + logger, + scale: options.scale, + width, + height + }; + + if (Array.isArray(options.target)) { + return Promise.all( + options.target.map(target => { + const renderer = new Renderer(target, renderOptions); + return renderer.render(stack); + }) + ); + } else { + const renderer = new Renderer(options.target, renderOptions); + return renderer.render(stack); + } + }); + }) + ); if (__DEV__) { return result.catch(e => { diff --git a/src/parsing/background.js b/src/parsing/background.js index 364c00986..09d0a411a 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -223,7 +223,7 @@ export const calculateBackgroundRepeatPath = ( export const parseBackground = ( style: CSSStyleDeclaration, - imageLoader: ImageLoader + imageLoader: ImageLoader ): Background => { return { backgroundColor: new Color(style.backgroundColor), @@ -276,12 +276,17 @@ const parseBackgroundRepeat = (backgroundRepeat: string): BackgroundRepeat => { const parseBackgroundImages = ( style: CSSStyleDeclaration, - imageLoader: ImageLoader + imageLoader: ImageLoader ): Array => { const sources: Array = parseBackgroundImage( - style.backgroundImage, - imageLoader - ); + style.backgroundImage + ).map(backgroundImage => { + if (backgroundImage.method === 'url') { + const key = imageLoader.loadImage(backgroundImage.args[0]); + backgroundImage.args = key ? [key] : []; + } + return backgroundImage; + }); const positions = style.backgroundPosition.split(','); const repeats = style.backgroundRepeat.split(','); const sizes = style.backgroundSize.split(','); @@ -318,7 +323,7 @@ const parseBackgoundPosition = (position: string): Length => { return new Length(position); }; -const parseBackgroundImage = (image: string, imageLoader: ImageLoader): Array => { +export const parseBackgroundImage = (image: string): Array => { const whitespace = /^\s$/; const results = []; @@ -346,10 +351,6 @@ const parseBackgroundImage = (image: string, imageLoader: ImageLoader): Array { + const img = new Image(); + img.onload = () => { + if (options.backgroundColor) { + this.ctx.fillStyle = options.backgroundColor.toString(); + this.ctx.fillRect(0, 0, options.bounds.width, options.bounds.height); + } + this.ctx.drawImage(img, 0, 0); + resolve(this.canvas); + }; + + img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent( + new XMLSerializer().serializeToString(svg) + )}`; + }); + } +} From 26d8d8ea5b435760f8aae2394f01a22fc1a72516 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 17 Aug 2017 23:30:00 +0800 Subject: [PATCH 081/377] Remove reftests for now --- tests/testrunner.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/testrunner.js b/tests/testrunner.js index cc61727b1..b43655331 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -113,13 +113,9 @@ const assertPath = (result, expected, desc) => { it('Should render untainted canvas', () => { return testContainer.contentWindow .html2canvas(testContainer.contentWindow.document.documentElement, { - removeContainer: true, - target: [ - new testContainer.contentWindow.html2canvas.CanvasRenderer(), - new testContainer.contentWindow.RefTestRenderer() - ] + removeContainer: true }) - .then(([canvas, result]) => { + .then((canvas) => { try { canvas .getContext('2d') From 4f96abfb7b4eb9f2f5b4698084357e9b598b40b2 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 17 Aug 2017 23:32:03 +0800 Subject: [PATCH 082/377] Handle inline svg correctly with foreignObject --- src/ImageLoader.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index d6cdc2121..371d35ef8 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -38,7 +38,7 @@ export default class ImageLoader { return this.addImage(src, src); } } else { - if (this.options.allowTaint === true || isInlineImage(src) || this.isSameOrigin(src)) { + if (this.options.allowTaint === true || isInlineBase64Image(src) || this.isSameOrigin(src)) { return this.addImage(src, src); } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { // TODO proxy @@ -121,7 +121,7 @@ export default class ImageLoader { }); this.cache[key] = - isInlineImage(src) && !isSVG(src) + isInlineBase64Image(src) && !isSVG(src) ? // $FlowFixMe FEATURES.SUPPORT_BASE64_DRAWING(src).then(imageLoadHandler) : imageLoadHandler(true); @@ -176,8 +176,10 @@ export class ImageStore { const INLINE_SVG = /^data:image\/svg\+xml/i; const INLINE_BASE64 = /^data:image\/.*;base64,/i; +const INLINE_IMG = /^data:image\/.*/i; -const isInlineImage = (src: string): boolean => INLINE_BASE64.test(src); +const isInlineImage = (src: string): boolean => INLINE_IMG.test(src); +const isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src); const isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); From f79ae2b73a4319d7436536faf83e346916961a56 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 18 Aug 2017 20:52:29 +0800 Subject: [PATCH 083/377] Don't copy styles for regular computed rendering --- src/Clone.js | 8 ++++---- src/ImageLoader.js | 6 +++++- src/index.js | 4 ++-- tests/testrunner.js | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Clone.js b/src/Clone.js index 06da9d68c..c77b722b7 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -18,11 +18,11 @@ export class DocumentCloner { inlineImages: boolean; copyStyles: boolean; - constructor(element: HTMLElement, options: Options, logger: Logger) { + constructor(element: HTMLElement, options: Options, logger: Logger, copyInline: boolean) { this.referenceElement = element; this.scrolledElements = []; - this.copyStyles = true; - this.inlineImages = true; + this.copyStyles = copyInline; + this.inlineImages = copyInline; this.logger = logger; this.imageLoader = new ImageLoader(options, logger, window); // $FlowFixMe @@ -237,7 +237,7 @@ export const cloneWindow = ( options: Options, logger: Logger ): Promise<[HTMLIFrameElement, HTMLElement]> => { - const cloner = new DocumentCloner(referenceElement, options, logger); + const cloner = new DocumentCloner(referenceElement, options, logger, false); const cloneIframeContainer = ownerDocument.createElement('iframe'); cloneIframeContainer.className = 'html2canvas-container'; diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 371d35ef8..53e2ff7c6 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -38,7 +38,11 @@ export default class ImageLoader { return this.addImage(src, src); } } else { - if (this.options.allowTaint === true || isInlineBase64Image(src) || this.isSameOrigin(src)) { + if ( + this.options.allowTaint === true || + isInlineBase64Image(src) || + this.isSameOrigin(src) + ) { return this.addImage(src, src); } else if (typeof this.options.proxy === 'string' && !this.isSameOrigin(src)) { // TODO proxy diff --git a/src/index.js b/src/index.js index 38a13760c..6a841b646 100644 --- a/src/index.js +++ b/src/index.js @@ -23,7 +23,7 @@ export type Options = { proxy: ?string, removeContainer: ?boolean, scale: number, - target: RenderTarget<*> | Array>, + target: RenderTarget<*>, type: ?string, windowWidth: number, windowHeight: number, @@ -98,7 +98,7 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { scale: options.scale }); }); - })(new DocumentCloner(element, options, logger)) + })(new DocumentCloner(element, options, logger, true)) : cloneWindow( ownerDocument, windowBounds, diff --git a/tests/testrunner.js b/tests/testrunner.js index b43655331..2fa399853 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -115,7 +115,7 @@ const assertPath = (result, expected, desc) => { .html2canvas(testContainer.contentWindow.document.documentElement, { removeContainer: true }) - .then((canvas) => { + .then(canvas => { try { canvas .getContext('2d') From c093c95881ef81637b7324a024ffc581637da62f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 18 Aug 2017 21:34:05 +0800 Subject: [PATCH 084/377] Correctly resolve unsupported svg image testing --- src/Feature.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Feature.js b/src/Feature.js index b1b27774e..91786f366 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -47,6 +47,7 @@ const testBase64 = (document: Document, src: string): Promise => { }; img.onload = onload; + img.onerror = () => resolve(false); if (img.complete === true) { setTimeout(() => { @@ -90,6 +91,7 @@ const testForeignObject = document => { }; img.onload = onload; + img.onerror = () => resolve(false); if (img.complete === true) { setTimeout(() => { From bd463d9343011e3b1e2a694bff7c3e3cc5c26697 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 18 Aug 2017 21:53:42 +0800 Subject: [PATCH 085/377] Correctly apply image timeout for loading images --- src/ImageLoader.js | 13 +++++++++++-- src/index.js | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ImageLoader.js b/src/ImageLoader.js index 53e2ff7c6..d33a29f66 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -78,10 +78,12 @@ export default class ImageLoader { } } }; - xhr.ontimeout = () => reject(`Timed out fetching ${src}`); xhr.responseType = 'blob'; if (this.options.imageTimeout) { - xhr.timeout = this.options.imageTimeout; + const timeout = this.options.imageTimeout; + xhr.timeout = timeout; + xhr.ontimeout = () => + reject(__DEV__ ? `Timed out (${timeout}ms) fetching ${src}` : ''); } xhr.open('GET', src, true); xhr.send(); @@ -122,6 +124,13 @@ export default class ImageLoader { resolve(img); }, 500); } + if (this.options.imageTimeout) { + const timeout = this.options.imageTimeout; + setTimeout( + () => reject(__DEV__ ? `Timed out (${timeout}ms) fetching ${src}` : ''), + timeout + ); + } }); this.cache[key] = diff --git a/src/index.js b/src/index.js index 6a841b646..1faf848e2 100644 --- a/src/index.js +++ b/src/index.js @@ -19,7 +19,7 @@ export type Options = { async: ?boolean, allowTaint: ?boolean, canvas: ?HTMLCanvasElement, - imageTimeout: ?number, + imageTimeout: number, proxy: ?string, removeContainer: ?boolean, scale: number, From 5dbb197a820ad6ad4083c765ff7a6194f90540a1 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 18 Aug 2017 22:22:24 +0800 Subject: [PATCH 086/377] Remove redundant style nodes from clone --- src/Clone.js | 4 +++- src/renderer/ForeignObjectRenderer.js | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Clone.js b/src/Clone.js index c77b722b7..c6feb3127 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -93,7 +93,9 @@ export class DocumentCloner { for (let child = node.firstChild; child; child = child.nextSibling) { if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') { - clone.appendChild(this.cloneNode(child)); + if (!this.copyStyles || child.nodeName !== 'STYLE') { + clone.appendChild(this.cloneNode(child)); + } } } if (node instanceof HTMLElement && clone instanceof HTMLElement) { diff --git a/src/renderer/ForeignObjectRenderer.js b/src/renderer/ForeignObjectRenderer.js index 9414c2548..81a10eb89 100644 --- a/src/renderer/ForeignObjectRenderer.js +++ b/src/renderer/ForeignObjectRenderer.js @@ -44,6 +44,8 @@ export default class ForeignObjectRenderer { resolve(this.canvas); }; + img.onerror = reject; + img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent( new XMLSerializer().serializeToString(svg) )}`; From b75fd70042fd723bfca040e58399c395de42f70c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 28 Aug 2017 21:27:39 +0800 Subject: [PATCH 087/377] Add screenshot collecting server --- .gitignore | 1 + karma.conf.js | 16 ++----- package.json | 5 ++- scripts/screenshot-server.js | 69 ++++++++++++++++++++++++++++++ src/Feature.js | 9 +++- src/index.js | 13 ++++-- tests/reftests/ignore.txt | 5 --- tests/sauceconnect.js | 7 +++- tests/testrunner.js | 81 +++++++++++++++++++++++++++++++++++- 9 files changed, 180 insertions(+), 26 deletions(-) create mode 100644 scripts/screenshot-server.js diff --git a/.gitignore b/.gitignore index a982a4256..12151a368 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ node_modules/ npm-debug.log debug.log tests/reftests.js +*.log diff --git a/karma.conf.js b/karma.conf.js index 97a1c6c26..811827b08 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -10,10 +10,11 @@ module.exports = function(config) { platform: 'Windows 10', version: 'beta' }, - sl_stable_firefox: { + sl_beta_firefox: { base: 'SauceLabs', browserName: 'firefox', - platform: 'Windows 10' + platform: 'Windows 8.1', + version: 'beta' }, sl_ie9: { base: 'SauceLabs', @@ -90,16 +91,6 @@ module.exports = function(config) { } }); - /* - 'sl_opera_12.15': { - base: 'SauceLabs', - browserName: 'opera', - platform: 'Linux', - version: '12.15' - }, - */ - - config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) @@ -173,6 +164,7 @@ module.exports = function(config) { '/node_modules': `http://localhost:${port}/base/node_modules`, '/tests': `http://localhost:${port}/base/tests`, '/assets': `http://localhost:${port}/base/tests/assets`, + '/screenshot': `http://localhost:8081/screenshot`, }, client: { diff --git a/package.json b/package.json index 6ec10bef7..65b48662f 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,14 @@ "babel-preset-es2015": "6.24.1", "babel-preset-flow": "6.23.0", "base64-arraybuffer": "0.1.5", + "body-parser": "1.17.2", "chai": "4.1.1", "chromeless": "^1.2.0", "eslint": "4.2.0", "eslint-plugin-flowtype": "2.35.0", "eslint-plugin-prettier": "2.1.2", "express": "4.15.4", + "filenamify-url": "1.0.0", "flow-bin": "0.50.0", "glob": "7.1.2", "jquery": "3.2.1", @@ -45,6 +47,7 @@ "karma-mocha": "1.3.0", "karma-sauce-launcher": "1.1.0", "mocha": "3.5.0", + "platform": "1.3.4", "prettier": "1.5.3", "promise-polyfill": "6.0.2", "rimraf": "2.6.1", @@ -59,7 +62,7 @@ "flow": "flow", "lint": "eslint src/**", "test": "npm run flow && npm run lint && npm run karma", - "karma": "karma start --single-run", + "karma": "karma start", "watch": "webpack --progress --colors --watch" }, "homepage": "https://html2canvas.hertzen.com", diff --git a/scripts/screenshot-server.js b/scripts/screenshot-server.js new file mode 100644 index 000000000..797c9ad37 --- /dev/null +++ b/scripts/screenshot-server.js @@ -0,0 +1,69 @@ +const path = require('path'); +const fs = require('fs'); +const express = require('express'); +const bodyParser = require('body-parser'); +const filenamifyUrl = require('filenamify-url'); + +const app = express(); +app.use( + bodyParser.json({ + limit: '15mb', + type: '*/*' + }) +); + +const prefix = 'data:image/png;base64,'; + +const writeScreenshot = (buffer, body) => { + const filename = `${filenamifyUrl( + body.test.replace(/^\/tests\/reftests\//, '').replace(/\.html$/, ''), + {replacement: '-'} + )}!${body.platform.name}-${body.platform.version}.png`; + + fs.writeFileSync(path.resolve(__dirname, '../tests/results/', filename), buffer); +}; + +app.post('/screenshot', (req, res) => { + if (!req.body || !req.body.screenshot) { + return res.sendStatus(400); + } + + const buffer = new Buffer(req.body.screenshot.substring(prefix.length), 'base64'); + writeScreenshot(buffer, req.body); + return res.sendStatus(200); +}); + +const chunks = {}; + +app.post('/screenshot/chunk', (req, res) => { + if (!req.body || !req.body.screenshot) { + return res.sendStatus(400); + } + + const key = `${req.body.platform.name}-${req.body.platform.version}-${req.body.test + .replace(/^\/tests\/reftests\//, '') + .replace(/\.html$/, '')}`; + if (!Array.isArray(chunks[key])) { + chunks[key] = Array.from(Array(req.body.totalCount)); + } + + chunks[key][req.body.part] = req.body.screenshot; + + if (chunks[key].every(s => typeof s === 'string')) { + const str = chunks[key].reduce((acc, s) => acc + s, ''); + const buffer = new Buffer(str.substring(prefix.length), 'base64'); + delete chunks[key]; + writeScreenshot(buffer, req.body); + } + + return res.sendStatus(200); +}); + +app.use((error, req, res, next) => { + console.error(error); + next(); +}); + +const listener = app.listen(8081, () => { + console.log(listener.address().port); +}); diff --git a/src/Feature.js b/src/Feature.js index 91786f366..2e158da68 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -75,8 +75,15 @@ const testSVG = document => { const testForeignObject = document => { const img = new Image(); const canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; const ctx = canvas.getContext('2d'); - img.src = `data:image/svg+xml,
      `; + ctx.fillStyle = 'red'; + ctx.fillRect(0, 0, 1, 1); + + img.src = `data:image/svg+xml,`; return new Promise(resolve => { const onload = () => { diff --git a/src/index.js b/src/index.js index 1faf848e2..126e9a1b8 100644 --- a/src/index.js +++ b/src/index.js @@ -18,6 +18,7 @@ import Color, {TRANSPARENT} from './Color'; export type Options = { async: ?boolean, allowTaint: ?boolean, + backgroundColor: string, canvas: ?HTMLCanvasElement, imageTimeout: number, proxy: ?string, @@ -71,14 +72,18 @@ const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { const documentBackgroundColor = ownerDocument.documentElement ? new Color(getComputedStyle(ownerDocument.documentElement).backgroundColor) : TRANSPARENT; + const bodyBackgroundColor = ownerDocument.body + ? new Color(getComputedStyle(ownerDocument.body).backgroundColor) + : TRANSPARENT; + const backgroundColor = element === ownerDocument.documentElement ? documentBackgroundColor.isTransparent() - ? ownerDocument.body - ? new Color(getComputedStyle(ownerDocument.body).backgroundColor) - : null + ? bodyBackgroundColor.isTransparent() + ? options.backgroundColor ? new Color(options.backgroundColor) : null + : bodyBackgroundColor : documentBackgroundColor - : null; + : options.backgroundColor ? new Color(options.backgroundColor) : null; // $FlowFixMe const result = Feature.SUPPORT_FOREIGNOBJECT_DRAWING.then( diff --git a/tests/reftests/ignore.txt b/tests/reftests/ignore.txt index f037e3336..e69de29bb 100644 --- a/tests/reftests/ignore.txt +++ b/tests/reftests/ignore.txt @@ -1,5 +0,0 @@ -/tests/reftests/background/radial-gradient.html -/tests/reftests/text/chinese.html -[Edge]/tests/reftests/acid2.html -[Edge]/tests/reftests/pseudoelements.html -[Edge]/tests/reftests/text/multiple.html diff --git a/tests/sauceconnect.js b/tests/sauceconnect.js index 04b54a473..05e99a254 100644 --- a/tests/sauceconnect.js +++ b/tests/sauceconnect.js @@ -4,7 +4,12 @@ sauceConnectLauncher( { username: process.env.SAUCE_USERNAME, accessKey: process.env.SAUCE_ACCESS_KEY, - logger: console.log + logger: console.log, + // Log output from the `sc` process to stdout? + verbose: true, + + // Enable verbose debugging (optional) + verboseDebugging: true }, err => { if (err) { diff --git a/tests/testrunner.js b/tests/testrunner.js index 2fa399853..0d3a13e72 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -2,6 +2,8 @@ import {expect} from 'chai'; import parseRefTest from '../scripts/parse-reftest'; import reftests from './reftests'; import querystring from 'querystring'; +import platform from 'platform'; +import Promise from 'promise-polyfill'; const DOWNLOAD_REFTESTS = false; const query = querystring.parse(location.search.replace(/^\?/, '')); @@ -78,7 +80,7 @@ const assertPath = (result, expected, desc) => { }) .forEach(url => { describe(url, function() { - this.timeout(30000); + this.timeout(60000); const windowWidth = 800; const windowHeight = 600; const testContainer = document.createElement('iframe'); @@ -113,7 +115,8 @@ const assertPath = (result, expected, desc) => { it('Should render untainted canvas', () => { return testContainer.contentWindow .html2canvas(testContainer.contentWindow.document.documentElement, { - removeContainer: true + removeContainer: true, + backgroundColor: '#ffffff' }) .then(canvas => { try { @@ -330,6 +333,80 @@ const assertPath = (result, expected, desc) => { result ); } + + // window.__karma__ + if (false) { + const MAX_CHUNK_SIZE = 75000; + + const sendScreenshot = (tries, body, url) => { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + + xhr.onload = () => { + if ( + typeof xhr.status !== 'number' || + xhr.status === 200 + ) { + resolve(); + } else { + reject( + `Failed to send screenshot with status ${xhr.status}` + ); + } + }; + // xhr.onerror = reject; + + xhr.open('POST', url, true); + xhr.send(body); + }).catch(e => { + if (tries > 0) { + // Older edge browsers and some safari browsers have issues sending large xhr through saucetunnel + const data = canvas.toDataURL(); + const totalCount = Math.ceil( + data.length / MAX_CHUNK_SIZE + ); + return Promise.all( + Array.apply( + null, + Array(totalCount) + ).map((x, part) => + sendScreenshot( + 0, + JSON.stringify({ + screenshot: data.substr( + part * MAX_CHUNK_SIZE, + MAX_CHUNK_SIZE + ), + part, + totalCount, + test: url, + platform: { + name: platform.name, + version: platform.version + } + }), + '/screenshot/chunk' + ) + ) + ); + } + + return Promise.reject(e); + }); + }; + return sendScreenshot( + 1, + JSON.stringify({ + screenshot: canvas.toDataURL(), + test: url, + platform: { + name: platform.name, + version: platform.version + } + }), + '/screenshot' + ); + } }); }); }); From a41ba8852f7cca4e0963981955a732b5924273e1 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 30 Aug 2017 20:59:18 +0800 Subject: [PATCH 088/377] Set default config as empty object (Fix #1195) --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 126e9a1b8..f9b6b8bcd 100644 --- a/src/index.js +++ b/src/index.js @@ -32,7 +32,7 @@ export type Options = { offsetY: number }; -const html2canvas = (element: HTMLElement, config: Options): Promise<*> => { +const html2canvas = (element: HTMLElement, config: Options = {}): Promise<*> => { if (typeof console === 'object' && typeof console.log === 'function') { console.log(`html2canvas ${__VERSION__}`); } From 23b6f29ecffd6bfcc54897bdf28a5de159751ec0 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 30 Aug 2017 21:31:51 +0800 Subject: [PATCH 089/377] Capture screenshots while running karma tests --- karma.conf.js | 3 +-- scripts/screenshot-server.js => karma.js | 23 +++++++++++++++++-- package.json | 3 ++- src/Clone.js | 11 +++++---- src/ImageLoader.js | 29 ++++++++++++++++++++---- src/Util.js | 3 ++- src/index.js | 3 ++- tests/testrunner.js | 19 +++++++++------- 8 files changed, 71 insertions(+), 23 deletions(-) rename scripts/screenshot-server.js => karma.js (72%) diff --git a/karma.conf.js b/karma.conf.js index 811827b08..0a650bcbe 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -163,8 +163,7 @@ module.exports = function(config) { '/dist': `http://localhost:${port}/base/dist`, '/node_modules': `http://localhost:${port}/base/node_modules`, '/tests': `http://localhost:${port}/base/tests`, - '/assets': `http://localhost:${port}/base/tests/assets`, - '/screenshot': `http://localhost:8081/screenshot`, + '/assets': `http://localhost:${port}/base/tests/assets` }, client: { diff --git a/scripts/screenshot-server.js b/karma.js similarity index 72% rename from scripts/screenshot-server.js rename to karma.js index 797c9ad37..4da50d378 100644 --- a/scripts/screenshot-server.js +++ b/karma.js @@ -1,10 +1,27 @@ +const Server = require('karma').Server; +const cfg = require('karma').config; const path = require('path'); +const karmaConfig = cfg.parseConfig(path.resolve('./karma.conf.js')); +const server = new Server(karmaConfig, (exitCode) => { + console.log('Karma has exited with ' + exitCode); + process.exit(exitCode) +}); + const fs = require('fs'); const express = require('express'); const bodyParser = require('body-parser'); +const cors = require('cors'); const filenamifyUrl = require('filenamify-url'); const app = express(); +app.use(cors()); +app.use(function(req, res, next) { + // IE9 doesn't set headers for cross-domain ajax requests + if(typeof(req.headers['content-type']) === 'undefined'){ + req.headers['content-type'] = "application/json"; + } + next(); +}); app.use( bodyParser.json({ limit: '15mb', @@ -20,7 +37,7 @@ const writeScreenshot = (buffer, body) => { {replacement: '-'} )}!${body.platform.name}-${body.platform.version}.png`; - fs.writeFileSync(path.resolve(__dirname, '../tests/results/', filename), buffer); + fs.writeFileSync(path.resolve(__dirname, './tests/results/', filename), buffer); }; app.post('/screenshot', (req, res) => { @@ -65,5 +82,7 @@ app.use((error, req, res, next) => { }); const listener = app.listen(8081, () => { - console.log(listener.address().port); + server.start(); }); + + diff --git a/package.json b/package.json index 65b48662f..41d62e98f 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "body-parser": "1.17.2", "chai": "4.1.1", "chromeless": "^1.2.0", + "cors": "2.8.4", "eslint": "4.2.0", "eslint-plugin-flowtype": "2.35.0", "eslint-plugin-prettier": "2.1.2", @@ -62,7 +63,7 @@ "flow": "flow", "lint": "eslint src/**", "test": "npm run flow && npm run lint && npm run karma", - "karma": "karma start", + "karma": "node karma", "watch": "webpack --progress --colors --watch" }, "homepage": "https://html2canvas.hertzen.com", diff --git a/src/Clone.js b/src/Clone.js index c6feb3127..77a2644c4 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -37,7 +37,7 @@ export class DocumentCloner { if (backgroundImage.method === 'url') { return this.imageLoader .inlineImage(backgroundImage.args[0]) - .then(src => (src ? `url("${src}")` : 'none')); + .then(img => (img ? `url("${img.src}")` : 'none')); } return Promise.resolve( `${backgroundImage.prefix}${backgroundImage.method}(${backgroundImage.args.join( @@ -54,9 +54,12 @@ export class DocumentCloner { }); if (node instanceof HTMLImageElement) { - this.imageLoader.inlineImage(node.src).then(src => { - if (src && node instanceof HTMLImageElement) { - node.src = src; + this.imageLoader.inlineImage(node.src).then(img => { + if (img && node instanceof HTMLImageElement && node.parentNode) { + node.parentNode.replaceChild( + copyCSSStyles(node.style, img.cloneNode(false)), + node + ); } }); } diff --git a/src/ImageLoader.js b/src/ImageLoader.js index d33a29f66..1bc69df2f 100644 --- a/src/ImageLoader.js +++ b/src/ImageLoader.js @@ -50,9 +50,9 @@ export default class ImageLoader { } } - inlineImage(src: string): Promise { + inlineImage(src: string): Promise { if (isInlineImage(src)) { - return Promise.resolve(src); + return loadImage(src, this.options.imageTimeout || 0); } if (this.hasImageInCache(src)) { return this.cache[src]; @@ -61,7 +61,7 @@ export default class ImageLoader { return this.xhrImage(src); } - xhrImage(src: string): Promise { + xhrImage(src: string): Promise { this.cache[src] = new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { @@ -87,7 +87,7 @@ export default class ImageLoader { } xhr.open('GET', src, true); xhr.send(); - }); + }).then(src => loadImage(src, this.options.imageTimeout || 0)); return this.cache[src]; } @@ -196,3 +196,24 @@ const isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src); const isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); + +const loadImage = (src: string, timeout: number) => { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = reject; + img.src = src; + if (img.complete === true) { + // Inline XML images may fail to parse, throwing an Error later on + setTimeout(() => { + resolve(img); + }, 500); + } + if (timeout) { + setTimeout( + () => reject(__DEV__ ? `Timed out (${timeout}ms) loading image` : ''), + timeout + ); + } + }); +}; diff --git a/src/Util.js b/src/Util.js index 217a2a154..fd414de6f 100644 --- a/src/Util.js +++ b/src/Util.js @@ -3,7 +3,7 @@ export const contains = (bit: number, value: number): boolean => (bit & value) !== 0; -export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): void => { +export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): HTMLElement => { // Edge does not provide value for cssText for (let i = style.length - 1; i >= 0; i--) { const property = style.item(i); @@ -12,6 +12,7 @@ export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): target.style.setProperty(property, style.getPropertyValue(property)); } } + return target; }; export const SMALL_IMAGE = diff --git a/src/index.js b/src/index.js index f9b6b8bcd..b2e247622 100644 --- a/src/index.js +++ b/src/index.js @@ -32,11 +32,12 @@ export type Options = { offsetY: number }; -const html2canvas = (element: HTMLElement, config: Options = {}): Promise<*> => { +const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { if (typeof console === 'object' && typeof console.log === 'function') { console.log(`html2canvas ${__VERSION__}`); } + const config = conf || {}; const logger = new Logger(); const ownerDocument = element.ownerDocument; diff --git a/tests/testrunner.js b/tests/testrunner.js index 0d3a13e72..67ff2912e 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -81,6 +81,7 @@ const assertPath = (result, expected, desc) => { .forEach(url => { describe(url, function() { this.timeout(60000); + this.retries(2); const windowWidth = 800; const windowHeight = 600; const testContainer = document.createElement('iframe'); @@ -334,13 +335,15 @@ const assertPath = (result, expected, desc) => { ); } - // window.__karma__ - if (false) { + if (window.__karma__) { const MAX_CHUNK_SIZE = 75000; - const sendScreenshot = (tries, body, url) => { + const sendScreenshot = (tries, body, server) => { return new Promise((resolve, reject) => { - const xhr = new XMLHttpRequest(); + const xhr = + 'withCredentials' in new XMLHttpRequest() + ? new XMLHttpRequest() + : new XDomainRequest(); xhr.onload = () => { if ( @@ -354,9 +357,9 @@ const assertPath = (result, expected, desc) => { ); } }; - // xhr.onerror = reject; + xhr.onerror = reject; - xhr.open('POST', url, true); + xhr.open('POST', server, true); xhr.send(body); }).catch(e => { if (tries > 0) { @@ -385,7 +388,7 @@ const assertPath = (result, expected, desc) => { version: platform.version } }), - '/screenshot/chunk' + 'http://localhost:8081/screenshot/chunk' ) ) ); @@ -404,7 +407,7 @@ const assertPath = (result, expected, desc) => { version: platform.version } }), - '/screenshot' + 'http://localhost:8081/screenshot' ); } }); From badbf52c1cac83b779410d12267103b5ac1c6a1a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 30 Aug 2017 22:20:42 +0800 Subject: [PATCH 090/377] Reduce test output size --- tests/reftests/list/decimal-leading-zero.html | 2 +- tests/reftests/list/decimal.html | 2 +- tests/reftests/list/lower-alpha.html | 2 +- tests/reftests/list/upper-roman.html | 2 +- tests/reftests/text/linethrough.html | 2 +- tests/reftests/text/multiple.html | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/reftests/list/decimal-leading-zero.html b/tests/reftests/list/decimal-leading-zero.html index 8694963ef..746b73399 100644 --- a/tests/reftests/list/decimal-leading-zero.html +++ b/tests/reftests/list/decimal-leading-zero.html @@ -8,7 +8,7 @@ ' + '' ); } @@ -147,7 +154,7 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; $.extend( { logging: true, - proxy: 'http://localhost:8082', + proxy: 'http://localhost:8081/proxy', useCORS: false, removeContainer: false, target: targets diff --git a/tests/testrunner.js b/tests/testrunner.js index 40372890b..bfe6f0e83 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -118,6 +118,7 @@ const assertPath = (result, expected, desc) => { .html2canvas(testContainer.contentWindow.document.documentElement, { removeContainer: true, backgroundColor: '#ffffff', + proxy: 'http://localhost:8081/proxy', ...(testContainer.contentWindow.h2cOptions || {}) }) .then(canvas => { From 90a8422938a42fd262238086643da636a01e8e0e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 11 Sep 2017 22:36:23 +0800 Subject: [PATCH 099/377] Implement Iframe rendering --- src/Clone.js | 102 +++++++++++++++++++++++++---- src/Logger.js | 20 ++++-- src/NodeContainer.js | 7 ++ src/Window.js | 131 +++++++++++++++++++++++++++++++++++++ src/index.js | 123 +--------------------------------- tests/reftests/iframe.html | 3 +- 6 files changed, 247 insertions(+), 139 deletions(-) create mode 100644 src/Window.js diff --git a/src/Clone.js b/src/Clone.js index dec96b190..180980cfd 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -3,27 +3,39 @@ import type {Bounds} from './Bounds'; import type {Options} from './index'; import type Logger from './Logger'; +import type {ImageElement} from './ImageLoader'; import ImageLoader from './ImageLoader'; import {copyCSSStyles} from './Util'; import {parseBackgroundImage} from './parsing/background'; +import CanvasRenderer from './renderer/CanvasRenderer'; export class DocumentCloner { scrolledElements: Array<[HTMLElement, number, number]>; referenceElement: HTMLElement; clonedReferenceElement: HTMLElement; documentElement: HTMLElement; - imageLoader: ImageLoader; + imageLoader: ImageLoader<*>; logger: Logger; + options: Options; inlineImages: boolean; copyStyles: boolean; + renderer: (element: HTMLElement, options: Options, logger: Logger) => Promise<*>; - constructor(element: HTMLElement, options: Options, logger: Logger, copyInline: boolean) { + constructor( + element: HTMLElement, + options: Options, + logger: Logger, + copyInline: boolean, + renderer: (element: HTMLElement, options: Options, logger: Logger) => Promise<*> + ) { this.referenceElement = element; this.scrolledElements = []; this.copyStyles = copyInline; this.inlineImages = copyInline; this.logger = logger; + this.options = options; + this.renderer = renderer; this.imageLoader = new ImageLoader(options, logger, window); // $FlowFixMe this.documentElement = this.cloneNode(element.ownerDocument.documentElement); @@ -90,6 +102,51 @@ export class DocumentCloner { } } + if (node instanceof HTMLIFrameElement) { + const tempIframe = node.cloneNode(false); + const iframeKey = generateIframeKey(); + tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey); + + this.imageLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options) + .then(documentElement => { + return this.renderer( + documentElement, + { + async: this.options.async, + allowTaint: this.options.allowTaint, + backgroundColor: '#ffffff', + canvas: null, + imageTimeout: this.options.imageTimeout, + proxy: this.options.proxy, + removeContainer: this.options.removeContainer, + scale: this.options.scale, + target: new CanvasRenderer(), + type: 'view', + windowWidth: documentElement.ownerDocument.defaultView.innerWidth, + windowHeight: documentElement.ownerDocument.defaultView.innerHeight, + offsetX: documentElement.ownerDocument.defaultView.pageXOffset, + offsetY: documentElement.ownerDocument.defaultView.pageYOffset + }, + this.logger.child(iframeKey) + ); + }) + .then(canvas => { + const iframeCanvas = document.createElement('img'); + iframeCanvas.src = canvas.toDataURL(); + if (tempIframe.parentNode) { + tempIframe.parentNode.replaceChild( + copyCSSStyles( + node.ownerDocument.defaultView.getComputedStyle(node), + iframeCanvas + ), + tempIframe + ); + } + return canvas; + }); + return tempIframe; + } + return node.cloneNode(false); } @@ -99,11 +156,13 @@ export class DocumentCloner { ? document.createTextNode(node.nodeValue) : this.createElementClone(node); - if (this.referenceElement === node && clone instanceof HTMLElement) { + const window = node.ownerDocument.defaultView; + + if (this.referenceElement === node && clone instanceof window.HTMLElement) { this.clonedReferenceElement = clone; } - if (clone instanceof HTMLBodyElement) { + if (clone instanceof window.HTMLBodyElement) { createPseudoHideStyles(clone); } @@ -114,10 +173,10 @@ export class DocumentCloner { } } } - if (node instanceof HTMLElement && clone instanceof HTMLElement) { + if (node instanceof window.HTMLElement && clone instanceof window.HTMLElement) { this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_BEFORE)); this.inlineAllImages(inlinePseudoElement(node, clone, PSEUDO_AFTER)); - if (this.copyStyles) { + if (this.copyStyles && !(node instanceof HTMLIFrameElement)) { copyCSSStyles(node.ownerDocument.defaultView.getComputedStyle(node), clone); } this.inlineAllImages(clone); @@ -127,13 +186,11 @@ export class DocumentCloner { switch (node.nodeName) { case 'CANVAS': if (!this.copyStyles) { - // $FlowFixMe cloneCanvasContents(node, clone); } break; case 'TEXTAREA': case 'SELECT': - // $FlowFixMe clone.value = node.value; break; } @@ -248,14 +305,29 @@ const initNode = ([element, x, y]: [HTMLElement, number, number]) => { element.scrollTop = y; }; +const generateIframeKey = (): string => + Math.ceil(Date.now() + Math.random() * 10000000).toString(16); + +const getIframeDocumentElement = ( + node: HTMLIFrameElement, + options: Options +): Promise => { + try { + return Promise.resolve(node.contentWindow.document.documentElement); + } catch (e) { + return Promise.reject(); + } +}; + export const cloneWindow = ( ownerDocument: Document, bounds: Bounds, referenceElement: HTMLElement, options: Options, - logger: Logger -): Promise<[HTMLIFrameElement, HTMLElement]> => { - const cloner = new DocumentCloner(referenceElement, options, logger, false); + logger: Logger, + renderer: (element: HTMLElement, options: Options, logger: Logger) => Promise<*> +): Promise<[HTMLIFrameElement, HTMLElement, ImageLoader]> => { + const cloner = new DocumentCloner(referenceElement, options, logger, false, renderer); const cloneIframeContainer = ownerDocument.createElement('iframe'); cloneIframeContainer.className = 'html2canvas-container'; @@ -275,7 +347,7 @@ export const cloneWindow = ( ); } return new Promise((resolve, reject) => { - let cloneWindow = cloneIframeContainer.contentWindow; + const cloneWindow = cloneIframeContainer.contentWindow; const documentClone = cloneWindow.document; /* Chrome doesn't detect relative background-images assigned in inline + + + + +
      + great success +
      + + diff --git a/tests/reftests/options/element.html b/tests/reftests/options/element.html new file mode 100644 index 000000000..681e73b66 --- /dev/null +++ b/tests/reftests/options/element.html @@ -0,0 +1,33 @@ + + + + element render test + + + + + + + +
      + great success +
      + + + diff --git a/tests/reftests/options/scroll.html b/tests/reftests/options/scroll.html new file mode 100644 index 000000000..eb4361143 --- /dev/null +++ b/tests/reftests/options/scroll.html @@ -0,0 +1,54 @@ + + + + scroll test + + + + + + + + +
      + great success +
      + +
      + fixed great success +
      + + diff --git a/tests/test.js b/tests/test.js index f2d49efd6..6e8f5b446 100644 --- a/tests/test.js +++ b/tests/test.js @@ -143,7 +143,7 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; }; })(jQuery); - h2cSelector = [document.documentElement]; + h2cSelector = typeof h2cSelector === 'undefined' ? [document.documentElement] : h2cSelector; if (window.setUp) { window.setUp(); diff --git a/tests/testrunner.js b/tests/testrunner.js index bfe6f0e83..30117c342 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -115,7 +115,7 @@ const assertPath = (result, expected, desc) => { }); it('Should render untainted canvas', () => { return testContainer.contentWindow - .html2canvas(testContainer.contentWindow.document.documentElement, { + .html2canvas(testContainer.contentWindow.forceElement || testContainer.contentWindow.document.documentElement, { removeContainer: true, backgroundColor: '#ffffff', proxy: 'http://localhost:8081/proxy', From f16d581f04301720a77f758702c820018f2be13d Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 28 Sep 2017 19:46:00 +0800 Subject: [PATCH 104/377] Add foreignObjectRendering option --- src/Clone.js | 1 + src/Window.js | 6 ++++-- src/index.js | 2 ++ tests/testrunner.js | 16 ++++++++++------ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Clone.js b/src/Clone.js index 3abd658a1..6d7d3b0b3 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -124,6 +124,7 @@ export class DocumentCloner { proxy: this.options.proxy, removeContainer: this.options.removeContainer, scale: this.options.scale, + foreignObjectRendering: this.options.foreignObjectRendering, target: new CanvasRenderer(), width, height, diff --git a/src/Window.js b/src/Window.js index 46d52f798..e83e5598a 100644 --- a/src/Window.js +++ b/src/Window.js @@ -46,8 +46,10 @@ export const renderElement = ( : documentBackgroundColor : options.backgroundColor ? new Color(options.backgroundColor) : null; - // $FlowFixMe - return Feature.SUPPORT_FOREIGNOBJECT_DRAWING.then( + return (options.foreignObjectRendering + ? // $FlowFixMe + Feature.SUPPORT_FOREIGNOBJECT_DRAWING + : Promise.resolve(false)).then( supportForeignObject => supportForeignObject ? (cloner => { diff --git a/src/index.js b/src/index.js index 52a785c58..582b3f7fe 100644 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,7 @@ export type Options = { allowTaint: ?boolean, backgroundColor: string, canvas: ?HTMLCanvasElement, + foreignObjectRendering: boolean, imageTimeout: number, proxy: ?string, removeContainer: ?boolean, @@ -56,6 +57,7 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { imageTimeout: 15000, proxy: null, removeContainer: true, + foreignObjectRendering: true, scale: defaultView.devicePixelRatio || 1, target: new CanvasRenderer(config.canvas), x: left, diff --git a/tests/testrunner.js b/tests/testrunner.js index 30117c342..48bcb44ab 100644 --- a/tests/testrunner.js +++ b/tests/testrunner.js @@ -115,12 +115,16 @@ const assertPath = (result, expected, desc) => { }); it('Should render untainted canvas', () => { return testContainer.contentWindow - .html2canvas(testContainer.contentWindow.forceElement || testContainer.contentWindow.document.documentElement, { - removeContainer: true, - backgroundColor: '#ffffff', - proxy: 'http://localhost:8081/proxy', - ...(testContainer.contentWindow.h2cOptions || {}) - }) + .html2canvas( + testContainer.contentWindow.forceElement || + testContainer.contentWindow.document.documentElement, + { + removeContainer: true, + backgroundColor: '#ffffff', + proxy: 'http://localhost:8081/proxy', + ...(testContainer.contentWindow.h2cOptions || {}) + } + ) .then(canvas => { try { canvas From 9445b0b598f939d46a61c804cd7a35f29ad28f6b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 18 Oct 2017 20:34:17 +0800 Subject: [PATCH 105/377] Inline fonts for ForeignObjectRenderer --- package.json | 4 +- src/Clone.js | 135 ++++++++++++++++++++-- src/Feature.js | 5 +- src/NodeContainer.js | 21 ++-- src/NodeParser.js | 18 +-- src/Renderer.js | 4 +- src/{ImageLoader.js => ResourceLoader.js} | 71 ++++++------ src/Window.js | 39 ++++--- src/parsing/background.js | 10 +- src/renderer/CanvasRenderer.js | 2 +- src/renderer/ForeignObjectRenderer.js | 27 +++-- src/renderer/RefTestRenderer.js | 2 +- 12 files changed, 234 insertions(+), 104 deletions(-) rename src/{ImageLoader.js => ResourceLoader.js} (80%) diff --git a/package.json b/package.json index 96383f121..494b82310 100644 --- a/package.json +++ b/package.json @@ -30,14 +30,14 @@ "base64-arraybuffer": "0.1.5", "body-parser": "1.17.2", "chai": "4.1.1", - "chromeless": "^1.2.0", + "chromeless": "1.2.0", "cors": "2.8.4", "eslint": "4.2.0", "eslint-plugin-flowtype": "2.35.0", "eslint-plugin-prettier": "2.1.2", "express": "4.15.4", "filenamify-url": "1.0.0", - "flow-bin": "0.50.0", + "flow-bin": "0.56.0", "glob": "7.1.2", "html2canvas-proxy": "1.0.0", "jquery": "3.2.1", diff --git a/src/Clone.js b/src/Clone.js index 6d7d3b0b3..cdc1ff892 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -3,11 +3,10 @@ import type {Bounds} from './Bounds'; import type {Options} from './index'; import type Logger from './Logger'; -import type {ImageElement} from './ImageLoader'; import {parseBounds} from './Bounds'; import {Proxy} from './Proxy'; -import ImageLoader from './ImageLoader'; +import ResourceLoader from './ResourceLoader'; import {copyCSSStyles} from './Util'; import {parseBackgroundImage} from './parsing/background'; import CanvasRenderer from './renderer/CanvasRenderer'; @@ -17,7 +16,7 @@ export class DocumentCloner { referenceElement: HTMLElement; clonedReferenceElement: HTMLElement; documentElement: HTMLElement; - imageLoader: ImageLoader<*>; + resourceLoader: ResourceLoader; logger: Logger; options: Options; inlineImages: boolean; @@ -38,7 +37,7 @@ export class DocumentCloner { this.logger = logger; this.options = options; this.renderer = renderer; - this.imageLoader = new ImageLoader(options, logger, window); + this.resourceLoader = new ResourceLoader(options, logger, window); // $FlowFixMe this.documentElement = this.cloneNode(element.ownerDocument.documentElement); } @@ -49,9 +48,14 @@ export class DocumentCloner { Promise.all( parseBackgroundImage(style.backgroundImage).map(backgroundImage => { if (backgroundImage.method === 'url') { - return this.imageLoader + return this.resourceLoader .inlineImage(backgroundImage.args[0]) - .then(img => (img ? `url("${img.src}")` : 'none')) + .then( + img => + img && typeof img.src === 'string' + ? `url("${img.src}")` + : 'none' + ) .catch(e => { if (__DEV__) { this.logger.log(`Unable to load image`, e); @@ -73,7 +77,7 @@ export class DocumentCloner { }); if (node instanceof HTMLImageElement) { - this.imageLoader + this.resourceLoader .inlineImage(node.src) .then(img => { if (img && node instanceof HTMLImageElement && node.parentNode) { @@ -91,6 +95,56 @@ export class DocumentCloner { } } + inlineFonts(document: Document): Promise { + return Promise.all( + Array.from(document.styleSheets).map(sheet => { + if (sheet.href) { + return fetch(sheet.href) + .then(res => res.text()) + .then(text => createStyleSheetFontsFromText(text, sheet.href)) + .catch(e => { + if (__DEV__) { + this.logger.log(`Unable to load stylesheet`, e); + } + return []; + }); + } + return getSheetFonts(sheet, document); + }) + ) + .then(fonts => fonts.reduce((acc, font) => acc.concat(font), [])) + .then(fonts => + Promise.all( + fonts.map(font => + fetch(font.formats[0].src) + .then(response => response.blob()) + .then( + blob => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onerror = reject; + reader.onload = () => { + // $FlowFixMe + const result: string = reader.result; + resolve(result); + }; + reader.readAsDataURL(blob); + }) + ) + .then(dataUri => { + font.fontFace.setProperty('src', `url("${dataUri}")`); + return `@font-face {${font.fontFace.cssText} `; + }) + ) + ) + ) + .then(fontCss => { + const style = document.createElement('style'); + style.textContent = fontCss.join('\n'); + this.documentElement.appendChild(style); + }); + } + createElementClone(node: Node) { if (this.copyStyles && node instanceof HTMLCanvasElement) { const img = node.ownerDocument.createElement('img'); @@ -111,7 +165,7 @@ export class DocumentCloner { const {width, height} = parseBounds(node, 0, 0); - this.imageLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options) + this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(node, this.options) .then(documentElement => { return this.renderer( documentElement, @@ -211,6 +265,67 @@ export class DocumentCloner { } } +type Font = { + src: string, + format: string +}; + +type FontFamily = { + formats: Array, + fontFace: CSSStyleDeclaration +}; + +const getSheetFonts = (sheet: StyleSheet, document: Document): Array => { + // $FlowFixMe + return (sheet.cssRules ? Array.from(sheet.cssRules) : []) + .filter(rule => rule.type === CSSRule.FONT_FACE_RULE) + .map(rule => { + const src = parseBackgroundImage(rule.style.getPropertyValue('src')); + const formats = []; + for (let i = 0; i < src.length; i++) { + if (src[i].method === 'url' && src[i + 1] && src[i + 1].method === 'format') { + const a = document.createElement('a'); + a.href = src[i].args[0]; + if (document.body) { + document.body.appendChild(a); + } + + const font = { + src: a.href, + format: src[i + 1].args[0] + }; + formats.push(font); + } + } + + return { + // TODO select correct format for browser), + + formats: formats.filter(font => /^woff/i.test(font.format)), + fontFace: rule.style + }; + }) + .filter(font => font.formats.length); +}; + +const createStyleSheetFontsFromText = (text: string, baseHref: string): Array => { + const doc = document.implementation.createHTMLDocument(''); + const base = document.createElement('base'); + // $FlowFixMe + base.href = baseHref; + const style = document.createElement('style'); + + style.textContent = text; + if (doc.head) { + doc.head.appendChild(base); + } + if (doc.body) { + doc.body.appendChild(style); + } + + return style.sheet ? getSheetFonts(style.sheet, doc) : []; +}; + const restoreOwnerScroll = (ownerDocument: Document, x: number, y: number) => { if ( ownerDocument.defaultView && @@ -415,7 +530,7 @@ export const cloneWindow = ( options: Options, logger: Logger, renderer: (element: HTMLElement, options: Options, logger: Logger) => Promise<*> -): Promise<[HTMLIFrameElement, HTMLElement, ImageLoader]> => { +): Promise<[HTMLIFrameElement, HTMLElement, ResourceLoader]> => { const cloner = new DocumentCloner(referenceElement, options, logger, false, renderer); const scrollX = ownerDocument.defaultView.pageXOffset; const scrollY = ownerDocument.defaultView.pageYOffset; @@ -445,7 +560,7 @@ export const cloneWindow = ( ? Promise.resolve([ cloneIframeContainer, cloner.clonedReferenceElement, - cloner.imageLoader + cloner.resourceLoader ]) : Promise.reject( __DEV__ diff --git a/src/Feature.js b/src/Feature.js index 4018b2125..185bd7559 100644 --- a/src/Feature.js +++ b/src/Feature.js @@ -146,7 +146,10 @@ const FEATURES = { // $FlowFixMe - get/set properties not yet supported get SUPPORT_FOREIGNOBJECT_DRAWING() { 'use strict'; - const value = testForeignObject(document); + const value = + typeof Array.from === 'function' && typeof window.fetch === 'function' + ? testForeignObject(document) + : Promise.resolve(false); Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value}); return value; }, diff --git a/src/NodeContainer.js b/src/NodeContainer.js index 3218eadc1..45218aa35 100644 --- a/src/NodeContainer.js +++ b/src/NodeContainer.js @@ -18,7 +18,7 @@ import type {Visibility} from './parsing/visibility'; import type {zIndex} from './parsing/zIndex'; import type {Bounds, BoundCurves} from './Bounds'; -import type ImageLoader, {ImageElement} from './ImageLoader'; +import type ResourceLoader, {ImageElement} from './ResourceLoader'; import type {Path} from './drawing/Path'; import type TextContainer from './TextContainer'; @@ -87,7 +87,7 @@ export default class NodeContainer { constructor( node: HTMLElement | SVGSVGElement, parent: ?NodeContainer, - imageLoader: ImageLoader, + resourceLoader: ResourceLoader, index: number ) { this.parent = parent; @@ -104,7 +104,7 @@ export default class NodeContainer { const position = parsePosition(style.position); this.style = { - background: IS_INPUT ? INPUT_BACKGROUND : parseBackground(style, imageLoader), + background: IS_INPUT ? INPUT_BACKGROUND : parseBackground(style, resourceLoader), border: IS_INPUT ? INPUT_BORDERS : parseBorder(style), borderRadius: (node instanceof defaultView.HTMLInputElement || @@ -148,7 +148,7 @@ export default class NodeContainer { ); }); } - this.image = getImage(node, imageLoader); + this.image = getImage(node, resourceLoader); this.bounds = IS_INPUT ? reformatInputBounds(parseBounds(node, scrollX, scrollY)) : parseBounds(node, scrollX, scrollY); @@ -223,26 +223,25 @@ export default class NodeContainer { } } -const getImage = ( - node: HTMLElement | SVGSVGElement, - imageLoader: ImageLoader -): ?string => { +const getImage = (node: HTMLElement | SVGSVGElement, resourceLoader: ResourceLoader): ?string => { if ( node instanceof node.ownerDocument.defaultView.SVGSVGElement || node instanceof SVGSVGElement ) { const s = new XMLSerializer(); - return imageLoader.loadImage( + return resourceLoader.loadImage( `data:image/svg+xml,${encodeURIComponent(s.serializeToString(node))}` ); } switch (node.tagName) { case 'IMG': // $FlowFixMe - return imageLoader.loadImage(node.currentSrc || node.src); + const img: HTMLImageElement = node; + return resourceLoader.loadImage(img.currentSrc || img.src); case 'CANVAS': // $FlowFixMe - return imageLoader.loadCanvas(node); + const canvas: HTMLCanvasElement = node; + return resourceLoader.loadCanvas(canvas); case 'IFRAME': const iframeKey = node.getAttribute('data-html2canvas-internal-iframe-key'); if (iframeKey) { diff --git a/src/NodeParser.js b/src/NodeParser.js index 70fddb595..3fb854d1e 100644 --- a/src/NodeParser.js +++ b/src/NodeParser.js @@ -1,6 +1,6 @@ /* @flow */ 'use strict'; -import type ImageLoader, {ImageElement} from './ImageLoader'; +import type ResourceLoader, {ImageElement} from './ResourceLoader'; import type Logger from './Logger'; import StackingContext from './StackingContext'; import NodeContainer from './NodeContainer'; @@ -9,7 +9,7 @@ import {inlineInputElement, inlineTextAreaElement, inlineSelectElement} from './ export const NodeParser = ( node: HTMLElement, - imageLoader: ImageLoader, + resourceLoader: ResourceLoader, logger: Logger ): StackingContext => { if (__DEV__) { @@ -18,10 +18,10 @@ export const NodeParser = ( let index = 0; - const container = new NodeContainer(node, null, imageLoader, index++); + const container = new NodeContainer(node, null, resourceLoader, index++); const stack = new StackingContext(container, null, true); - parseNodeTree(node, container, stack, imageLoader, index); + parseNodeTree(node, container, stack, resourceLoader, index); if (__DEV__) { logger.log(`Finished parsing node tree`); @@ -36,7 +36,7 @@ const parseNodeTree = ( node: HTMLElement, parent: NodeContainer, stack: StackingContext, - imageLoader: ImageLoader, + resourceLoader: ResourceLoader, index: number ): void => { if (__DEV__ && index > 50000) { @@ -60,7 +60,7 @@ const parseNodeTree = ( (defaultView.parent && childNode instanceof defaultView.parent.HTMLElement) ) { if (IGNORED_NODE_NAMES.indexOf(childNode.nodeName) === -1) { - const container = new NodeContainer(childNode, parent, imageLoader, index++); + const container = new NodeContainer(childNode, parent, resourceLoader, index++); if (container.isVisible()) { if (childNode.tagName === 'INPUT') { // $FlowFixMe @@ -92,12 +92,12 @@ const parseNodeTree = ( ); parentStack.contexts.push(childStack); if (SHOULD_TRAVERSE_CHILDREN) { - parseNodeTree(childNode, container, childStack, imageLoader, index); + parseNodeTree(childNode, container, childStack, resourceLoader, index); } } else { stack.children.push(container); if (SHOULD_TRAVERSE_CHILDREN) { - parseNodeTree(childNode, container, stack, imageLoader, index); + parseNodeTree(childNode, container, stack, resourceLoader, index); } } } @@ -107,7 +107,7 @@ const parseNodeTree = ( childNode instanceof SVGSVGElement || (defaultView.parent && childNode instanceof defaultView.parent.SVGSVGElement) ) { - const container = new NodeContainer(childNode, parent, imageLoader, index++); + const container = new NodeContainer(childNode, parent, resourceLoader, index++); const treatAsRealStackingContext = createsRealStackingContext(container, childNode); if (treatAsRealStackingContext || createsStackingContext(container)) { // for treatAsRealStackingContext:false, any positioned descendants and descendants diff --git a/src/Renderer.js b/src/Renderer.js index 240715111..923e095fd 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -15,7 +15,7 @@ import type {Matrix} from './parsing/transform'; import type {BoundCurves} from './Bounds'; import type {Gradient} from './Gradient'; -import type {ImageStore, ImageElement} from './ImageLoader'; +import type {ResourceStore, ImageElement} from './ResourceLoader'; import type NodeContainer from './NodeContainer'; import type StackingContext from './StackingContext'; import type {TextBounds} from './TextBounds'; @@ -43,7 +43,7 @@ import {BORDER_STYLE} from './parsing/border'; export type RenderOptions = { scale: number, backgroundColor: ?Color, - imageStore: ImageStore, + imageStore: ResourceStore, fontMetrics: FontMetrics, logger: Logger, x: number, diff --git a/src/ImageLoader.js b/src/ResourceLoader.js similarity index 80% rename from src/ImageLoader.js rename to src/ResourceLoader.js index a53fa12fe..2fcb0835e 100644 --- a/src/ImageLoader.js +++ b/src/ResourceLoader.js @@ -5,17 +5,17 @@ import type Options from './index'; import type Logger from './Logger'; export type ImageElement = Image | HTMLCanvasElement; -type ImageCache = {[string]: Promise}; +export type Resource = ImageElement; +type ResourceCache = {[string]: Promise}; import FEATURES from './Feature'; import {Proxy} from './Proxy'; -// $FlowFixMe -export default class ImageLoader { +export default class ResourceLoader { origin: string; options: Options; _link: HTMLAnchorElement; - cache: ImageCache; + cache: ResourceCache; logger: Logger; _index: number; _window: WindowProxy; @@ -30,7 +30,7 @@ export default class ImageLoader { } loadImage(src: string): ?string { - if (this.hasImageInCache(src)) { + if (this.hasResourceInCache(src)) { return src; } @@ -58,11 +58,11 @@ export default class ImageLoader { } } - inlineImage(src: string): Promise { + inlineImage(src: string): Promise { if (isInlineImage(src)) { return loadImage(src, this.options.imageTimeout || 0); } - if (this.hasImageInCache(src)) { + if (this.hasResourceInCache(src)) { return this.cache[src]; } if (!this.isSameOrigin(src) && typeof this.options.proxy === 'string') { @@ -74,7 +74,7 @@ export default class ImageLoader { return this.xhrImage(src); } - xhrImage(src: string): Promise { + xhrImage(src: string): Promise { this.cache[src] = new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = () => { @@ -88,10 +88,16 @@ export default class ImageLoader { ); } else { const reader = new FileReader(); - // $FlowFixMe - reader.addEventListener('load', () => resolve(reader.result), false); - // $FlowFixMe - reader.addEventListener('error', e => reject(e), false); + reader.addEventListener( + 'load', + () => { + // $FlowFixMe + const result: string = reader.result; + resolve(result); + }, + false + ); + reader.addEventListener('error', (e: Event) => reject(e), false); reader.readAsDataURL(xhr.response); } } @@ -118,7 +124,7 @@ export default class ImageLoader { return key; } - hasImageInCache(key: string): boolean { + hasResourceInCache(key: string): boolean { return typeof this.cache[key] !== 'undefined'; } @@ -177,38 +183,37 @@ export default class ImageLoader { return link.protocol + link.hostname + link.port; } - ready(): Promise> { - const keys = Object.keys(this.cache); - return Promise.all( - keys.map(str => - this.cache[str].catch(e => { - if (__DEV__) { - this.logger.log(`Unable to load image`, e); - } - return null; - }) - ) - ).then(images => { + ready(): Promise { + const keys: Array = Object.keys(this.cache); + const values: Array> = keys.map(str => + this.cache[str].catch(e => { + if (__DEV__) { + this.logger.log(`Unable to load image`, e); + } + return null; + }) + ); + return Promise.all(values).then((images: Array) => { if (__DEV__) { this.logger.log(`Finished loading ${images.length} images`, images); } - return new ImageStore(keys, images); + return new ResourceStore(keys, images); }); } } -export class ImageStore { +export class ResourceStore { _keys: Array; - _images: Array; + _resources: Array; - constructor(keys: Array, images: Array) { + constructor(keys: Array, resources: Array) { this._keys = keys; - this._images = images; + this._resources = resources; } - get(key: string): ?T { + get(key: string): ?Resource { const index = this._keys.indexOf(key); - return index === -1 ? null : this._images[index]; + return index === -1 ? null : this._resources[index]; } } @@ -222,7 +227,7 @@ const isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src); const isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); -const loadImage = (src: string, timeout: number) => { +const loadImage = (src: string, timeout: number): Promise => { return new Promise((resolve, reject) => { const img = new Image(); img.onload = () => resolve(img); diff --git a/src/Window.js b/src/Window.js index e83e5598a..420939a17 100644 --- a/src/Window.js +++ b/src/Window.js @@ -57,22 +57,25 @@ export const renderElement = ( logger.log(`Document cloned, using foreignObject rendering`); } - return cloner.imageLoader.ready().then(() => { - const renderer = new ForeignObjectRenderer(cloner.clonedReferenceElement); - return renderer.render({ - backgroundColor, - logger, - scale: options.scale, - x: options.x, - y: options.y, - width: options.width, - height: options.height, - windowWidth: options.windowWidth, - windowHeight: options.windowHeight, - scrollX: options.scrollX, - scrollY: options.scrollY + return cloner + .inlineFonts(ownerDocument) + .then(() => cloner.resourceLoader.ready()) + .then(() => { + const renderer = new ForeignObjectRenderer(cloner.documentElement); + return renderer.render({ + backgroundColor, + logger, + scale: options.scale, + x: options.x, + y: options.y, + width: options.width, + height: options.height, + windowWidth: options.windowWidth, + windowHeight: options.windowHeight, + scrollX: options.scrollX, + scrollY: options.scrollY + }); }); - }); })(new DocumentCloner(element, options, logger, true, renderElement)) : cloneWindow( ownerDocument, @@ -81,19 +84,19 @@ export const renderElement = ( options, logger, renderElement - ).then(([container, clonedElement, imageLoader]) => { + ).then(([container, clonedElement, resourceLoader]) => { if (__DEV__) { logger.log(`Document cloned, using computed rendering`); } - const stack = NodeParser(clonedElement, imageLoader, logger); + const stack = NodeParser(clonedElement, resourceLoader, logger); const clonedDocument = clonedElement.ownerDocument; if (backgroundColor === stack.container.style.background.backgroundColor) { stack.container.style.background.backgroundColor = TRANSPARENT; } - return imageLoader.ready().then(imageStore => { + return resourceLoader.ready().then(imageStore => { if (options.removeContainer === true) { if (container.parentNode) { container.parentNode.removeChild(container); diff --git a/src/parsing/background.js b/src/parsing/background.js index 09d0a411a..5c2ac0542 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -2,7 +2,7 @@ 'use strict'; import type {Path} from '../drawing/Path'; import type {Bounds, BoundCurves} from '../Bounds'; -import type ImageLoader, {ImageElement} from '../ImageLoader'; +import type ResourceLoader, {ImageElement} from '../ResourceLoader'; import Color from '../Color'; import Length from '../Length'; @@ -223,11 +223,11 @@ export const calculateBackgroundRepeatPath = ( export const parseBackground = ( style: CSSStyleDeclaration, - imageLoader: ImageLoader + resourceLoader: ResourceLoader ): Background => { return { backgroundColor: new Color(style.backgroundColor), - backgroundImage: parseBackgroundImages(style, imageLoader), + backgroundImage: parseBackgroundImages(style, resourceLoader), backgroundClip: parseBackgroundClip(style.backgroundClip), backgroundOrigin: parseBackgroundOrigin(style.backgroundOrigin) }; @@ -276,13 +276,13 @@ const parseBackgroundRepeat = (backgroundRepeat: string): BackgroundRepeat => { const parseBackgroundImages = ( style: CSSStyleDeclaration, - imageLoader: ImageLoader + resourceLoader: ResourceLoader ): Array => { const sources: Array = parseBackgroundImage( style.backgroundImage ).map(backgroundImage => { if (backgroundImage.method === 'url') { - const key = imageLoader.loadImage(backgroundImage.args[0]); + const key = resourceLoader.loadImage(backgroundImage.args[0]); backgroundImage.args = key ? [key] : []; } return backgroundImage; diff --git a/src/renderer/CanvasRenderer.js b/src/renderer/CanvasRenderer.js index cd860ae7a..ee5c3f48d 100644 --- a/src/renderer/CanvasRenderer.js +++ b/src/renderer/CanvasRenderer.js @@ -12,7 +12,7 @@ import type {TextShadow} from '../parsing/textShadow'; import type {Matrix} from '../parsing/transform'; import type {Bounds} from '../Bounds'; -import type {ImageElement} from '../ImageLoader'; +import type {ImageElement} from '../ResourceLoader'; import type {Gradient} from '../Gradient'; import type {TextBounds} from '../TextBounds'; diff --git a/src/renderer/ForeignObjectRenderer.js b/src/renderer/ForeignObjectRenderer.js index 4c00eece3..f58dd36f7 100644 --- a/src/renderer/ForeignObjectRenderer.js +++ b/src/renderer/ForeignObjectRenderer.js @@ -12,29 +12,34 @@ export default class ForeignObjectRenderer { this.options = options; this.canvas = document.createElement('canvas'); this.ctx = this.canvas.getContext('2d'); - this.canvas.width = Math.floor(options.width * options.scale); - this.canvas.height = Math.floor(options.height * options.scale); + this.canvas.width = Math.floor(options.width) * options.scale; + this.canvas.height = Math.floor(options.height) * options.scale; this.canvas.style.width = `${options.width}px`; this.canvas.style.height = `${options.height}px`; - this.ctx.scale(this.options.scale, this.options.scale); options.logger.log( - `ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${this - .options.scale}` + `ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}` ); const svg = createForeignObjectSVG( - Math.max(options.windowWidth, options.width), - Math.max(options.windowHeight, options.height), - options.scrollX, - options.scrollY, + Math.max(options.windowWidth, options.width) * options.scale, + Math.max(options.windowHeight, options.height) * options.scale, + options.scrollX * options.scale, + options.scrollY * options.scale, this.element ); + return loadSerializedSVG(svg).then(img => { if (options.backgroundColor) { this.ctx.fillStyle = options.backgroundColor.toString(); - this.ctx.fillRect(0, 0, options.width, options.height); + this.ctx.fillRect( + 0, + 0, + options.width * options.scale, + options.height * options.scale + ); } - this.ctx.drawImage(img, -options.x, -options.y); + + this.ctx.drawImage(img, -options.x * options.scale, -options.y * options.scale); return this.canvas; }); } diff --git a/src/renderer/RefTestRenderer.js b/src/renderer/RefTestRenderer.js index 48cd3c29f..fa7718963 100644 --- a/src/renderer/RefTestRenderer.js +++ b/src/renderer/RefTestRenderer.js @@ -17,7 +17,7 @@ import type {TextShadow} from '../parsing/textShadow'; import type {Matrix} from '../parsing/transform'; import type {Bounds} from '../Bounds'; -import type {ImageElement} from '../ImageLoader'; +import type {ImageElement} from '../ResourceLoader'; import type {Gradient} from '../Gradient'; import type {TextBounds} from '../TextBounds'; From 7e0b2b520151ea5767e4a4dc6e24f84e28ad6ed5 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 3 Dec 2017 17:07:10 +0800 Subject: [PATCH 106/377] Add npm and minified builds --- .npmignore | 10 ++++-- package.json | 14 +++++--- src/index.js | 3 ++ tests/node/color.js | 82 +++++++++++++++++++++---------------------- tests/node/package.js | 25 +++++-------- webpack.config.js | 12 ++++++- 6 files changed, 80 insertions(+), 66 deletions(-) diff --git a/.npmignore b/.npmignore index cca70c469..9d35537d7 100644 --- a/.npmignore +++ b/.npmignore @@ -1,10 +1,14 @@ -tests/ +build/ examples/ -Gruntfile.js -bower.json +scripts/ src/ +tests/ *.iml +.babelrc .idea/ .npmignore .jshintrc .travis.yml +karma.js +karma.config.js +webpack.config.js diff --git a/package.json b/package.json index 494b82310..76c8fe926 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "title": "html2canvas", "name": "html2canvas", "description": "Screenshots with JavaScript", - "main": "dist/html2canvas.js", + "main": "dist/npm/index.js", "version": "1.0.0-alpha.1", "author": { "name": "Niklas von Hertzen", @@ -24,6 +24,8 @@ "babel-core": "6.25.0", "babel-eslint": "7.2.3", "babel-loader": "7.1.1", + "babel-plugin-dev-expression": "0.2.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-object-rest-spread": "6.23.0", "babel-preset-es2015": "6.24.1", "babel-preset-flow": "6.23.0", @@ -52,22 +54,26 @@ "platform": "1.3.4", "prettier": "1.5.3", "promise-polyfill": "6.0.2", + "replace-in-file": "^3.0.0", "rimraf": "2.6.1", "serve-index": "1.9.0", "slash": "1.0.0", + "uglifyjs-webpack-plugin": "^1.1.2", "webpack": "3.4.1" }, "scripts": { "build": "rimraf dist/ && node scripts/create-reftest-list && npm run build:npm && npm run build:browser", - "build:npm": "babel src/ -d dist/npm/", + "build:npm": "babel src/ -d dist/npm/ --plugins=dev-expression,transform-es2015-modules-commonjs && replace-in-file __VERSION__ '$npm_package_version' dist/npm/index.js", "build:browser": "webpack", "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", "flow": "flow", "lint": "eslint src/**", - "test": "npm run flow && npm run lint && npm run karma", + "test": "npm run flow && npm run lint && npm run test:node && npm run karma", + "test:node": "mocha tests/node/*.js", "karma": "node karma", "watch": "webpack --progress --colors --watch", - "start": "node tests/server" + "start": "node tests/server", + "ss": "node $npm_package_version" }, "homepage": "https://html2canvas.hertzen.com", "license": "MIT", diff --git a/src/index.js b/src/index.js index 582b3f7fe..707e1920d 100644 --- a/src/index.js +++ b/src/index.js @@ -40,6 +40,9 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { const logger = new Logger(); const ownerDocument = element.ownerDocument; + if (!ownerDocument) { + return Promise.reject(`Provided element is not within a Document`) + } const defaultView = ownerDocument.defaultView; const scrollX = defaultView.pageXOffset; diff --git a/tests/node/color.js b/tests/node/color.js index 609b55c22..fef20e59e 100644 --- a/tests/node/color.js +++ b/tests/node/color.js @@ -1,110 +1,110 @@ -var Color = require('../../src/color'); -var assert = require('assert'); +const Color = require('../../dist/npm/Color').default; +const assert = require('assert'); -describe('Colors', function() { - describe('named colors', function() { - it('bisque', function() { - var c = new Color('bisque'); +describe('Colors', () => { + describe('named colors', () => { + it('bisque', () => { + const c = new Color('bisque'); assertColor(c, 255, 228, 196, null); assert.equal(c.isTransparent(), false); }); - it('BLUE', function() { - var c = new Color('BLUE'); + it('BLUE', () => { + const c = new Color('BLUE'); assertColor(c, 0, 0, 255, null); assert.equal(c.isTransparent(), false); }); }); - describe('rgb()', function() { - it('rgb(1,3,5)', function() { - var c = new Color('rgb(1,3,5)'); + describe('rgb()', () => { + it('rgb(1,3,5)', () => { + const c = new Color('rgb(1,3,5)'); assertColor(c, 1, 3, 5, null); assert.equal(c.isTransparent(), false); }); - it('rgb(222, 111, 50)', function() { - var c = new Color('rgb(222, 111, 50)'); + it('rgb(222, 111, 50)', () => { + const c = new Color('rgb(222, 111, 50)'); assertColor(c, 222, 111, 50, null); assert.equal(c.isTransparent(), false); }); - it('rgb( 222, 111 , 50)', function() { - var c = new Color('rgb(222 , 111 , 50)'); + it('rgb( 222, 111 , 50)', () => { + const c = new Color('rgb(222 , 111 , 50)'); assertColor(c, 222, 111, 50, null); assert.equal(c.isTransparent(), false); }); }); - describe('rgba()', function() { - it('rgba(200,3,5,1)', function() { - var c = new Color('rgba(200,3,5,1)'); + describe('rgba()', () => { + it('rgba(200,3,5,1)', () => { + const c = new Color('rgba(200,3,5,1)'); assertColor(c, 200, 3, 5, 1); assert.equal(c.isTransparent(), false); }); - it('rgba(222, 111, 50, 0.22)', function() { - var c = new Color('rgba(222, 111, 50, 0.22)'); + it('rgba(222, 111, 50, 0.22)', () => { + const c = new Color('rgba(222, 111, 50, 0.22)'); assertColor(c, 222, 111, 50, 0.22); assert.equal(c.isTransparent(), false); }); - it('rgba( 222, 111 , 50, 0.123 )', function() { - var c = new Color('rgba(222 , 111 , 50, 0.123)'); + it('rgba( 222, 111 , 50, 0.123 )', () => { + const c = new Color('rgba(222 , 111 , 50, 0.123)'); assertColor(c, 222, 111, 50, 0.123); assert.equal(c.isTransparent(), false); }); }); - describe('hex', function() { - it('#7FFFD4', function() { - var c = new Color('#7FFFD4'); + describe('hex', () => { + it('#7FFFD4', () => { + const c = new Color('#7FFFD4'); assertColor(c, 127, 255, 212, null); assert.equal(c.isTransparent(), false); }); - it('#f0ffff', function() { - var c = new Color('#f0ffff'); + it('#f0ffff', () => { + const c = new Color('#f0ffff'); assertColor(c, 240, 255, 255, null); assert.equal(c.isTransparent(), false); }); - it('#fff', function() { - var c = new Color('#fff'); + it('#fff', () => { + const c = new Color('#fff'); assertColor(c, 255, 255, 255, null); assert.equal(c.isTransparent(), false); }); }); - describe('from array', function() { - it('[1,2,3]', function() { - var c = new Color([1, 2, 3]); + describe('from array', () => { + it('[1,2,3]', () => { + const c = new Color([1, 2, 3]); assertColor(c, 1, 2, 3, null); assert.equal(c.isTransparent(), false); }); - it('[5,6,7,1]', function() { - var c = new Color([5, 6, 7, 1]); + it('[5,6,7,1]', () => { + const c = new Color([5, 6, 7, 1]); assertColor(c, 5, 6, 7, 1); assert.equal(c.isTransparent(), false); }); - it('[5,6,7,0]', function() { - var c = new Color([5, 6, 7, 0]); + it('[5,6,7,0]', () => { + const c = new Color([5, 6, 7, 0]); assertColor(c, 5, 6, 7, 0); assert.equal(c.isTransparent(), true); }); }); - describe('transparency', function() { - it('transparent', function() { - var c = new Color('transparent'); + describe('transparency', () => { + it('transparent', () => { + const c = new Color('transparent'); assertColor(c, 0, 0, 0, 0); assert.equal(c.isTransparent(), true); }); - it('rgba(255,255,255,0)', function() { - var c = new Color('rgba(255,255,255,0)'); + it('rgba(255,255,255,0)', () => { + const c = new Color('rgba(255,255,255,0)'); assertColor(c, 255, 255, 255, 0); assert.equal(c.isTransparent(), true); }); diff --git a/tests/node/package.js b/tests/node/package.js index e0e7b4e3c..133e77afb 100644 --- a/tests/node/package.js +++ b/tests/node/package.js @@ -1,24 +1,15 @@ -var assert = require('assert'); -var path = require('path'); -var html2canvas = require('../../'); +const assert = require('assert'); +const html2canvas = require('../../'); -describe('Package', function() { - it('should have html2canvas defined', function() { +describe('Package', () => { + it('should have html2canvas defined', () => { assert.equal(typeof html2canvas, 'function'); }); -}); - -describe.only('requirejs', function() { - var requirejs = require('requirejs'); - - requirejs.config({ - baseUrl: path.resolve(__dirname, '../../dist') - }); - it('should have html2canvas defined', function(done) { - requirejs(['html2canvas'], function(h2c) { - assert.equal(typeof h2c, 'function'); + it('should have html2canvas defined', done => { + html2canvas('').catch((err) => { + assert.equal(err, 'Provided element is not within a Document'); done(); - }); + }) }); }); diff --git a/webpack.config.js b/webpack.config.js index 6bac38125..f971c25bc 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,7 +1,7 @@ const webpack = require('webpack'); const fs = require('fs'); const path = require('path'); - +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'))); const banner = @@ -36,6 +36,16 @@ module.exports = [ module: modules, plugins }, + { + entry: './src/index.js', + output: { + filename: './dist/html2canvas.min.js', + library: 'html2canvas', + libraryTarget: 'umd' + }, + module: modules, + plugins: plugins.concat([new UglifyJSPlugin(), new webpack.BannerPlugin(banner)]) + }, { entry: './src/renderer/RefTestRenderer.js', output: { From 0b4f92240540d393eaa66128e39aa3c0d20ed371 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 3 Dec 2017 17:24:31 +0800 Subject: [PATCH 107/377] Add Github release to travis build --- .travis.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5db607259..e5a40d251 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,18 @@ deploy: email: niklasvh@gmail.com api_key: secure: G/Szpr8q4/D6hp+H/Z9yyluUXtHAwf7LLa1Y07X59/Enlj1h7V5fQ7AW4/iAVM3XbIsrCPWR3dJU9g/ZxpxFg4OovIHVpS2Jr/mahtPYWdHR3pWuSmMW8QD+Twnq2VAFwSgg5Oumq3QxhX3YbCOnZox6+6Uviqk8FO7Z5B0RwW4= + skip_cleanup: true + on: + tags: true + branch: master + repo: niklasvh/html2canvas + - provider: releases + api_key: + secure: "PowO/Jat660k3gHcjgI6DlJz15RM7pLUu11UPsLCtYJ8ZwodppE6Keg0DfVkSFSIZttZor+UssDwP/WOEqfZNLqmXbcj3Gec4xolohet/GOe0KJKKuF/HgggbcxumopxMX6sMVePlMBpkLpHh7tgEAEHBWTlzC1c1a7Xa48fZ7k=" + file: + - "dist/html2canvas.js" + - "dist/html2canvas.min.js" + skip_cleanup: true on: tags: true branch: master From 0e8a924ea24c8bc962a5a0360c684d1a759968ff Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 3 Dec 2017 17:30:52 +0800 Subject: [PATCH 108/377] Fix formatting --- package.json | 3 +-- src/index.js | 2 +- tests/node/package.js | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 76c8fe926..2aa17e9f6 100644 --- a/package.json +++ b/package.json @@ -72,8 +72,7 @@ "test:node": "mocha tests/node/*.js", "karma": "node karma", "watch": "webpack --progress --colors --watch", - "start": "node tests/server", - "ss": "node $npm_package_version" + "start": "node tests/server" }, "homepage": "https://html2canvas.hertzen.com", "license": "MIT", diff --git a/src/index.js b/src/index.js index 707e1920d..0279c0928 100644 --- a/src/index.js +++ b/src/index.js @@ -41,7 +41,7 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { const ownerDocument = element.ownerDocument; if (!ownerDocument) { - return Promise.reject(`Provided element is not within a Document`) + return Promise.reject(`Provided element is not within a Document`); } const defaultView = ownerDocument.defaultView; diff --git a/tests/node/package.js b/tests/node/package.js index 133e77afb..94357575c 100644 --- a/tests/node/package.js +++ b/tests/node/package.js @@ -7,9 +7,9 @@ describe('Package', () => { }); it('should have html2canvas defined', done => { - html2canvas('').catch((err) => { + html2canvas('').catch(err => { assert.equal(err, 'Provided element is not within a Document'); done(); - }) + }); }); }); From 158435761f0da9a9c30d6d95c7485db66d88e9fb Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 3 Dec 2017 17:36:39 +0800 Subject: [PATCH 109/377] Fix package version for npm build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2aa17e9f6..0a0518d77 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ }, "scripts": { "build": "rimraf dist/ && node scripts/create-reftest-list && npm run build:npm && npm run build:browser", - "build:npm": "babel src/ -d dist/npm/ --plugins=dev-expression,transform-es2015-modules-commonjs && replace-in-file __VERSION__ '$npm_package_version' dist/npm/index.js", + "build:npm": "babel src/ -d dist/npm/ --plugins=dev-expression,transform-es2015-modules-commonjs && replace-in-file __VERSION__ '\"$npm_package_version\"' dist/npm/index.js", "build:browser": "webpack", "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", "flow": "flow", From a967475826410df044e5b589d453283053bcc4ff Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 3 Dec 2017 22:37:56 +0800 Subject: [PATCH 110/377] Disable beta firefox tests temporarily --- karma.conf.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 0a650bcbe..68fdbdb7d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -10,12 +10,6 @@ module.exports = function(config) { platform: 'Windows 10', version: 'beta' }, - sl_beta_firefox: { - base: 'SauceLabs', - browserName: 'firefox', - platform: 'Windows 8.1', - version: 'beta' - }, sl_ie9: { base: 'SauceLabs', browserName: 'internet explorer', From 2c8c604f9a2da68032db4f105bac033258f27cd2 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 4 Dec 2017 19:35:34 +0800 Subject: [PATCH 111/377] Update safari tests to use v10.1 --- karma.conf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/karma.conf.js b/karma.conf.js index 68fdbdb7d..0a5fe1033 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -43,7 +43,7 @@ module.exports = function(config) { sl_safari: { base: 'SauceLabs', browserName: 'safari', - version: '10.0', + version: '10.1', platform: 'macOS 10.12' }, 'sl_android_4.4': { From 0c8d38d9c0659f532358a0d0c3250c1f813005fd Mon Sep 17 00:00:00 2001 From: Erik Koopmans Date: Wed, 6 Dec 2017 23:49:11 +1100 Subject: [PATCH 112/377] Fix underlines, relative to 'bottom' baseline --- src/renderer/CanvasRenderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/CanvasRenderer.js b/src/renderer/CanvasRenderer.js index ee5c3f48d..273f014e4 100644 --- a/src/renderer/CanvasRenderer.js +++ b/src/renderer/CanvasRenderer.js @@ -212,7 +212,7 @@ export default class CanvasRenderer implements RenderTarget { const {baseline} = this.options.fontMetrics.getMetrics(font); this.rectangle( text.bounds.left, - Math.round(text.bounds.top + baseline), + Math.round(text.bounds.top + text.bounds.height - baseline), text.bounds.width, 1, textDecorationColor From 166cbba7c2f1a89ecd3eacc72e8576d566de299d Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 15:20:24 +0800 Subject: [PATCH 113/377] Fix decimal letter spacing values (#1293) --- src/parsing/letterSpacing.js | 2 +- tests/reftests/text/text.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/parsing/letterSpacing.js b/src/parsing/letterSpacing.js index df40f0454..23ec1efa6 100644 --- a/src/parsing/letterSpacing.js +++ b/src/parsing/letterSpacing.js @@ -5,6 +5,6 @@ export const parseLetterSpacing = (letterSpacing: string): number => { if (letterSpacing === 'normal') { return 0; } - const value = parseInt(letterSpacing, 10); + const value = parseFloat(letterSpacing); return isNaN(value) ? 0 : value; }; diff --git a/tests/reftests/text/text.html b/tests/reftests/text/text.html index f6d41949a..b9fcf3810 100644 --- a/tests/reftests/text/text.html +++ b/tests/reftests/text/text.html @@ -126,6 +126,7 @@

      <h3> misc text alignments

    • word-spacing:5px; (as each letter is rendered individually, the bounds will always be correct)
    • line-height:35px;
      (same goes for line-height)
    • letter-spacing:5px;
    • +
    • letter-spacing:0.9px;
    • text-align:right;width:300px;
    • font-variant:small-caps;
    • From b8178e92b4c50c4bb616362078bc3d03d2dcf275 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 15:47:42 +0800 Subject: [PATCH 114/377] Add deprecation warning for onrendered (Fix #1290) --- src/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/index.js b/src/index.js index 0279c0928..01e016e7c 100644 --- a/src/index.js +++ b/src/index.js @@ -39,6 +39,12 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { const config = conf || {}; const logger = new Logger(); + if (__DEV__ && typeof config.onrendered === 'function') { + logger.error( + `onrendered option is deprecated, html2canvas returns a Promise with the canvas as the value` + ); + } + const ownerDocument = element.ownerDocument; if (!ownerDocument) { return Promise.reject(`Provided element is not within a Document`); From 4a0926410373a65d5481333c179eab24c304566b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 15:47:53 +0800 Subject: [PATCH 115/377] Update CHANGELOG --- CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f94460497..0272d3a9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ ### Changelog ### -#### v1.0.0-alpha1 - TBD #### +#### v1.0.0-alpha2 - TBD #### + * Fix decimal `letter-spacing` values + +#### v1.0.0-alpha1 - 5.12.2017 #### * Complete rewrite of library ##### Breaking Changes ##### * Remove deprecated onrendered callback, calling `html2canvas` returns a `Promise` diff --git a/package.json b/package.json index 0a0518d77..6a439d5af 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "html2canvas", "description": "Screenshots with JavaScript", "main": "dist/npm/index.js", - "version": "1.0.0-alpha.1", + "version": "1.0.0-alpha.2", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 9db8580b975a04e5aa87f668a2dd340331a9175f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 16:12:39 +0800 Subject: [PATCH 116/377] Fix data-html2canvas-ignore attribute (Fix #1253) --- CHANGELOG.md | 1 + src/Clone.js | 5 +++- tests/reftests/options/ignore.html | 41 ++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 tests/reftests/options/ignore.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 0272d3a9e..ca03588a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### Changelog ### #### v1.0.0-alpha2 - TBD #### + * Fix `data-html2canvas-ignore` attribute * Fix decimal `letter-spacing` values #### v1.0.0-alpha1 - 5.12.2017 #### diff --git a/src/Clone.js b/src/Clone.js index cdc1ff892..c60cc149d 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -233,7 +233,10 @@ export class DocumentCloner { } for (let child = node.firstChild; child; child = child.nextSibling) { - if (child.nodeType !== Node.ELEMENT_NODE || child.nodeName !== 'SCRIPT') { + if ( + child.nodeType !== Node.ELEMENT_NODE || + (child.nodeName !== 'SCRIPT' && !child.hasAttribute('data-html2canvas-ignore')) + ) { if (!this.copyStyles || child.nodeName !== 'STYLE') { clone.appendChild(this.cloneNode(child)); } diff --git a/tests/reftests/options/ignore.html b/tests/reftests/options/ignore.html new file mode 100644 index 000000000..128081838 --- /dev/null +++ b/tests/reftests/options/ignore.html @@ -0,0 +1,41 @@ + + + + element render test + + + + + + + +
      + great failure +
      +
      + great success +
      + + + + From 8b653f89bca2870e099da584f19f06b7ab76fc53 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 16:16:22 +0800 Subject: [PATCH 117/377] Prevent generated iframe from getting re-rendered --- src/Clone.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Clone.js b/src/Clone.js index c60cc149d..f156bdd42 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -11,6 +11,8 @@ import {copyCSSStyles} from './Util'; import {parseBackgroundImage} from './parsing/background'; import CanvasRenderer from './renderer/CanvasRenderer'; +const IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'; + export class DocumentCloner { scrolledElements: Array<[HTMLElement, number, number]>; referenceElement: HTMLElement; @@ -235,7 +237,8 @@ export class DocumentCloner { for (let child = node.firstChild; child; child = child.nextSibling) { if ( child.nodeType !== Node.ELEMENT_NODE || - (child.nodeName !== 'SCRIPT' && !child.hasAttribute('data-html2canvas-ignore')) + // $FlowFixMe + (child.nodeName !== 'SCRIPT' && !child.hasAttribute(IGNORE_ATTRIBUTE)) ) { if (!this.copyStyles || child.nodeName !== 'STYLE') { clone.appendChild(this.cloneNode(child)); @@ -496,6 +499,7 @@ const createIframeContainer = ( cloneIframeContainer.width = bounds.width.toString(); cloneIframeContainer.height = bounds.height.toString(); cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it + cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true'); if (!ownerDocument.body) { return Promise.reject( __DEV__ ? `Body element not found in Document that is getting rendered` : '' From ef5c59e26d86e14523ea355425d14cd454483bc7 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 16:36:09 +0800 Subject: [PATCH 118/377] Fix scroll positions for CanvasRenderer (Fix #1259) --- CHANGELOG.md | 5 +++-- src/Clone.js | 2 +- tests/reftests/overflow/overflow.html | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca03588a8..465cbbc03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ ### Changelog ### #### v1.0.0-alpha2 - TBD #### - * Fix `data-html2canvas-ignore` attribute - * Fix decimal `letter-spacing` values + * Fix scroll positions for CanvasRenderer (#1259) + * Fix `data-html2canvas-ignore` attribute (#1253) + * Fix decimal `letter-spacing` values (#1293) #### v1.0.0-alpha1 - 5.12.2017 #### * Complete rewrite of library diff --git a/src/Clone.js b/src/Clone.js index f156bdd42..53e94bd12 100644 --- a/src/Clone.js +++ b/src/Clone.js @@ -253,7 +253,7 @@ export class DocumentCloner { } this.inlineAllImages(clone); if (node.scrollTop !== 0 || node.scrollLeft !== 0) { - this.scrolledElements.push([node, node.scrollLeft, node.scrollTop]); + this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]); } switch (node.nodeName) { case 'CANVAS': diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index 6528dc487..cb21d935b 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -65,6 +65,20 @@

      Overflow: hidden

      +
      + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s + + with the release of
      a
      Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + + +
      position:relative within a overflow:hidden element

      + + Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. +
      + +
      From 1d1c74a74edcef60d909e28d735b720c7e406ee8 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 17:30:13 +0800 Subject: [PATCH 119/377] Add Github issue templates --- .github/ISSUE_TEMPLATE.md | 19 ++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 37 ++++++++++++++++++++++++++++++++ .npmignore | 5 +++-- CHANGELOG.md | 4 +++- package.json | 2 +- 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..9749920fc --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,19 @@ +Please make sure you are testing with the latest [release of html2canvas](https://github.com/niklasvh/html2canvas/releases). +Old versions are not supported and issues reported for them will be closed. + +# Please follow the general troubleshooting steps first: + +- [ ] You are using the latest [version](https://github.com/niklasvh/html2canvas/releases) +- [ ] You are testing using the non-minified version of html2canvas and checked any potential issues reported in the console + + + +### Bug reports: + +Please replace this line with a brief summary of your issue **AND** if possible an example on [jsfiddle](https://jsfiddle.net/). + +### Specifications: + + * html2canvas version tested with: + * Browser & version: + * Operating system: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..1566fb80d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,37 @@ +A similar PR may already be submitted! +Please search among the [Pull request](https://github.com/niklasvh/html2canvas/pulls) before creating one. + +Thanks for submitting a pull request! Please provide enough information so that others can review your pull request: + +Before opening a pull request, please make sure all the tests pass locally by running `npm test`. + +**Summary** + + + +This PR fixes/implements the following **bugs/features** + +* [ ] Bug 1 +* [ ] Bug 2 +* [ ] Feature 1 +* [ ] Feature 2 +* [ ] Breaking changes + + + +Explain the **motivation** for making this change. What existing problem does the pull request solve? + + + +**Test plan (required)** + +Demonstrate how the issue/feature can be replicated. For most cases, simply adding an appropriate html/css template into the [reftests](https://github.com/niklasvh/html2canvas/tree/master/tests/reftests) should be sufficient. Please see other tests there for reference. + +**Code formatting** + +Please make sure that code adheres to the project code formatting. Running `npm run format` will automatically format your code correctly. + +**Closing issues** + + +Fixes # diff --git a/.npmignore b/.npmignore index 9d35537d7..c32fc8c59 100644 --- a/.npmignore +++ b/.npmignore @@ -3,12 +3,13 @@ examples/ scripts/ src/ tests/ +.github/ *.iml .babelrc .idea/ .npmignore -.jshintrc +.eslintrc .travis.yml karma.js -karma.config.js +karma.conf.js webpack.config.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 465cbbc03..718dfe58c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ### Changelog ### -#### v1.0.0-alpha2 - TBD #### +#### v1.0.0-alpha3 - TBD #### + +#### v1.0.0-alpha2 - 7.12.2017 #### * Fix scroll positions for CanvasRenderer (#1259) * Fix `data-html2canvas-ignore` attribute (#1253) * Fix decimal `letter-spacing` values (#1293) diff --git a/package.json b/package.json index 6a439d5af..6a6d1ec29 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "html2canvas", "description": "Screenshots with JavaScript", "main": "dist/npm/index.js", - "version": "1.0.0-alpha.2", + "version": "1.0.0-alpha.3", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 63377d47a458f56872b3e2704c0e599bb38ba4cd Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 7 Dec 2017 23:49:40 +0800 Subject: [PATCH 120/377] Begin adding documentation --- docs/about.md | 38 +++++++++++++++++++++++ docs/configuration.md | 25 +++++++++++++++ docs/features.md | 67 +++++++++++++++++++++++++++++++++++++++++ docs/getting-started.md | 25 +++++++++++++++ docs/proxy.md | 11 +++++++ 5 files changed, 166 insertions(+) create mode 100644 docs/about.md create mode 100644 docs/configuration.md create mode 100644 docs/features.md create mode 100644 docs/getting-started.md create mode 100644 docs/proxy.md diff --git a/docs/about.md b/docs/about.md new file mode 100644 index 000000000..e6794ebc9 --- /dev/null +++ b/docs/about.md @@ -0,0 +1,38 @@ +--- +title: "About" +--- + +Before you get started with the script, there are a few things that are good to know regarding the +script and some of its limitations. + +# Introduction +The script allows you to take "screenshots" of webpages or parts of it, directly on the users browser. +The screenshot is based on the DOM and as such may not be 100% accurate to the real representation +as it does not make an actual screenshot, but builds the screenshot based on the information +available on the page. + +# How it works +The script traverses through the DOM of the page it is loaded on. It gathers information on all the elements +there, which it then uses to build a representation of the page. In other words, it does not actually take a +screenshot of the page, but builds a representation of it based on the properties it reads from the DOM. + +As a result, it is only able to render correctly properties that it understands, meaning there are many +CSS properties which do not work. For a full list of supported CSS properties, check out the +[support features](/features/) page. + +# Limitations +All the images that the script uses need to reside under the [same origin](http://en.wikipedia.org/wiki/Same_origin_policy) +for it to be able to read them without the assistance of a [proxy](/proxy/). Similarly, if you have other `canvas` +elements on the page, which have been tainted with cross-origin content, they will become dirty and no longer readable by html2canvas. + +The script doesn't render plugin content such as Flash or Java applets. + +# Browser compatibility + +The library should work fine on the following browsers (with `Promise` polyfill): + - Firefox 3.5+ + - Google Chrome + - Opera 12+ + - IE9+ + - Edge + - Safari 6+ diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 000000000..ec9ce81aa --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,25 @@ +--- +title: "Configuration" +--- + +These are all of the available configuration options. + +| Name | Type | Default | Description | +| ------------- |:-------------:| :------: | ----------- | +| async | Boolean | `true` | Whether to parse and render the element asynchronously +| allowTaint | Boolean | `false` | Whether to allow cross-origin images to taint the canvas +| backgroundColor | String | `#ffffff` | Canvas background color, if none is specified in DOM. Set undefined for transparent +| canvas | `HTMLCanvasElement` | `null` | Existing `canvas` element to use as a base for drawing on +| foreignObjectRendering | Boolean | `false` | Whether to use ForeignObject rendering if the browser supports it +| imageTimeout | Number | `15000` | Timeout for loading an image (in milliseconds). Set to `0` to disable timeout. +| proxy | String | `null` | Url to the [proxy](/proxy/) which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded. +| removeContainer | Boolean | `true` | Whether to cleanup the cloned DOM elements html2canvas creates temporarily +| scale | Number | `window.devicePixelRatio` | The scale to use for rendering. Defaults to the browsers device pixel ratio. +| width | Number | `Element` width | The width of the `canvas` +| height | Number | `Element` height | The height of the `canvas` +| x | Number | `Element` x-offset | Crop canvas x-coordinate +| y | Number | `Element` y-offset| Crop canvas y-coordinate +| scrollX | Number | `Element` scrollX | The x-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) +| scrollY | Number | `Element` scrollY | The y-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) +| windowWidth | Number | `Window.innerWidth` | Window width to use when rendering `Element`, which may affect things like Media queries +| windowHeight | Number | `Window.innerHeight` | Window height to use when rendering `Element`, which may affect things like Media queries diff --git a/docs/features.md b/docs/features.md new file mode 100644 index 000000000..b708b4da0 --- /dev/null +++ b/docs/features.md @@ -0,0 +1,67 @@ +--- +title: "Features" +--- + +Below is a list of all the supported CSS properties and values. + + - background + - background-clip (**Does not support `text`**) + - background-color + - background-image + - url() + - linear-gradient() + - background-origin + - background-position + - background-size + - border + - border-color + - border-radius + - border-style (**Only supports `solid`**) + - border-width + - bottom + - box-sizing + - content (**Does not support `attr()`**) + - color + - display + - flex + - float + - font + - font-family + - font-size + - font-style + - font-variant + - font-weight + - height + - left + - letter-spacing + - margin + - opacity + - overflow + - padding + - position + - right + - text-align + - text-decoration + - text-decoration-color + - text-decoration-line + - text-decoration-style (**Only supports `solid`**) + - text-shadow + - text-transform + - top + - transform (**Limited support**) + - visibility + - white-space + - width + - word-spacing + - z-index + +## Unsupported CSS properties +These CSS properties are **NOT** currently supported + - [background-blend-mode](https://github.com/niklasvh/html2canvas/issues/966) + - [box-shadow](https://github.com/niklasvh/html2canvas/pull/1086) + - [filter](https://github.com/niklasvh/html2canvas/issues/493) + - [font-variant-ligatures](https://github.com/niklasvh/html2canvas/pull/1085) + - [list-style](https://github.com/niklasvh/html2canvas/issues/177) + - word-break + - [writing-mode](https://github.com/niklasvh/html2canvas/issues/1258) + diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 000000000..3fd5300b6 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,25 @@ +--- +title: "Getting Started" +--- + +# Installing + +You can install `html2canvas` through npm or [download a built release](https://github.com/niklasvh/html2canvas/releases). + +### npm + + npm install html2canvas + +```javascript +import html2canvas from 'html2canvas'; +``` + +# Usage + +To render an `element` with html2canvas with some (optional) [options](/configuration/), simply call `html2canvas(element, options);` + +```javascript +html2canvas(document.body).then(function(canvas) { + document.body.appendChild(canvas); +}); +``` diff --git a/docs/proxy.md b/docs/proxy.md new file mode 100644 index 000000000..455becb5f --- /dev/null +++ b/docs/proxy.md @@ -0,0 +1,11 @@ +--- +title: "Proxy" +--- + +html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of +the origin of the current page taint the canvas that they are drawn upon. If the canvas gets tainted, +it cannot be read anymore. If you wish to load images that reside outside of your pages origin, you can use a proxy to load the images. + +# Available proxies + + - [node.js](https://github.com/niklasvh/html2canvas-proxy-nodejs) From 850338a76add7feeb20cde2d10777c460fd0355a Mon Sep 17 00:00:00 2001 From: Matthias Christen Date: Sat, 9 Dec 2017 00:12:29 +0100 Subject: [PATCH 121/377] added support for background-origin: content-box, fixed background-origin related background sizes --- src/Renderer.js | 38 +++++++++++++++++++++------ src/parsing/padding.js | 7 +++++ tests/reftests/background/origin.html | 33 +++++++++++++++++++++++ 3 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 tests/reftests/background/origin.html diff --git a/src/Renderer.js b/src/Renderer.js index 923e095fd..dd65acd81 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -27,6 +27,7 @@ import { calculatePaddingBox, calculatePaddingBoxPath } from './Bounds'; +import {PADDING_SIDES} from './parsing/padding'; import {FontMetrics} from './Font'; import {parseGradient} from './Gradient'; import TextContainer from './TextContainer'; @@ -223,14 +224,35 @@ export default class Renderer { if (image) { const bounds = container.bounds; const paddingBox = calculatePaddingBox(bounds, container.style.border); - const backgroundImageSize = calculateBackgroundSize(background, image, bounds); - // TODO support CONTENT_BOX - const backgroundPositioningArea = - container.style.background.backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX - ? bounds - : paddingBox; + let backgroundPositioningArea; + switch (container.style.background.backgroundOrigin) { + case BACKGROUND_ORIGIN.BORDER_BOX: + backgroundPositioningArea = bounds; + break; + case BACKGROUND_ORIGIN.CONTENT_BOX: + const paddingLeft = container.style.padding[PADDING_SIDES.LEFT].value; + const paddingRight = container.style.padding[PADDING_SIDES.RIGHT].value; + const paddingTop = container.style.padding[PADDING_SIDES.TOP].value; + const paddingBottom = container.style.padding[PADDING_SIDES.BOTTOM].value; + backgroundPositioningArea = new Bounds( + paddingBox.left + paddingLeft, + paddingBox.top + paddingTop, + paddingBox.width - paddingLeft - paddingRight, + paddingBox.height - paddingTop - paddingBottom + ); + break; + case BACKGROUND_ORIGIN.PADDING_BOX: + default: + backgroundPositioningArea = paddingBox; + break; + } + const backgroundImageSize = calculateBackgroundSize( + background, + image, + backgroundPositioningArea + ); const position = calculateBackgroundPosition( background.position, backgroundImageSize, @@ -244,8 +266,8 @@ export default class Renderer { bounds ); - const offsetX = Math.round(paddingBox.left + position.x); - const offsetY = Math.round(paddingBox.top + position.y); + const offsetX = Math.round(backgroundPositioningArea.left + position.x); + const offsetY = Math.round(backgroundPositioningArea.top + position.y); this.target.renderRepeat(path, image, backgroundImageSize, offsetX, offsetY); } } diff --git a/src/parsing/padding.js b/src/parsing/padding.js index b6e46d53d..8616f743b 100644 --- a/src/parsing/padding.js +++ b/src/parsing/padding.js @@ -2,6 +2,13 @@ 'use strict'; import Length from '../Length'; +export const PADDING_SIDES = { + TOP: 0, + RIGHT: 1, + BOTTOM: 2, + LEFT: 3 +}; + const SIDES = ['top', 'right', 'bottom', 'left']; export type Padding = Array; diff --git a/tests/reftests/background/origin.html b/tests/reftests/background/origin.html new file mode 100644 index 000000000..d7dcb3476 --- /dev/null +++ b/tests/reftests/background/origin.html @@ -0,0 +1,33 @@ + + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + \ No newline at end of file From a6a3c1bd0f487922390a42102aec112d54a760d8 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 17:45:58 +0800 Subject: [PATCH 122/377] Fix tests and refactor background calculations out from Renderer --- CHANGELOG.md | 2 ++ src/Renderer.js | 45 ++++++--------------------- src/parsing/background.js | 41 ++++++++++++++++++++++-- tests/reftests/background/origin.html | 5 +-- 4 files changed, 52 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 718dfe58c..d9cb15e0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ### Changelog ### #### v1.0.0-alpha3 - TBD #### + * Fix background-size when using background-origin and background-size: cover/contain (#1299) + * Added support for background-origin: content-box (#1299) #### v1.0.0-alpha2 - 7.12.2017 #### * Fix scroll positions for CanvasRenderer (#1259) diff --git a/src/Renderer.js b/src/Renderer.js index dd65acd81..ccc48f0b0 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -20,20 +20,13 @@ import type NodeContainer from './NodeContainer'; import type StackingContext from './StackingContext'; import type {TextBounds} from './TextBounds'; -import { - Bounds, - parsePathForBorder, - calculateContentBox, - calculatePaddingBox, - calculatePaddingBoxPath -} from './Bounds'; -import {PADDING_SIDES} from './parsing/padding'; +import {Bounds, parsePathForBorder, calculateContentBox, calculatePaddingBoxPath} from './Bounds'; import {FontMetrics} from './Font'; import {parseGradient} from './Gradient'; import TextContainer from './TextContainer'; import { - BACKGROUND_ORIGIN, + calculateBackgroungPositioningArea, calculateBackgroungPaintingArea, calculateBackgroundPosition, calculateBackgroundRepeatPath, @@ -222,32 +215,12 @@ export default class Renderer { renderBackgroundRepeat(container: NodeContainer, background: BackgroundImage) { const image = this.options.imageStore.get(background.source.args[0]); if (image) { - const bounds = container.bounds; - const paddingBox = calculatePaddingBox(bounds, container.style.border); - - let backgroundPositioningArea; - switch (container.style.background.backgroundOrigin) { - case BACKGROUND_ORIGIN.BORDER_BOX: - backgroundPositioningArea = bounds; - break; - case BACKGROUND_ORIGIN.CONTENT_BOX: - const paddingLeft = container.style.padding[PADDING_SIDES.LEFT].value; - const paddingRight = container.style.padding[PADDING_SIDES.RIGHT].value; - const paddingTop = container.style.padding[PADDING_SIDES.TOP].value; - const paddingBottom = container.style.padding[PADDING_SIDES.BOTTOM].value; - backgroundPositioningArea = new Bounds( - paddingBox.left + paddingLeft, - paddingBox.top + paddingTop, - paddingBox.width - paddingLeft - paddingRight, - paddingBox.height - paddingTop - paddingBottom - ); - break; - case BACKGROUND_ORIGIN.PADDING_BOX: - default: - backgroundPositioningArea = paddingBox; - break; - } - + const backgroundPositioningArea = calculateBackgroungPositioningArea( + container.style.background.backgroundOrigin, + container.bounds, + container.style.padding, + container.style.border + ); const backgroundImageSize = calculateBackgroundSize( background, image, @@ -263,7 +236,7 @@ export default class Renderer { position, backgroundImageSize, backgroundPositioningArea, - bounds + container.bounds ); const offsetX = Math.round(backgroundPositioningArea.left + position.x); diff --git a/src/parsing/background.js b/src/parsing/background.js index 5c2ac0542..bc12be225 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -1,14 +1,22 @@ /* @flow */ 'use strict'; import type {Path} from '../drawing/Path'; -import type {Bounds, BoundCurves} from '../Bounds'; +import type {BoundCurves} from '../Bounds'; import type ResourceLoader, {ImageElement} from '../ResourceLoader'; +import type {Border} from './border'; +import type {Padding} from './padding'; import Color from '../Color'; import Length from '../Length'; import Size from '../drawing/Size'; import Vector from '../drawing/Vector'; -import {calculateBorderBoxPath, calculatePaddingBoxPath} from '../Bounds'; +import { + calculateBorderBoxPath, + calculatePaddingBoxPath, + calculatePaddingBox, + Bounds +} from '../Bounds'; +import {PADDING_SIDES} from './padding'; export type Background = { backgroundImage: Array, @@ -121,7 +129,6 @@ export const calculateBackgroungPaintingArea = ( curves: BoundCurves, clip: BackgroundClip ): Path => { - // TODO support CONTENT_BOX switch (clip) { case BACKGROUND_CLIP.BORDER_BOX: return calculateBorderBoxPath(curves); @@ -131,6 +138,34 @@ export const calculateBackgroungPaintingArea = ( } }; +export const calculateBackgroungPositioningArea = ( + backgroundOrigin: BackgroundOrigin, + bounds: Bounds, + padding: Padding, + border: Array +): Bounds => { + const paddingBox = calculatePaddingBox(bounds, border); + + switch (backgroundOrigin) { + case BACKGROUND_ORIGIN.BORDER_BOX: + return bounds; + case BACKGROUND_ORIGIN.CONTENT_BOX: + const paddingLeft = padding[PADDING_SIDES.LEFT].getAbsoluteValue(bounds.width); + const paddingRight = padding[PADDING_SIDES.RIGHT].getAbsoluteValue(bounds.width); + const paddingTop = padding[PADDING_SIDES.TOP].getAbsoluteValue(bounds.width); + const paddingBottom = padding[PADDING_SIDES.BOTTOM].getAbsoluteValue(bounds.width); + return new Bounds( + paddingBox.left + paddingLeft, + paddingBox.top + paddingTop, + paddingBox.width - paddingLeft - paddingRight, + paddingBox.height - paddingTop - paddingBottom + ); + case BACKGROUND_ORIGIN.PADDING_BOX: + default: + return paddingBox; + } +}; + export const calculateBackgroundPosition = ( position: [Length, Length], size: Size, diff --git a/tests/reftests/background/origin.html b/tests/reftests/background/origin.html index d7dcb3476..483935855 100644 --- a/tests/reftests/background/origin.html +++ b/tests/reftests/background/origin.html @@ -1,6 +1,7 @@ + @@ -30,4 +31,4 @@
      - \ No newline at end of file + From e8a4d775e8ea50e847d3a41387771abfbc64bddb Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 17:46:07 +0800 Subject: [PATCH 123/377] Update docs --- docs/features.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/features.md b/docs/features.md index b708b4da0..794aee2c7 100644 --- a/docs/features.md +++ b/docs/features.md @@ -35,6 +35,10 @@ Below is a list of all the supported CSS properties and values. - left - letter-spacing - margin + - max-height + - max-width + - min-height + - min-width - opacity - overflow - padding @@ -58,6 +62,7 @@ Below is a list of all the supported CSS properties and values. ## Unsupported CSS properties These CSS properties are **NOT** currently supported - [background-blend-mode](https://github.com/niklasvh/html2canvas/issues/966) + - [border-image](https://github.com/niklasvh/html2canvas/issues/1287) - [box-shadow](https://github.com/niklasvh/html2canvas/pull/1086) - [filter](https://github.com/niklasvh/html2canvas/issues/493) - [font-variant-ligatures](https://github.com/niklasvh/html2canvas/pull/1085) From b239937e0016cb5fdbb4fb050c38f58fb276426b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 17:46:32 +0800 Subject: [PATCH 124/377] Refactor Font.js --- src/Font.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Font.js b/src/Font.js index cd32f2514..4c78bd225 100644 --- a/src/Font.js +++ b/src/Font.js @@ -63,9 +63,11 @@ export class FontMetrics { return {baseline, middle}; } getMetrics(font: Font) { - if (this._data[`${font.fontFamily} ${font.fontSize}`] === undefined) { - this._data[`${font.fontFamily} ${font.fontSize}`] = this._parseMetrics(font); + const key = `${font.fontFamily} ${font.fontSize}`; + if (this._data[key] === undefined) { + this._data[key] = this._parseMetrics(font); } - return this._data[`${font.fontFamily} ${font.fontSize}`]; + + return this._data[key]; } } From 13e80cc635aa0bdbe83599c5019358e35f15a76f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 17:47:25 +0800 Subject: [PATCH 125/377] Begin implementing new website --- .flowconfig | 1 + package.json | 2 +- www/.gitignore | 8 + www/LICENSE | 22 + www/README.md | 13 + www/gatsby-browser.js | 7 + www/gatsby-config.js | 42 + www/gatsby-node.js | 52 + www/gatsby-ssr.js | 7 + www/package-lock.json | 12062 +++++++++++++++++++++++++++++ www/package.json | 27 + www/src/components/navigation.js | 52 + www/src/layouts/index.css | 624 ++ www/src/layouts/index.js | 25 + www/src/pages/404.js | 9 + www/src/pages/index.js | 12 + www/src/templates/docs.js | 47 + www/src/utils/typography.js | 6 + 18 files changed, 13017 insertions(+), 1 deletion(-) create mode 100644 www/.gitignore create mode 100644 www/LICENSE create mode 100644 www/README.md create mode 100644 www/gatsby-browser.js create mode 100644 www/gatsby-config.js create mode 100644 www/gatsby-node.js create mode 100644 www/gatsby-ssr.js create mode 100644 www/package-lock.json create mode 100644 www/package.json create mode 100644 www/src/components/navigation.js create mode 100644 www/src/layouts/index.css create mode 100644 www/src/layouts/index.js create mode 100644 www/src/pages/404.js create mode 100644 www/src/pages/index.js create mode 100644 www/src/templates/docs.js create mode 100644 www/src/utils/typography.js diff --git a/.flowconfig b/.flowconfig index 72d12a0bf..c4c5750fc 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,4 +1,5 @@ [ignore] +.*/www/.* [include] [libs] ./flow-typed diff --git a/package.json b/package.json index 6a6d1ec29..9b499b6e2 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "build": "rimraf dist/ && node scripts/create-reftest-list && npm run build:npm && npm run build:browser", "build:npm": "babel src/ -d dist/npm/ --plugins=dev-expression,transform-es2015-modules-commonjs && replace-in-file __VERSION__ '\"$npm_package_version\"' dist/npm/index.js", "build:browser": "webpack", - "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,tests,scripts}/**/*.js\"", + "format": "prettier --single-quote --no-bracket-spacing --tab-width 4 --print-width 100 --write \"{src,www,tests,scripts}/**/*.js\"", "flow": "flow", "lint": "eslint src/**", "test": "npm run flow && npm run lint && npm run test:node && npm run karma", diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 000000000..248335d25 --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,8 @@ +# Project dependencies +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules +.cache/ +# Build directory +public/ +.DS_Store +yarn-error.log diff --git a/www/LICENSE b/www/LICENSE new file mode 100644 index 000000000..5169a5e41 --- /dev/null +++ b/www/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 gatsbyjs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/www/README.md b/www/README.md new file mode 100644 index 000000000..d9a517273 --- /dev/null +++ b/www/README.md @@ -0,0 +1,13 @@ +# gatsby-starter-default +The default Gatsby starter + +For an overview of the project structure please refer to the [Gatsby documentation - Building with Components](https://www.gatsbyjs.org/docs/building-with-components/) + +Install this starter (assuming Gatsby is installed) by running from your CLI: +``` +gatsby new gatsby-example-site +``` + +## Deploy + +[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-default) diff --git a/www/gatsby-browser.js b/www/gatsby-browser.js new file mode 100644 index 000000000..b1e5c316b --- /dev/null +++ b/www/gatsby-browser.js @@ -0,0 +1,7 @@ +/** + * Implement Gatsby's Browser APIs in this file. + * + * See: https://www.gatsbyjs.org/docs/browser-apis/ + */ + +// You can delete this file if you're not using it diff --git a/www/gatsby-config.js b/www/gatsby-config.js new file mode 100644 index 000000000..8918ee556 --- /dev/null +++ b/www/gatsby-config.js @@ -0,0 +1,42 @@ +module.exports = { + siteMetadata: { + title: `Gatsby Default Starter` + }, + plugins: [ + { + resolve: `gatsby-source-filesystem`, + options: { + path: `${__dirname}/../docs/` + } + }, + `gatsby-plugin-catch-links`, + `gatsby-plugin-react-helmet`, + `gatsby-plugin-glamor`, + { + resolve: `gatsby-plugin-typography`, + options: { + pathToConfigModule: `src/utils/typography.js` + } + }, + { + resolve: `gatsby-transformer-remark`, + options: { + plugins: [ + { + resolve: `gatsby-remark-prismjs`, + options: { + // Class prefix for
       tags containing syntax highlighting;
      +                            // defaults to 'language-' (eg 
      ).
      +                            // If your site loads Prism into the browser at runtime,
      +                            // (eg for use with libraries like react-live),
      +                            // you may use this to prevent Prism from re-processing syntax.
      +                            // This is an uncommon use-case though;
      +                            // If you're unsure, it's best to use the default value.
      +                            classPrefix: 'language-'
      +                        }
      +                    }
      +                ]
      +            }
      +        }
      +    ]
      +};
      diff --git a/www/gatsby-node.js b/www/gatsby-node.js
      new file mode 100644
      index 000000000..5e4e9ef17
      --- /dev/null
      +++ b/www/gatsby-node.js
      @@ -0,0 +1,52 @@
      +/**
      + * Implement Gatsby's Node APIs in this file.
      + *
      + * See: https://www.gatsbyjs.org/docs/node-apis/
      + */
      +
      +// You can delete this file if you're not using it
      +const {createFilePath} = require(`gatsby-source-filesystem`);
      +const path = require('path');
      +
      +exports.onCreateNode = ({node, getNode, boundActionCreators}) => {
      +    const {createNodeField} = boundActionCreators;
      +    if (node.internal.type === `MarkdownRemark`) {
      +        const slug = createFilePath({node, getNode});
      +        createNodeField({
      +            node,
      +            name: `slug`,
      +            value: slug
      +        });
      +    }
      +};
      +
      +exports.createPages = ({graphql, boundActionCreators}) => {
      +    const {createPage} = boundActionCreators;
      +    return new Promise((resolve, reject) => {
      +        graphql(`
      +      {
      +        allMarkdownRemark {
      +          edges {
      +            node {
      +              fields {
      +                slug
      +              }
      +            }
      +          }
      +        }
      +      }
      +    `).then(result => {
      +            result.data.allMarkdownRemark.edges.map(({node}) => {
      +                createPage({
      +                    path: node.fields.slug,
      +                    component: path.resolve(__dirname, `./src/templates/docs.js`),
      +                    context: {
      +                        // Data passed to context is available in page queries as GraphQL variables.
      +                        slug: node.fields.slug
      +                    }
      +                });
      +            });
      +            resolve();
      +        });
      +    });
      +};
      diff --git a/www/gatsby-ssr.js b/www/gatsby-ssr.js
      new file mode 100644
      index 000000000..b17b8fc19
      --- /dev/null
      +++ b/www/gatsby-ssr.js
      @@ -0,0 +1,7 @@
      +/**
      + * Implement Gatsby's SSR (Server Side Rendering) APIs in this file.
      + *
      + * See: https://www.gatsbyjs.org/docs/ssr-apis/
      + */
      +
      +// You can delete this file if you're not using it
      diff --git a/www/package-lock.json b/www/package-lock.json
      new file mode 100644
      index 000000000..893958806
      --- /dev/null
      +++ b/www/package-lock.json
      @@ -0,0 +1,12062 @@
      +{
      +  "name": "html2canvas-website",
      +  "version": "1.0.0",
      +  "lockfileVersion": 1,
      +  "requires": true,
      +  "dependencies": {
      +    "accepts": {
      +      "version": "1.3.4",
      +      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
      +      "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
      +      "requires": {
      +        "mime-types": "2.1.17",
      +        "negotiator": "0.6.1"
      +      }
      +    },
      +    "acorn": {
      +      "version": "3.3.0",
      +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
      +      "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
      +    },
      +    "address": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
      +      "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg=="
      +    },
      +    "after": {
      +      "version": "0.8.2",
      +      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
      +      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
      +    },
      +    "ajv": {
      +      "version": "5.5.1",
      +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz",
      +      "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=",
      +      "requires": {
      +        "co": "4.6.0",
      +        "fast-deep-equal": "1.0.0",
      +        "fast-json-stable-stringify": "2.0.0",
      +        "json-schema-traverse": "0.3.1"
      +      }
      +    },
      +    "align-text": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
      +      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
      +      "requires": {
      +        "kind-of": "3.2.2",
      +        "longest": "1.0.1",
      +        "repeat-string": "1.6.1"
      +      }
      +    },
      +    "alphanum-sort": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
      +      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
      +    },
      +    "amdefine": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
      +      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
      +    },
      +    "ansi": {
      +      "version": "0.3.1",
      +      "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
      +      "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE="
      +    },
      +    "ansi-align": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
      +      "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
      +      "requires": {
      +        "string-width": "2.1.1"
      +      }
      +    },
      +    "ansi-escapes": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
      +      "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ=="
      +    },
      +    "ansi-html": {
      +      "version": "0.0.7",
      +      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
      +      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
      +    },
      +    "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": "2.2.1",
      +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
      +      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
      +    },
      +    "ansi-wrap": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
      +      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
      +    },
      +    "any-promise": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
      +      "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic="
      +    },
      +    "anymatch": {
      +      "version": "1.3.2",
      +      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
      +      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
      +      "requires": {
      +        "micromatch": "2.3.11",
      +        "normalize-path": "2.1.1"
      +      }
      +    },
      +    "are-we-there-yet": {
      +      "version": "1.1.4",
      +      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
      +      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
      +      "requires": {
      +        "delegates": "1.0.0",
      +        "readable-stream": "2.3.3"
      +      }
      +    },
      +    "argparse": {
      +      "version": "1.0.9",
      +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
      +      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
      +      "requires": {
      +        "sprintf-js": "1.0.3"
      +      }
      +    },
      +    "args": {
      +      "version": "3.0.7",
      +      "resolved": "https://registry.npmjs.org/args/-/args-3.0.7.tgz",
      +      "integrity": "sha512-OQDwfEHYshaeRbbXa7WKIpLmxXrLvHTQ8pcyyH/CoR8Y8v/SjaFYI3d7nQA6xZTM4p6xC7KPVGRDmp8gXLsUcQ==",
      +      "requires": {
      +        "camelcase": "4.1.0",
      +        "chalk": "2.1.0",
      +        "mri": "1.1.0",
      +        "pkginfo": "0.4.1",
      +        "string-similarity": "1.2.0"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.1.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
      +          "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "arr-diff": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
      +      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
      +      "requires": {
      +        "arr-flatten": "1.1.0"
      +      }
      +    },
      +    "arr-flatten": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
      +      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
      +    },
      +    "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=",
      +      "optional": true
      +    },
      +    "array-filter": {
      +      "version": "0.0.1",
      +      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
      +      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
      +    },
      +    "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-flatten": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
      +      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
      +    },
      +    "array-iterate": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.1.tgz",
      +      "integrity": "sha1-hlv3+K851rCYLGCQKRSsdrwBCPY="
      +    },
      +    "array-map": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
      +      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
      +    },
      +    "array-reduce": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
      +      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
      +    },
      +    "array-slice": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
      +      "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
      +      "optional": true
      +    },
      +    "array-union": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
      +      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
      +      "requires": {
      +        "array-uniq": "1.0.3"
      +      }
      +    },
      +    "array-uniq": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
      +      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
      +    },
      +    "array-unique": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
      +      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
      +    },
      +    "arraybuffer.slice": {
      +      "version": "0.0.6",
      +      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
      +      "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco="
      +    },
      +    "asap": {
      +      "version": "2.0.6",
      +      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
      +      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
      +    },
      +    "asn1": {
      +      "version": "0.2.3",
      +      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
      +      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
      +    },
      +    "asn1.js": {
      +      "version": "4.9.2",
      +      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz",
      +      "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "inherits": "2.0.3",
      +        "minimalistic-assert": "1.0.0"
      +      }
      +    },
      +    "assert": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
      +      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
      +      "requires": {
      +        "util": "0.10.3"
      +      }
      +    },
      +    "assert-plus": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
      +      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
      +    },
      +    "async": {
      +      "version": "2.6.0",
      +      "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
      +      "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
      +      "requires": {
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "async-each": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
      +      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
      +    },
      +    "async-limiter": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
      +      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
      +    },
      +    "asynckit": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
      +      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
      +    },
      +    "atob": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz",
      +      "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10="
      +    },
      +    "autoprefixer": {
      +      "version": "6.7.7",
      +      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
      +      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
      +      "requires": {
      +        "browserslist": "1.7.7",
      +        "caniuse-db": "1.0.30000777",
      +        "normalize-range": "0.1.2",
      +        "num2fraction": "1.2.2",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      },
      +      "dependencies": {
      +        "browserslist": {
      +          "version": "1.7.7",
      +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
      +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
      +          "requires": {
      +            "caniuse-db": "1.0.30000777",
      +            "electron-to-chromium": "1.3.27"
      +          }
      +        }
      +      }
      +    },
      +    "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.6.0",
      +      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
      +      "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
      +    },
      +    "babel-cli": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
      +      "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
      +      "requires": {
      +        "babel-core": "6.26.0",
      +        "babel-polyfill": "6.26.0",
      +        "babel-register": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "chokidar": "1.7.0",
      +        "commander": "2.12.2",
      +        "convert-source-map": "1.5.1",
      +        "fs-readdir-recursive": "1.1.0",
      +        "glob": "7.1.2",
      +        "lodash": "4.17.4",
      +        "output-file-sync": "1.1.2",
      +        "path-is-absolute": "1.0.1",
      +        "slash": "1.0.0",
      +        "source-map": "0.5.7",
      +        "v8flags": "2.1.1"
      +      },
      +      "dependencies": {
      +        "commander": {
      +          "version": "2.12.2",
      +          "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
      +          "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA=="
      +        }
      +      }
      +    },
      +    "babel-code-frame": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
      +      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
      +      "requires": {
      +        "chalk": "1.1.3",
      +        "esutils": "2.0.2",
      +        "js-tokens": "3.0.2"
      +      }
      +    },
      +    "babel-core": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
      +      "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
      +      "requires": {
      +        "babel-code-frame": "6.26.0",
      +        "babel-generator": "6.26.0",
      +        "babel-helpers": "6.24.1",
      +        "babel-messages": "6.23.0",
      +        "babel-register": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "babylon": "6.18.0",
      +        "convert-source-map": "1.5.1",
      +        "debug": "2.6.9",
      +        "json5": "0.5.1",
      +        "lodash": "4.17.4",
      +        "minimatch": "3.0.4",
      +        "path-is-absolute": "1.0.1",
      +        "private": "0.1.8",
      +        "slash": "1.0.0",
      +        "source-map": "0.5.7"
      +      }
      +    },
      +    "babel-generator": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
      +      "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
      +      "requires": {
      +        "babel-messages": "6.23.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "detect-indent": "4.0.0",
      +        "jsesc": "1.3.0",
      +        "lodash": "4.17.4",
      +        "source-map": "0.5.7",
      +        "trim-right": "1.0.1"
      +      }
      +    },
      +    "babel-helper-bindify-decorators": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz",
      +      "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-builder-binary-assignment-operator-visitor": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
      +      "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
      +      "requires": {
      +        "babel-helper-explode-assignable-expression": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-builder-react-jsx": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz",
      +      "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "esutils": "2.0.2"
      +      }
      +    },
      +    "babel-helper-call-delegate": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
      +      "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
      +      "requires": {
      +        "babel-helper-hoist-variables": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-define-map": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
      +      "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
      +      "requires": {
      +        "babel-helper-function-name": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "babel-helper-explode-assignable-expression": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
      +      "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-explode-class": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz",
      +      "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=",
      +      "requires": {
      +        "babel-helper-bindify-decorators": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-function-name": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
      +      "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
      +      "requires": {
      +        "babel-helper-get-function-arity": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-get-function-arity": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
      +      "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-hoist-variables": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
      +      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-optimise-call-expression": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
      +      "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-regex": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
      +      "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "babel-helper-remap-async-to-generator": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
      +      "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
      +      "requires": {
      +        "babel-helper-function-name": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helper-replace-supers": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
      +      "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
      +      "requires": {
      +        "babel-helper-optimise-call-expression": "6.24.1",
      +        "babel-messages": "6.23.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-helpers": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
      +      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-loader": {
      +      "version": "6.4.1",
      +      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz",
      +      "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=",
      +      "requires": {
      +        "find-cache-dir": "0.1.1",
      +        "loader-utils": "0.2.17",
      +        "mkdirp": "0.5.1",
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "babel-messages": {
      +      "version": "6.23.0",
      +      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
      +      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-add-module-exports": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz",
      +      "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU="
      +    },
      +    "babel-plugin-check-es2015-constants": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
      +      "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-syntax-async-functions": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
      +      "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU="
      +    },
      +    "babel-plugin-syntax-async-generators": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz",
      +      "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o="
      +    },
      +    "babel-plugin-syntax-class-constructor-call": {
      +      "version": "6.18.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz",
      +      "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY="
      +    },
      +    "babel-plugin-syntax-class-properties": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
      +      "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94="
      +    },
      +    "babel-plugin-syntax-decorators": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
      +      "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs="
      +    },
      +    "babel-plugin-syntax-do-expressions": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz",
      +      "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0="
      +    },
      +    "babel-plugin-syntax-dynamic-import": {
      +      "version": "6.18.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
      +      "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
      +    },
      +    "babel-plugin-syntax-exponentiation-operator": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
      +      "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4="
      +    },
      +    "babel-plugin-syntax-export-extensions": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz",
      +      "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE="
      +    },
      +    "babel-plugin-syntax-flow": {
      +      "version": "6.18.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz",
      +      "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0="
      +    },
      +    "babel-plugin-syntax-function-bind": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz",
      +      "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y="
      +    },
      +    "babel-plugin-syntax-jsx": {
      +      "version": "6.18.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
      +      "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
      +    },
      +    "babel-plugin-syntax-object-rest-spread": {
      +      "version": "6.13.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
      +      "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U="
      +    },
      +    "babel-plugin-syntax-trailing-function-commas": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
      +      "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM="
      +    },
      +    "babel-plugin-transform-amd-system-wrapper": {
      +      "version": "0.3.7",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-amd-system-wrapper/-/babel-plugin-transform-amd-system-wrapper-0.3.7.tgz",
      +      "integrity": "sha1-Uhx4LTVkRJHJeepoPopeHK/wukI=",
      +      "optional": true,
      +      "requires": {
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-async-generator-functions": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
      +      "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
      +      "requires": {
      +        "babel-helper-remap-async-to-generator": "6.24.1",
      +        "babel-plugin-syntax-async-generators": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-async-to-generator": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
      +      "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
      +      "requires": {
      +        "babel-helper-remap-async-to-generator": "6.24.1",
      +        "babel-plugin-syntax-async-functions": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-cjs-system-wrapper": {
      +      "version": "0.6.2",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.6.2.tgz",
      +      "integrity": "sha1-vXSUd1KJQk/0k7btRV3klb1xuh0=",
      +      "optional": true,
      +      "requires": {
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-class-constructor-call": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz",
      +      "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=",
      +      "requires": {
      +        "babel-plugin-syntax-class-constructor-call": "6.18.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-class-properties": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
      +      "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
      +      "requires": {
      +        "babel-helper-function-name": "6.24.1",
      +        "babel-plugin-syntax-class-properties": "6.13.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-decorators": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz",
      +      "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=",
      +      "requires": {
      +        "babel-helper-explode-class": "6.24.1",
      +        "babel-plugin-syntax-decorators": "6.13.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-do-expressions": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz",
      +      "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=",
      +      "requires": {
      +        "babel-plugin-syntax-do-expressions": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-arrow-functions": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
      +      "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-block-scoped-functions": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
      +      "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-block-scoping": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
      +      "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-classes": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
      +      "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
      +      "requires": {
      +        "babel-helper-define-map": "6.26.0",
      +        "babel-helper-function-name": "6.24.1",
      +        "babel-helper-optimise-call-expression": "6.24.1",
      +        "babel-helper-replace-supers": "6.24.1",
      +        "babel-messages": "6.23.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-computed-properties": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
      +      "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-destructuring": {
      +      "version": "6.23.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
      +      "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-duplicate-keys": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
      +      "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-for-of": {
      +      "version": "6.23.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
      +      "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-function-name": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
      +      "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
      +      "requires": {
      +        "babel-helper-function-name": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-literals": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
      +      "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-modules-amd": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
      +      "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
      +      "requires": {
      +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-modules-commonjs": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz",
      +      "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=",
      +      "requires": {
      +        "babel-plugin-transform-strict-mode": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-modules-systemjs": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
      +      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
      +      "requires": {
      +        "babel-helper-hoist-variables": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-modules-umd": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
      +      "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
      +      "requires": {
      +        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-object-super": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
      +      "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
      +      "requires": {
      +        "babel-helper-replace-supers": "6.24.1",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-parameters": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
      +      "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
      +      "requires": {
      +        "babel-helper-call-delegate": "6.24.1",
      +        "babel-helper-get-function-arity": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-template": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-shorthand-properties": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
      +      "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-spread": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
      +      "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-sticky-regex": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
      +      "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
      +      "requires": {
      +        "babel-helper-regex": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-template-literals": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
      +      "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-typeof-symbol": {
      +      "version": "6.23.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
      +      "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es2015-unicode-regex": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
      +      "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
      +      "requires": {
      +        "babel-helper-regex": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "regexpu-core": "2.0.0"
      +      }
      +    },
      +    "babel-plugin-transform-es3-member-expression-literals": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz",
      +      "integrity": "sha1-cz00RPPsxBvvjtGmpOCWV7iWnrs=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-es3-property-literals": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz",
      +      "integrity": "sha1-sgeNWELiKr9A9z6M3pzTcRq9V1g=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-exponentiation-operator": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
      +      "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
      +      "requires": {
      +        "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
      +        "babel-plugin-syntax-exponentiation-operator": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-export-extensions": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz",
      +      "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=",
      +      "requires": {
      +        "babel-plugin-syntax-export-extensions": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-flow-strip-types": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
      +      "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
      +      "requires": {
      +        "babel-plugin-syntax-flow": "6.18.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-function-bind": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz",
      +      "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=",
      +      "requires": {
      +        "babel-plugin-syntax-function-bind": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-global-system-wrapper": {
      +      "version": "0.3.4",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.3.4.tgz",
      +      "integrity": "sha1-lI3X0p/CFEfjm9NEfy3rx/L3Oqw=",
      +      "optional": true,
      +      "requires": {
      +        "babel-template": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-object-assign": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz",
      +      "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-object-rest-spread": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
      +      "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
      +      "requires": {
      +        "babel-plugin-syntax-object-rest-spread": "6.13.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-react-display-name": {
      +      "version": "6.25.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz",
      +      "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-react-jsx": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz",
      +      "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
      +      "requires": {
      +        "babel-helper-builder-react-jsx": "6.26.0",
      +        "babel-plugin-syntax-jsx": "6.18.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-react-jsx-self": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz",
      +      "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=",
      +      "requires": {
      +        "babel-plugin-syntax-jsx": "6.18.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-react-jsx-source": {
      +      "version": "6.22.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
      +      "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
      +      "requires": {
      +        "babel-plugin-syntax-jsx": "6.18.0",
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-regenerator": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
      +      "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
      +      "requires": {
      +        "regenerator-transform": "0.10.1"
      +      }
      +    },
      +    "babel-plugin-transform-strict-mode": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
      +      "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0"
      +      }
      +    },
      +    "babel-plugin-transform-system-register": {
      +      "version": "0.0.1",
      +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz",
      +      "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=",
      +      "optional": true
      +    },
      +    "babel-polyfill": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
      +      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "core-js": "2.5.1",
      +        "regenerator-runtime": "0.10.5"
      +      },
      +      "dependencies": {
      +        "regenerator-runtime": {
      +          "version": "0.10.5",
      +          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
      +          "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
      +        }
      +      }
      +    },
      +    "babel-preset-env": {
      +      "version": "1.6.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz",
      +      "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==",
      +      "requires": {
      +        "babel-plugin-check-es2015-constants": "6.22.0",
      +        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
      +        "babel-plugin-transform-async-to-generator": "6.24.1",
      +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
      +        "babel-plugin-transform-es2015-classes": "6.24.1",
      +        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-destructuring": "6.23.0",
      +        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
      +        "babel-plugin-transform-es2015-for-of": "6.23.0",
      +        "babel-plugin-transform-es2015-function-name": "6.24.1",
      +        "babel-plugin-transform-es2015-literals": "6.22.0",
      +        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
      +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
      +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
      +        "babel-plugin-transform-es2015-modules-umd": "6.24.1",
      +        "babel-plugin-transform-es2015-object-super": "6.24.1",
      +        "babel-plugin-transform-es2015-parameters": "6.24.1",
      +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-spread": "6.22.0",
      +        "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
      +        "babel-plugin-transform-es2015-template-literals": "6.22.0",
      +        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
      +        "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
      +        "babel-plugin-transform-exponentiation-operator": "6.24.1",
      +        "babel-plugin-transform-regenerator": "6.26.0",
      +        "browserslist": "2.9.1",
      +        "invariant": "2.2.2",
      +        "semver": "5.4.1"
      +      }
      +    },
      +    "babel-preset-es2015": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
      +      "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=",
      +      "requires": {
      +        "babel-plugin-check-es2015-constants": "6.22.0",
      +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
      +        "babel-plugin-transform-es2015-classes": "6.24.1",
      +        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-destructuring": "6.23.0",
      +        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
      +        "babel-plugin-transform-es2015-for-of": "6.23.0",
      +        "babel-plugin-transform-es2015-function-name": "6.24.1",
      +        "babel-plugin-transform-es2015-literals": "6.22.0",
      +        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
      +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
      +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
      +        "babel-plugin-transform-es2015-modules-umd": "6.24.1",
      +        "babel-plugin-transform-es2015-object-super": "6.24.1",
      +        "babel-plugin-transform-es2015-parameters": "6.24.1",
      +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-spread": "6.22.0",
      +        "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
      +        "babel-plugin-transform-es2015-template-literals": "6.22.0",
      +        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
      +        "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
      +        "babel-plugin-transform-regenerator": "6.26.0"
      +      }
      +    },
      +    "babel-preset-fbjs": {
      +      "version": "2.1.4",
      +      "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-2.1.4.tgz",
      +      "integrity": "sha512-6XVQwlO26V5/0P9s2Eje8Epqkv/ihaMJ798+W98ktOA8fCn2IFM6wEi7CDW3fTbKFZ/8fDGvGZH01B6GSuNiWA==",
      +      "requires": {
      +        "babel-plugin-check-es2015-constants": "6.22.0",
      +        "babel-plugin-syntax-class-properties": "6.13.0",
      +        "babel-plugin-syntax-flow": "6.18.0",
      +        "babel-plugin-syntax-jsx": "6.18.0",
      +        "babel-plugin-syntax-object-rest-spread": "6.13.0",
      +        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
      +        "babel-plugin-transform-class-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
      +        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
      +        "babel-plugin-transform-es2015-classes": "6.24.1",
      +        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-destructuring": "6.23.0",
      +        "babel-plugin-transform-es2015-for-of": "6.23.0",
      +        "babel-plugin-transform-es2015-function-name": "6.24.1",
      +        "babel-plugin-transform-es2015-literals": "6.22.0",
      +        "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
      +        "babel-plugin-transform-es2015-object-super": "6.24.1",
      +        "babel-plugin-transform-es2015-parameters": "6.24.1",
      +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
      +        "babel-plugin-transform-es2015-spread": "6.22.0",
      +        "babel-plugin-transform-es2015-template-literals": "6.22.0",
      +        "babel-plugin-transform-es3-member-expression-literals": "6.22.0",
      +        "babel-plugin-transform-es3-property-literals": "6.22.0",
      +        "babel-plugin-transform-flow-strip-types": "6.22.0",
      +        "babel-plugin-transform-object-rest-spread": "6.26.0",
      +        "babel-plugin-transform-react-display-name": "6.25.0",
      +        "babel-plugin-transform-react-jsx": "6.24.1"
      +      }
      +    },
      +    "babel-preset-flow": {
      +      "version": "6.23.0",
      +      "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz",
      +      "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=",
      +      "requires": {
      +        "babel-plugin-transform-flow-strip-types": "6.22.0"
      +      }
      +    },
      +    "babel-preset-react": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz",
      +      "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=",
      +      "requires": {
      +        "babel-plugin-syntax-jsx": "6.18.0",
      +        "babel-plugin-transform-react-display-name": "6.25.0",
      +        "babel-plugin-transform-react-jsx": "6.24.1",
      +        "babel-plugin-transform-react-jsx-self": "6.22.0",
      +        "babel-plugin-transform-react-jsx-source": "6.22.0",
      +        "babel-preset-flow": "6.23.0"
      +      }
      +    },
      +    "babel-preset-stage-0": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz",
      +      "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=",
      +      "requires": {
      +        "babel-plugin-transform-do-expressions": "6.22.0",
      +        "babel-plugin-transform-function-bind": "6.22.0",
      +        "babel-preset-stage-1": "6.24.1"
      +      }
      +    },
      +    "babel-preset-stage-1": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz",
      +      "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=",
      +      "requires": {
      +        "babel-plugin-transform-class-constructor-call": "6.24.1",
      +        "babel-plugin-transform-export-extensions": "6.22.0",
      +        "babel-preset-stage-2": "6.24.1"
      +      }
      +    },
      +    "babel-preset-stage-2": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz",
      +      "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=",
      +      "requires": {
      +        "babel-plugin-syntax-dynamic-import": "6.18.0",
      +        "babel-plugin-transform-class-properties": "6.24.1",
      +        "babel-plugin-transform-decorators": "6.24.1",
      +        "babel-preset-stage-3": "6.24.1"
      +      }
      +    },
      +    "babel-preset-stage-3": {
      +      "version": "6.24.1",
      +      "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz",
      +      "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=",
      +      "requires": {
      +        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
      +        "babel-plugin-transform-async-generator-functions": "6.24.1",
      +        "babel-plugin-transform-async-to-generator": "6.24.1",
      +        "babel-plugin-transform-exponentiation-operator": "6.24.1",
      +        "babel-plugin-transform-object-rest-spread": "6.26.0"
      +      }
      +    },
      +    "babel-register": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
      +      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
      +      "requires": {
      +        "babel-core": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "core-js": "2.5.1",
      +        "home-or-tmp": "2.0.0",
      +        "lodash": "4.17.4",
      +        "mkdirp": "0.5.1",
      +        "source-map-support": "0.4.18"
      +      }
      +    },
      +    "babel-runtime": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
      +      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
      +      "requires": {
      +        "core-js": "2.5.1",
      +        "regenerator-runtime": "0.11.0"
      +      }
      +    },
      +    "babel-template": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
      +      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "babylon": "6.18.0",
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "babel-traverse": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
      +      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
      +      "requires": {
      +        "babel-code-frame": "6.26.0",
      +        "babel-messages": "6.23.0",
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "babylon": "6.18.0",
      +        "debug": "2.6.9",
      +        "globals": "9.18.0",
      +        "invariant": "2.2.2",
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "babel-types": {
      +      "version": "6.26.0",
      +      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
      +      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "esutils": "2.0.2",
      +        "lodash": "4.17.4",
      +        "to-fast-properties": "1.0.3"
      +      }
      +    },
      +    "babylon": {
      +      "version": "6.18.0",
      +      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
      +      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
      +    },
      +    "backo2": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
      +      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
      +    },
      +    "bail": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz",
      +      "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q="
      +    },
      +    "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": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "base-64": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
      +      "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs="
      +    },
      +    "base64-arraybuffer": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
      +      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
      +    },
      +    "base64-js": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
      +      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw=="
      +    },
      +    "base64id": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
      +      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
      +    },
      +    "basename": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/basename/-/basename-0.1.2.tgz",
      +      "integrity": "sha1-1gOb75OYYxYMeASMztPF5/iMsmE="
      +    },
      +    "bash-glob": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/bash-glob/-/bash-glob-1.0.2.tgz",
      +      "integrity": "sha512-E0TTxH9T/tklSXt5R5X0zwxjW56su2VIE+sAruXbd8AtMjYZxtvioybVdptbRk0/0Nvdz0TVVShKhN9sH5dMpg==",
      +      "requires": {
      +        "async-each": "1.0.1",
      +        "bash-path": "1.0.3",
      +        "component-emitter": "1.2.1",
      +        "cross-spawn": "5.1.0",
      +        "extend-shallow": "2.0.1",
      +        "is-extglob": "2.1.1",
      +        "is-glob": "4.0.0"
      +      },
      +      "dependencies": {
      +        "is-extglob": {
      +          "version": "2.1.1",
      +          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
      +          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
      +        },
      +        "is-glob": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
      +          "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
      +          "requires": {
      +            "is-extglob": "2.1.1"
      +          }
      +        }
      +      }
      +    },
      +    "bash-path": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/bash-path/-/bash-path-1.0.3.tgz",
      +      "integrity": "sha512-mGrYvOa6yTY/qNCiZkPFJqWmODK68y6kmVRAJ1NNbWlNoJrUrsFxu7FU2EKg7gbrer6ttrKkF2s/E/lhRy7/OA==",
      +      "requires": {
      +        "arr-union": "3.1.0",
      +        "is-windows": "1.0.1"
      +      },
      +      "dependencies": {
      +        "is-windows": {
      +          "version": "1.0.1",
      +          "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz",
      +          "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk="
      +        }
      +      }
      +    },
      +    "basic-auth": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
      +      "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
      +      "requires": {
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "batch": {
      +      "version": "0.6.1",
      +      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
      +      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
      +    },
      +    "bcrypt-pbkdf": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
      +      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
      +      "optional": true,
      +      "requires": {
      +        "tweetnacl": "0.14.5"
      +      }
      +    },
      +    "better-assert": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
      +      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
      +      "requires": {
      +        "callsite": "1.0.0"
      +      }
      +    },
      +    "big.js": {
      +      "version": "3.2.0",
      +      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
      +      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
      +    },
      +    "binary-extensions": {
      +      "version": "1.11.0",
      +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
      +      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="
      +    },
      +    "bl": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
      +      "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
      +      "requires": {
      +        "readable-stream": "2.3.3"
      +      }
      +    },
      +    "blob": {
      +      "version": "0.0.4",
      +      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
      +      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE="
      +    },
      +    "bluebird": {
      +      "version": "3.5.1",
      +      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
      +      "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
      +    },
      +    "bn.js": {
      +      "version": "4.11.8",
      +      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
      +      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
      +    },
      +    "body-parser": {
      +      "version": "1.18.2",
      +      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
      +      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
      +      "requires": {
      +        "bytes": "3.0.0",
      +        "content-type": "1.0.4",
      +        "debug": "2.6.9",
      +        "depd": "1.1.1",
      +        "http-errors": "1.6.2",
      +        "iconv-lite": "0.4.19",
      +        "on-finished": "2.3.0",
      +        "qs": "6.5.1",
      +        "raw-body": "2.3.2",
      +        "type-is": "1.6.15"
      +      }
      +    },
      +    "boolbase": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
      +      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
      +    },
      +    "boom": {
      +      "version": "4.3.1",
      +      "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
      +      "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
      +      "requires": {
      +        "hoek": "4.2.0"
      +      }
      +    },
      +    "bowser": {
      +      "version": "1.8.1",
      +      "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.8.1.tgz",
      +      "integrity": "sha512-NMPaR8ILtdLSWzxQtEs16XbxMcY8ohWGQ5V+TZSJS3fNUt/PBAGkF6YWO9B/4qWE23bK3o0moQKq8UyFEosYkA=="
      +    },
      +    "boxen": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.2.2.tgz",
      +      "integrity": "sha1-Px1AMsMP/qnUsCwyLq8up0HcvOU=",
      +      "requires": {
      +        "ansi-align": "2.0.0",
      +        "camelcase": "4.1.0",
      +        "chalk": "2.3.0",
      +        "cli-boxes": "1.0.0",
      +        "string-width": "2.1.1",
      +        "term-size": "1.2.0",
      +        "widest-line": "1.0.0"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "brace-expansion": {
      +      "version": "1.1.8",
      +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
      +      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
      +      "requires": {
      +        "balanced-match": "1.0.0",
      +        "concat-map": "0.0.1"
      +      }
      +    },
      +    "braces": {
      +      "version": "1.8.5",
      +      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
      +      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
      +      "requires": {
      +        "expand-range": "1.8.2",
      +        "preserve": "0.2.0",
      +        "repeat-element": "1.1.2"
      +      }
      +    },
      +    "brorand": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
      +      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
      +    },
      +    "browserify-aes": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz",
      +      "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==",
      +      "requires": {
      +        "buffer-xor": "1.0.3",
      +        "cipher-base": "1.0.4",
      +        "create-hash": "1.1.3",
      +        "evp_bytestokey": "1.0.3",
      +        "inherits": "2.0.3",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "browserify-cipher": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
      +      "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
      +      "requires": {
      +        "browserify-aes": "1.1.1",
      +        "browserify-des": "1.0.0",
      +        "evp_bytestokey": "1.0.3"
      +      }
      +    },
      +    "browserify-des": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
      +      "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
      +      "requires": {
      +        "cipher-base": "1.0.4",
      +        "des.js": "1.0.0",
      +        "inherits": "2.0.3"
      +      }
      +    },
      +    "browserify-rsa": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
      +      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "randombytes": "2.0.5"
      +      }
      +    },
      +    "browserify-sign": {
      +      "version": "4.0.4",
      +      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
      +      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "browserify-rsa": "4.0.1",
      +        "create-hash": "1.1.3",
      +        "create-hmac": "1.1.6",
      +        "elliptic": "6.4.0",
      +        "inherits": "2.0.3",
      +        "parse-asn1": "5.1.0"
      +      }
      +    },
      +    "browserify-zlib": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
      +      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
      +      "requires": {
      +        "pako": "1.0.6"
      +      }
      +    },
      +    "browserslist": {
      +      "version": "2.9.1",
      +      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.9.1.tgz",
      +      "integrity": "sha512-3n3nPdbUqn3nWmsy4PeSQthz2ja1ndpoXta+dwFFNhveGjMg6FXpWYe12vsTpNoXJbzx3j7GZXdtoVIdvh3JbA==",
      +      "requires": {
      +        "caniuse-lite": "1.0.30000777",
      +        "electron-to-chromium": "1.3.27"
      +      }
      +    },
      +    "bser": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz",
      +      "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
      +      "requires": {
      +        "node-int64": "0.4.0"
      +      }
      +    },
      +    "buffer": {
      +      "version": "4.9.1",
      +      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
      +      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
      +      "requires": {
      +        "base64-js": "1.2.1",
      +        "ieee754": "1.1.8",
      +        "isarray": "1.0.0"
      +      }
      +    },
      +    "buffer-alloc": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz",
      +      "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=",
      +      "requires": {
      +        "buffer-alloc-unsafe": "0.1.1",
      +        "buffer-fill": "0.1.0"
      +      }
      +    },
      +    "buffer-alloc-unsafe": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz",
      +      "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo="
      +    },
      +    "buffer-fill": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.0.tgz",
      +      "integrity": "sha1-ypRw6NTRuXf9dUP04qtqfclRAag="
      +    },
      +    "buffer-peek-stream": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/buffer-peek-stream/-/buffer-peek-stream-1.0.1.tgz",
      +      "integrity": "sha1-U7R1cKE0d4fFutTKLKMCH52LPP0=",
      +      "optional": true
      +    },
      +    "buffer-xor": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
      +      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
      +    },
      +    "builtin-modules": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
      +      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
      +    },
      +    "builtin-status-codes": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
      +      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
      +    },
      +    "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"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "call-me-maybe": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
      +      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
      +    },
      +    "callsite": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
      +      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
      +    },
      +    "camelcase": {
      +      "version": "4.1.0",
      +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
      +      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
      +    },
      +    "caniuse-api": {
      +      "version": "1.6.1",
      +      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
      +      "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
      +      "requires": {
      +        "browserslist": "1.7.7",
      +        "caniuse-db": "1.0.30000777",
      +        "lodash.memoize": "4.1.2",
      +        "lodash.uniq": "4.5.0"
      +      },
      +      "dependencies": {
      +        "browserslist": {
      +          "version": "1.7.7",
      +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
      +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
      +          "requires": {
      +            "caniuse-db": "1.0.30000777",
      +            "electron-to-chromium": "1.3.27"
      +          }
      +        }
      +      }
      +    },
      +    "caniuse-db": {
      +      "version": "1.0.30000777",
      +      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000777.tgz",
      +      "integrity": "sha1-LhmtumO918UB32N6hirerX9LwFQ="
      +    },
      +    "caniuse-lite": {
      +      "version": "1.0.30000777",
      +      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000777.tgz",
      +      "integrity": "sha1-McGKSozUl4LrswXI6Kk+azs+TxM="
      +    },
      +    "capture-stack-trace": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
      +      "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0="
      +    },
      +    "caseless": {
      +      "version": "0.12.0",
      +      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
      +      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
      +    },
      +    "ccount": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz",
      +      "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok="
      +    },
      +    "center-align": {
      +      "version": "0.1.3",
      +      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
      +      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
      +      "requires": {
      +        "align-text": "0.1.4",
      +        "lazy-cache": "1.0.4"
      +      }
      +    },
      +    "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.5",
      +        "has-ansi": "2.0.0",
      +        "strip-ansi": "3.0.1",
      +        "supports-color": "2.0.0"
      +      }
      +    },
      +    "character-entities": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz",
      +      "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco="
      +    },
      +    "character-entities-html4": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz",
      +      "integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA="
      +    },
      +    "character-entities-legacy": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz",
      +      "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8="
      +    },
      +    "character-reference-invalid": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz",
      +      "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw="
      +    },
      +    "chardet": {
      +      "version": "0.4.2",
      +      "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
      +      "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
      +    },
      +    "charenc": {
      +      "version": "0.0.2",
      +      "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
      +      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
      +    },
      +    "cheerio": {
      +      "version": "0.22.0",
      +      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
      +      "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
      +      "requires": {
      +        "css-select": "1.2.0",
      +        "dom-serializer": "0.1.0",
      +        "entities": "1.1.1",
      +        "htmlparser2": "3.9.2",
      +        "lodash.assignin": "4.2.0",
      +        "lodash.bind": "4.2.1",
      +        "lodash.defaults": "4.2.0",
      +        "lodash.filter": "4.6.0",
      +        "lodash.flatten": "4.4.0",
      +        "lodash.foreach": "4.5.0",
      +        "lodash.map": "4.6.0",
      +        "lodash.merge": "4.6.0",
      +        "lodash.pick": "4.4.0",
      +        "lodash.reduce": "4.6.0",
      +        "lodash.reject": "4.6.0",
      +        "lodash.some": "4.6.0"
      +      },
      +      "dependencies": {
      +        "domhandler": {
      +          "version": "2.4.1",
      +          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz",
      +          "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=",
      +          "requires": {
      +            "domelementtype": "1.3.0"
      +          }
      +        },
      +        "htmlparser2": {
      +          "version": "3.9.2",
      +          "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
      +          "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
      +          "requires": {
      +            "domelementtype": "1.3.0",
      +            "domhandler": "2.4.1",
      +            "domutils": "1.5.1",
      +            "entities": "1.1.1",
      +            "inherits": "2.0.3",
      +            "readable-stream": "2.3.3"
      +          }
      +        }
      +      }
      +    },
      +    "chokidar": {
      +      "version": "1.7.0",
      +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
      +      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
      +      "requires": {
      +        "anymatch": "1.3.2",
      +        "async-each": "1.0.1",
      +        "glob-parent": "2.0.0",
      +        "inherits": "2.0.3",
      +        "is-binary-path": "1.0.1",
      +        "is-glob": "2.0.1",
      +        "path-is-absolute": "1.0.1",
      +        "readdirp": "2.1.0"
      +      }
      +    },
      +    "chownr": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
      +      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
      +    },
      +    "chunk-manifest-webpack-plugin": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/chunk-manifest-webpack-plugin/-/chunk-manifest-webpack-plugin-0.1.0.tgz",
      +      "integrity": "sha1-YThIj8Id2rTM+3wcEdUbuAqUMYY=",
      +      "requires": {
      +        "webpack-core": "0.4.8"
      +      }
      +    },
      +    "ci-info": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz",
      +      "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA=="
      +    },
      +    "cipher-base": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
      +      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "clap": {
      +      "version": "1.2.3",
      +      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
      +      "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
      +      "requires": {
      +        "chalk": "1.1.3"
      +      }
      +    },
      +    "class-utils": {
      +      "version": "0.3.5",
      +      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz",
      +      "integrity": "sha1-F+eTEDdQ+WJ7IXbqNM/RtWWQPIA=",
      +      "requires": {
      +        "arr-union": "3.1.0",
      +        "define-property": "0.2.5",
      +        "isobject": "3.0.1",
      +        "lazy-cache": "2.0.2",
      +        "static-extend": "0.1.2"
      +      },
      +      "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.6"
      +          }
      +        },
      +        "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.1.0"
      +          }
      +        },
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        },
      +        "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=="
      +        },
      +        "lazy-cache": {
      +          "version": "2.0.2",
      +          "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
      +          "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
      +          "requires": {
      +            "set-getter": "0.1.0"
      +          }
      +        }
      +      }
      +    },
      +    "cli-boxes": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
      +      "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM="
      +    },
      +    "cli-cursor": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
      +      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
      +      "requires": {
      +        "restore-cursor": "2.0.0"
      +      }
      +    },
      +    "cli-width": {
      +      "version": "2.2.0",
      +      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
      +      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
      +    },
      +    "clipboard": {
      +      "version": "1.7.1",
      +      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz",
      +      "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=",
      +      "optional": true,
      +      "requires": {
      +        "good-listener": "1.2.2",
      +        "select": "1.1.2",
      +        "tiny-emitter": "2.0.2"
      +      }
      +    },
      +    "clipboardy": {
      +      "version": "1.1.4",
      +      "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.1.4.tgz",
      +      "integrity": "sha1-UbF1dPxoJYji3Slc+m5qoQnqte4=",
      +      "requires": {
      +        "execa": "0.6.3"
      +      },
      +      "dependencies": {
      +        "execa": {
      +          "version": "0.6.3",
      +          "resolved": "https://registry.npmjs.org/execa/-/execa-0.6.3.tgz",
      +          "integrity": "sha1-V7aaWU8IF1nGnlNw8NF7nLEWWP4=",
      +          "requires": {
      +            "cross-spawn": "5.1.0",
      +            "get-stream": "3.0.0",
      +            "is-stream": "1.1.0",
      +            "npm-run-path": "2.0.2",
      +            "p-finally": "1.0.0",
      +            "signal-exit": "3.0.2",
      +            "strip-eof": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "cliui": {
      +      "version": "3.2.0",
      +      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
      +      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
      +      "requires": {
      +        "string-width": "1.0.2",
      +        "strip-ansi": "3.0.1",
      +        "wrap-ansi": "2.1.0"
      +      },
      +      "dependencies": {
      +        "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.1.0",
      +            "is-fullwidth-code-point": "1.0.0",
      +            "strip-ansi": "3.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "clone": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
      +      "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8="
      +    },
      +    "co": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
      +      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
      +    },
      +    "coa": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
      +      "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
      +      "requires": {
      +        "q": "1.5.1"
      +      }
      +    },
      +    "code-point-at": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
      +      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
      +    },
      +    "coffee-script": {
      +      "version": "1.12.7",
      +      "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
      +      "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw=="
      +    },
      +    "collapse-white-space": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz",
      +      "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw="
      +    },
      +    "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.1"
      +      }
      +    },
      +    "color": {
      +      "version": "0.11.4",
      +      "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
      +      "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
      +      "requires": {
      +        "clone": "1.0.3",
      +        "color-convert": "1.9.1",
      +        "color-string": "0.3.0"
      +      }
      +    },
      +    "color-convert": {
      +      "version": "1.9.1",
      +      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
      +      "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
      +      "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-string": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
      +      "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
      +      "requires": {
      +        "color-name": "1.1.3"
      +      }
      +    },
      +    "colormin": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
      +      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
      +      "requires": {
      +        "color": "0.11.4",
      +        "css-color-names": "0.0.4",
      +        "has": "1.0.1"
      +      }
      +    },
      +    "colors": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
      +      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
      +    },
      +    "combined-stream": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
      +      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
      +      "requires": {
      +        "delayed-stream": "1.0.0"
      +      }
      +    },
      +    "comma-separated-tokens": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.4.tgz",
      +      "integrity": "sha1-cgg+WNSkYvAYZvZhf02Yo807ikY=",
      +      "requires": {
      +        "trim": "0.0.1"
      +      }
      +    },
      +    "commander": {
      +      "version": "2.9.0",
      +      "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
      +      "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
      +      "requires": {
      +        "graceful-readlink": "1.0.1"
      +      }
      +    },
      +    "common-tags": {
      +      "version": "1.5.1",
      +      "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.5.1.tgz",
      +      "integrity": "sha512-NrUYGY5TApAk9KB+IZXkR3GR4tA3g26HDsoiGt4kCMHZ727gOGkC+UNfq0Z22jE15bLkc/6RV5Jw1RBW6Usg6A==",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "commondir": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
      +      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
      +    },
      +    "compass-vertical-rhythm": {
      +      "version": "1.3.1",
      +      "resolved": "https://registry.npmjs.org/compass-vertical-rhythm/-/compass-vertical-rhythm-1.3.1.tgz",
      +      "integrity": "sha1-YEf/2LILLcupNpjpCjRXBmKJNIg=",
      +      "requires": {
      +        "convert-css-length": "1.0.1",
      +        "object-assign": "4.1.1",
      +        "parse-unit": "1.0.1"
      +      }
      +    },
      +    "component-bind": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
      +      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
      +    },
      +    "component-emitter": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
      +      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
      +    },
      +    "component-inherit": {
      +      "version": "0.0.3",
      +      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
      +      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
      +    },
      +    "compressible": {
      +      "version": "2.0.12",
      +      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
      +      "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
      +      "requires": {
      +        "mime-db": "1.30.0"
      +      }
      +    },
      +    "compression": {
      +      "version": "1.7.1",
      +      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz",
      +      "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
      +      "requires": {
      +        "accepts": "1.3.4",
      +        "bytes": "3.0.0",
      +        "compressible": "2.0.12",
      +        "debug": "2.6.9",
      +        "on-headers": "1.0.1",
      +        "safe-buffer": "5.1.1",
      +        "vary": "1.1.2"
      +      }
      +    },
      +    "concat-map": {
      +      "version": "0.0.1",
      +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
      +      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
      +    },
      +    "configstore": {
      +      "version": "3.1.1",
      +      "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz",
      +      "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==",
      +      "requires": {
      +        "dot-prop": "4.2.0",
      +        "graceful-fs": "4.1.11",
      +        "make-dir": "1.1.0",
      +        "unique-string": "1.0.0",
      +        "write-file-atomic": "2.3.0",
      +        "xdg-basedir": "3.0.0"
      +      }
      +    },
      +    "connect-history-api-fallback": {
      +      "version": "1.5.0",
      +      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
      +      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo="
      +    },
      +    "console-browserify": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
      +      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
      +      "requires": {
      +        "date-now": "0.1.4"
      +      }
      +    },
      +    "console-polyfill": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz",
      +      "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA="
      +    },
      +    "constants-browserify": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
      +      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
      +    },
      +    "content-disposition": {
      +      "version": "0.5.2",
      +      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
      +      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
      +    },
      +    "content-type": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
      +      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
      +    },
      +    "convert-css-length": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.1.tgz",
      +      "integrity": "sha1-8+zsZk8uhzoFcOav3T4a5PkkRLc=",
      +      "requires": {
      +        "console-polyfill": "0.1.2",
      +        "parse-unit": "1.0.1"
      +      }
      +    },
      +    "convert-hrtime": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-2.0.0.tgz",
      +      "integrity": "sha1-Gb+yyRYvnhHC8Ewsed4rfoCVxic="
      +    },
      +    "convert-source-map": {
      +      "version": "1.5.1",
      +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
      +      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
      +    },
      +    "cookie": {
      +      "version": "0.3.1",
      +      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
      +      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
      +    },
      +    "cookie-signature": {
      +      "version": "1.0.6",
      +      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
      +      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
      +    },
      +    "copy-descriptor": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
      +      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
      +    },
      +    "copyfiles": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-1.2.0.tgz",
      +      "integrity": "sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw=",
      +      "requires": {
      +        "glob": "7.1.2",
      +        "ltcdr": "2.2.1",
      +        "minimatch": "3.0.4",
      +        "mkdirp": "0.5.1",
      +        "noms": "0.0.0",
      +        "through2": "2.0.3"
      +      }
      +    },
      +    "core-js": {
      +      "version": "2.5.1",
      +      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
      +      "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs="
      +    },
      +    "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="
      +    },
      +    "create-ecdh": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
      +      "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "elliptic": "6.4.0"
      +      }
      +    },
      +    "create-error-class": {
      +      "version": "3.0.2",
      +      "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
      +      "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
      +      "requires": {
      +        "capture-stack-trace": "1.0.0"
      +      }
      +    },
      +    "create-hash": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
      +      "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
      +      "requires": {
      +        "cipher-base": "1.0.4",
      +        "inherits": "2.0.3",
      +        "ripemd160": "2.0.1",
      +        "sha.js": "2.4.9"
      +      }
      +    },
      +    "create-hmac": {
      +      "version": "1.1.6",
      +      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
      +      "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
      +      "requires": {
      +        "cipher-base": "1.0.4",
      +        "create-hash": "1.1.3",
      +        "inherits": "2.0.3",
      +        "ripemd160": "2.0.1",
      +        "safe-buffer": "5.1.1",
      +        "sha.js": "2.4.9"
      +      }
      +    },
      +    "create-react-class": {
      +      "version": "15.6.2",
      +      "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz",
      +      "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=",
      +      "requires": {
      +        "fbjs": "0.8.16",
      +        "loose-envify": "1.3.1",
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "cross-env": {
      +      "version": "3.2.4",
      +      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-3.2.4.tgz",
      +      "integrity": "sha1-ngWF8neGTtQhznVvgamA/w1piro=",
      +      "requires": {
      +        "cross-spawn": "5.1.0",
      +        "is-windows": "1.0.1"
      +      },
      +      "dependencies": {
      +        "is-windows": {
      +          "version": "1.0.1",
      +          "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz",
      +          "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk="
      +        }
      +      }
      +    },
      +    "cross-spawn": {
      +      "version": "5.1.0",
      +      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
      +      "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
      +      "requires": {
      +        "lru-cache": "4.1.1",
      +        "shebang-command": "1.2.0",
      +        "which": "1.3.0"
      +      }
      +    },
      +    "crypt": {
      +      "version": "0.0.2",
      +      "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
      +      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
      +    },
      +    "cryptiles": {
      +      "version": "3.1.2",
      +      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
      +      "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
      +      "requires": {
      +        "boom": "5.2.0"
      +      },
      +      "dependencies": {
      +        "boom": {
      +          "version": "5.2.0",
      +          "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
      +          "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
      +          "requires": {
      +            "hoek": "4.2.0"
      +          }
      +        }
      +      }
      +    },
      +    "crypto-browserify": {
      +      "version": "3.12.0",
      +      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
      +      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
      +      "requires": {
      +        "browserify-cipher": "1.0.0",
      +        "browserify-sign": "4.0.4",
      +        "create-ecdh": "4.0.0",
      +        "create-hash": "1.1.3",
      +        "create-hmac": "1.1.6",
      +        "diffie-hellman": "5.0.2",
      +        "inherits": "2.0.3",
      +        "pbkdf2": "3.0.14",
      +        "public-encrypt": "4.0.0",
      +        "randombytes": "2.0.5",
      +        "randomfill": "1.0.3"
      +      }
      +    },
      +    "crypto-random-string": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
      +      "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
      +    },
      +    "css-color-function": {
      +      "version": "1.3.3",
      +      "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
      +      "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=",
      +      "requires": {
      +        "balanced-match": "0.1.0",
      +        "color": "0.11.4",
      +        "debug": "3.1.0",
      +        "rgb": "0.1.0"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.1.0",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
      +          "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo="
      +        },
      +        "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"
      +          }
      +        }
      +      }
      +    },
      +    "css-color-names": {
      +      "version": "0.0.4",
      +      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
      +      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA="
      +    },
      +    "css-in-js-utils": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz",
      +      "integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==",
      +      "requires": {
      +        "hyphenate-style-name": "1.0.2"
      +      }
      +    },
      +    "css-loader": {
      +      "version": "0.26.4",
      +      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.26.4.tgz",
      +      "integrity": "sha1-th6eMNuUMD5v/IkvEOzQmtAlof0=",
      +      "requires": {
      +        "babel-code-frame": "6.26.0",
      +        "css-selector-tokenizer": "0.7.0",
      +        "cssnano": "3.10.0",
      +        "loader-utils": "1.1.0",
      +        "lodash.camelcase": "4.3.0",
      +        "object-assign": "4.1.1",
      +        "postcss": "5.2.18",
      +        "postcss-modules-extract-imports": "1.1.0",
      +        "postcss-modules-local-by-default": "1.2.0",
      +        "postcss-modules-scope": "1.1.0",
      +        "postcss-modules-values": "1.3.0",
      +        "source-list-map": "0.1.8"
      +      },
      +      "dependencies": {
      +        "loader-utils": {
      +          "version": "1.1.0",
      +          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
      +          "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
      +          "requires": {
      +            "big.js": "3.2.0",
      +            "emojis-list": "2.1.0",
      +            "json5": "0.5.1"
      +          }
      +        }
      +      }
      +    },
      +    "css-select": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
      +      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
      +      "requires": {
      +        "boolbase": "1.0.0",
      +        "css-what": "2.1.0",
      +        "domutils": "1.5.1",
      +        "nth-check": "1.0.1"
      +      }
      +    },
      +    "css-selector-parser": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.3.0.tgz",
      +      "integrity": "sha1-XxrUPi2O77/cME/NOaUhZklD4+s="
      +    },
      +    "css-selector-tokenizer": {
      +      "version": "0.7.0",
      +      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
      +      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
      +      "requires": {
      +        "cssesc": "0.1.0",
      +        "fastparse": "1.1.1",
      +        "regexpu-core": "1.0.0"
      +      },
      +      "dependencies": {
      +        "regexpu-core": {
      +          "version": "1.0.0",
      +          "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
      +          "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
      +          "requires": {
      +            "regenerate": "1.3.3",
      +            "regjsgen": "0.2.0",
      +            "regjsparser": "0.1.5"
      +          }
      +        }
      +      }
      +    },
      +    "css-what": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
      +      "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0="
      +    },
      +    "cssesc": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
      +      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q="
      +    },
      +    "cssnano": {
      +      "version": "3.10.0",
      +      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
      +      "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
      +      "requires": {
      +        "autoprefixer": "6.7.7",
      +        "decamelize": "1.2.0",
      +        "defined": "1.0.0",
      +        "has": "1.0.1",
      +        "object-assign": "4.1.1",
      +        "postcss": "5.2.18",
      +        "postcss-calc": "5.3.1",
      +        "postcss-colormin": "2.2.2",
      +        "postcss-convert-values": "2.6.1",
      +        "postcss-discard-comments": "2.0.4",
      +        "postcss-discard-duplicates": "2.1.0",
      +        "postcss-discard-empty": "2.1.0",
      +        "postcss-discard-overridden": "0.1.1",
      +        "postcss-discard-unused": "2.2.3",
      +        "postcss-filter-plugins": "2.0.2",
      +        "postcss-merge-idents": "2.1.7",
      +        "postcss-merge-longhand": "2.0.2",
      +        "postcss-merge-rules": "2.1.2",
      +        "postcss-minify-font-values": "1.0.5",
      +        "postcss-minify-gradients": "1.0.5",
      +        "postcss-minify-params": "1.2.2",
      +        "postcss-minify-selectors": "2.1.1",
      +        "postcss-normalize-charset": "1.1.1",
      +        "postcss-normalize-url": "3.0.8",
      +        "postcss-ordered-values": "2.2.3",
      +        "postcss-reduce-idents": "2.4.0",
      +        "postcss-reduce-initial": "1.0.1",
      +        "postcss-reduce-transforms": "1.0.4",
      +        "postcss-svgo": "2.1.6",
      +        "postcss-unique-selectors": "2.0.2",
      +        "postcss-value-parser": "3.3.0",
      +        "postcss-zindex": "2.2.0"
      +      }
      +    },
      +    "csso": {
      +      "version": "2.3.2",
      +      "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
      +      "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
      +      "requires": {
      +        "clap": "1.2.3",
      +        "source-map": "0.5.7"
      +      }
      +    },
      +    "currently-unhandled": {
      +      "version": "0.4.1",
      +      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
      +      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
      +      "requires": {
      +        "array-find-index": "1.0.2"
      +      }
      +    },
      +    "d": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
      +      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
      +      "requires": {
      +        "es5-ext": "0.10.37"
      +      }
      +    },
      +    "dargs": {
      +      "version": "5.1.0",
      +      "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz",
      +      "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk="
      +    },
      +    "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": "0.0.4",
      +      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz",
      +      "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=",
      +      "optional": true
      +    },
      +    "date-now": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
      +      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs="
      +    },
      +    "death": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz",
      +      "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg="
      +    },
      +    "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="
      +    },
      +    "decompress-response": {
      +      "version": "3.3.0",
      +      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
      +      "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
      +      "requires": {
      +        "mimic-response": "1.0.0"
      +      }
      +    },
      +    "deep-equal": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
      +      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
      +    },
      +    "deep-extend": {
      +      "version": "0.4.2",
      +      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
      +      "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8="
      +    },
      +    "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.1"
      +      }
      +    },
      +    "defined": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
      +      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
      +    },
      +    "del": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
      +      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
      +      "requires": {
      +        "globby": "6.1.0",
      +        "is-path-cwd": "1.0.0",
      +        "is-path-in-cwd": "1.0.0",
      +        "p-map": "1.2.0",
      +        "pify": "3.0.0",
      +        "rimraf": "2.6.2"
      +      }
      +    },
      +    "delayed-stream": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
      +      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
      +    },
      +    "delegate": {
      +      "version": "3.2.0",
      +      "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
      +      "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
      +      "optional": true
      +    },
      +    "delegates": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
      +      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
      +    },
      +    "depd": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
      +      "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
      +    },
      +    "des.js": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
      +      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "minimalistic-assert": "1.0.0"
      +      }
      +    },
      +    "destroy": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
      +      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
      +    },
      +    "detab": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz",
      +      "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==",
      +      "requires": {
      +        "repeat-string": "1.6.1"
      +      }
      +    },
      +    "detect-file": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz",
      +      "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
      +      "requires": {
      +        "fs-exists-sync": "0.1.0"
      +      }
      +    },
      +    "detect-indent": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
      +      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
      +      "requires": {
      +        "repeating": "2.0.1"
      +      }
      +    },
      +    "detect-port": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.2.tgz",
      +      "integrity": "sha512-06H99JMCwgbYbA+codm97aBhFLAjABftetp+v+Z88Pvvlkawp2N+1bP/9J24+mihrvk9yBvUYTyIj3NixG1CsA==",
      +      "requires": {
      +        "address": "1.0.3",
      +        "debug": "2.6.9"
      +      }
      +    },
      +    "diffie-hellman": {
      +      "version": "5.0.2",
      +      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
      +      "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "miller-rabin": "4.0.1",
      +        "randombytes": "2.0.5"
      +      }
      +    },
      +    "dom-converter": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
      +      "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
      +      "requires": {
      +        "utila": "0.3.3"
      +      },
      +      "dependencies": {
      +        "utila": {
      +          "version": "0.3.3",
      +          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
      +          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY="
      +        }
      +      }
      +    },
      +    "dom-helpers": {
      +      "version": "3.2.1",
      +      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.2.1.tgz",
      +      "integrity": "sha1-MgPgf+0he9H0JLAZc1WC/Deyglo="
      +    },
      +    "dom-serializer": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
      +      "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
      +      "requires": {
      +        "domelementtype": "1.1.3",
      +        "entities": "1.1.1"
      +      },
      +      "dependencies": {
      +        "domelementtype": {
      +          "version": "1.1.3",
      +          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
      +          "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
      +        }
      +      }
      +    },
      +    "dom-walk": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
      +      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
      +    },
      +    "domain-browser": {
      +      "version": "1.1.7",
      +      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
      +      "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw="
      +    },
      +    "domelementtype": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
      +      "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
      +    },
      +    "domhandler": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
      +      "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
      +      "requires": {
      +        "domelementtype": "1.3.0"
      +      }
      +    },
      +    "domready": {
      +      "version": "1.0.8",
      +      "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz",
      +      "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw="
      +    },
      +    "domutils": {
      +      "version": "1.5.1",
      +      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
      +      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
      +      "requires": {
      +        "dom-serializer": "0.1.0",
      +        "domelementtype": "1.3.0"
      +      }
      +    },
      +    "dot-prop": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
      +      "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
      +      "requires": {
      +        "is-obj": "1.0.1"
      +      }
      +    },
      +    "dotenv": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
      +      "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0="
      +    },
      +    "duplexer": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
      +      "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
      +    },
      +    "duplexer3": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
      +      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
      +    },
      +    "ecc-jsbn": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
      +      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
      +      "optional": true,
      +      "requires": {
      +        "jsbn": "0.1.1"
      +      }
      +    },
      +    "ee-first": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
      +      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
      +    },
      +    "electron-to-chromium": {
      +      "version": "1.3.27",
      +      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz",
      +      "integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0="
      +    },
      +    "elliptic": {
      +      "version": "6.4.0",
      +      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
      +      "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "brorand": "1.1.0",
      +        "hash.js": "1.1.3",
      +        "hmac-drbg": "1.0.1",
      +        "inherits": "2.0.3",
      +        "minimalistic-assert": "1.0.0",
      +        "minimalistic-crypto-utils": "1.0.1"
      +      }
      +    },
      +    "emoji-regex": {
      +      "version": "6.1.1",
      +      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
      +      "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4="
      +    },
      +    "emojis-list": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
      +      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
      +    },
      +    "encodeurl": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
      +      "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
      +    },
      +    "encoding": {
      +      "version": "0.1.12",
      +      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
      +      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
      +      "requires": {
      +        "iconv-lite": "0.4.19"
      +      }
      +    },
      +    "end-of-stream": {
      +      "version": "1.4.0",
      +      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
      +      "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
      +      "requires": {
      +        "once": "1.4.0"
      +      }
      +    },
      +    "engine.io": {
      +      "version": "3.1.4",
      +      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.4.tgz",
      +      "integrity": "sha1-PQIRtwpVLOhB/8fahiezAamkFi4=",
      +      "requires": {
      +        "accepts": "1.3.3",
      +        "base64id": "1.0.0",
      +        "cookie": "0.3.1",
      +        "debug": "2.6.9",
      +        "engine.io-parser": "2.1.1",
      +        "uws": "0.14.5",
      +        "ws": "3.3.2"
      +      },
      +      "dependencies": {
      +        "accepts": {
      +          "version": "1.3.3",
      +          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
      +          "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
      +          "requires": {
      +            "mime-types": "2.1.17",
      +            "negotiator": "0.6.1"
      +          }
      +        },
      +        "ws": {
      +          "version": "3.3.2",
      +          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz",
      +          "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==",
      +          "requires": {
      +            "async-limiter": "1.0.0",
      +            "safe-buffer": "5.1.1",
      +            "ultron": "1.1.1"
      +          }
      +        }
      +      }
      +    },
      +    "engine.io-client": {
      +      "version": "3.1.4",
      +      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.4.tgz",
      +      "integrity": "sha1-T88TcLRxY70s6b4nM5ckMDUNTqE=",
      +      "requires": {
      +        "component-emitter": "1.2.1",
      +        "component-inherit": "0.0.3",
      +        "debug": "2.6.9",
      +        "engine.io-parser": "2.1.1",
      +        "has-cors": "1.1.0",
      +        "indexof": "0.0.1",
      +        "parseqs": "0.0.5",
      +        "parseuri": "0.0.5",
      +        "ws": "3.3.2",
      +        "xmlhttprequest-ssl": "1.5.4",
      +        "yeast": "0.1.2"
      +      },
      +      "dependencies": {
      +        "ws": {
      +          "version": "3.3.2",
      +          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz",
      +          "integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==",
      +          "requires": {
      +            "async-limiter": "1.0.0",
      +            "safe-buffer": "5.1.1",
      +            "ultron": "1.1.1"
      +          }
      +        }
      +      }
      +    },
      +    "engine.io-parser": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz",
      +      "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=",
      +      "requires": {
      +        "after": "0.8.2",
      +        "arraybuffer.slice": "0.0.6",
      +        "base64-arraybuffer": "0.1.5",
      +        "blob": "0.0.4",
      +        "has-binary2": "1.0.2"
      +      }
      +    },
      +    "enhanced-resolve": {
      +      "version": "0.9.1",
      +      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
      +      "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "memory-fs": "0.2.0",
      +        "tapable": "0.1.10"
      +      },
      +      "dependencies": {
      +        "memory-fs": {
      +          "version": "0.2.0",
      +          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
      +          "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA="
      +        }
      +      }
      +    },
      +    "entities": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
      +      "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
      +    },
      +    "err-code": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
      +      "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
      +      "optional": true
      +    },
      +    "errno": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
      +      "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
      +      "requires": {
      +        "prr": "0.0.0"
      +      }
      +    },
      +    "error-ex": {
      +      "version": "1.3.1",
      +      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
      +      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
      +      "requires": {
      +        "is-arrayish": "0.2.1"
      +      }
      +    },
      +    "error-stack-parser": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz",
      +      "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=",
      +      "requires": {
      +        "stackframe": "1.0.4"
      +      }
      +    },
      +    "es5-ext": {
      +      "version": "0.10.37",
      +      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
      +      "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
      +      "requires": {
      +        "es6-iterator": "2.0.3",
      +        "es6-symbol": "3.1.1"
      +      }
      +    },
      +    "es6-iterator": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
      +      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
      +      "requires": {
      +        "d": "1.0.0",
      +        "es5-ext": "0.10.37",
      +        "es6-symbol": "3.1.1"
      +      }
      +    },
      +    "es6-promise": {
      +      "version": "4.1.1",
      +      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
      +      "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng=="
      +    },
      +    "es6-symbol": {
      +      "version": "3.1.1",
      +      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
      +      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
      +      "requires": {
      +        "d": "1.0.0",
      +        "es5-ext": "0.10.37"
      +      }
      +    },
      +    "es6-template-strings": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz",
      +      "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=",
      +      "optional": true,
      +      "requires": {
      +        "es5-ext": "0.10.37",
      +        "esniff": "1.1.0"
      +      }
      +    },
      +    "escape-html": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
      +      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
      +    },
      +    "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="
      +    },
      +    "esniff": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz",
      +      "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=",
      +      "optional": true,
      +      "requires": {
      +        "d": "1.0.0",
      +        "es5-ext": "0.10.37"
      +      }
      +    },
      +    "esprima": {
      +      "version": "2.7.3",
      +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
      +      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE="
      +    },
      +    "esutils": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
      +      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
      +    },
      +    "etag": {
      +      "version": "1.8.1",
      +      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
      +      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
      +    },
      +    "eval": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.2.tgz",
      +      "integrity": "sha1-n3EDKEwQWmbfQDCysycxZYNwE9o=",
      +      "requires": {
      +        "require-like": "0.1.2"
      +      }
      +    },
      +    "eventemitter3": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
      +      "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg="
      +    },
      +    "events": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
      +      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
      +    },
      +    "eventsource": {
      +      "version": "0.1.6",
      +      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
      +      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
      +      "requires": {
      +        "original": "1.0.0"
      +      }
      +    },
      +    "evp_bytestokey": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
      +      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
      +      "requires": {
      +        "md5.js": "1.3.4",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "exec-sh": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
      +      "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==",
      +      "optional": true,
      +      "requires": {
      +        "merge": "1.2.0"
      +      }
      +    },
      +    "execa": {
      +      "version": "0.8.0",
      +      "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
      +      "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
      +      "requires": {
      +        "cross-spawn": "5.1.0",
      +        "get-stream": "3.0.0",
      +        "is-stream": "1.1.0",
      +        "npm-run-path": "2.0.2",
      +        "p-finally": "1.0.0",
      +        "signal-exit": "3.0.2",
      +        "strip-eof": "1.0.0"
      +      }
      +    },
      +    "exenv": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
      +      "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
      +    },
      +    "expand-brackets": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
      +      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
      +      "requires": {
      +        "is-posix-bracket": "0.1.1"
      +      }
      +    },
      +    "expand-range": {
      +      "version": "1.8.2",
      +      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
      +      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
      +      "requires": {
      +        "fill-range": "2.2.3"
      +      }
      +    },
      +    "expand-tilde": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
      +      "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
      +      "requires": {
      +        "os-homedir": "1.0.2"
      +      }
      +    },
      +    "express": {
      +      "version": "4.16.2",
      +      "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
      +      "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
      +      "requires": {
      +        "accepts": "1.3.4",
      +        "array-flatten": "1.1.1",
      +        "body-parser": "1.18.2",
      +        "content-disposition": "0.5.2",
      +        "content-type": "1.0.4",
      +        "cookie": "0.3.1",
      +        "cookie-signature": "1.0.6",
      +        "debug": "2.6.9",
      +        "depd": "1.1.1",
      +        "encodeurl": "1.0.1",
      +        "escape-html": "1.0.3",
      +        "etag": "1.8.1",
      +        "finalhandler": "1.1.0",
      +        "fresh": "0.5.2",
      +        "merge-descriptors": "1.0.1",
      +        "methods": "1.1.2",
      +        "on-finished": "2.3.0",
      +        "parseurl": "1.3.2",
      +        "path-to-regexp": "0.1.7",
      +        "proxy-addr": "2.0.2",
      +        "qs": "6.5.1",
      +        "range-parser": "1.2.0",
      +        "safe-buffer": "5.1.1",
      +        "send": "0.16.1",
      +        "serve-static": "1.13.1",
      +        "setprototypeof": "1.1.0",
      +        "statuses": "1.3.1",
      +        "type-is": "1.6.15",
      +        "utils-merge": "1.0.1",
      +        "vary": "1.1.2"
      +      }
      +    },
      +    "express-graphql": {
      +      "version": "0.6.11",
      +      "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.6.11.tgz",
      +      "integrity": "sha512-dC/FAun5rqcRxhDe78047hqc048mo3xZpBDS0Z7RZOw9UleO9mZE0rHMS9yrVSaYzsLiz+q4PldKu6Oaqop+CA==",
      +      "requires": {
      +        "accepts": "1.3.4",
      +        "content-type": "1.0.4",
      +        "http-errors": "1.6.2",
      +        "raw-body": "2.3.2"
      +      }
      +    },
      +    "extend": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
      +      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
      +    },
      +    "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.1"
      +      }
      +    },
      +    "external-editor": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
      +      "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
      +      "requires": {
      +        "chardet": "0.4.2",
      +        "iconv-lite": "0.4.19",
      +        "tmp": "0.0.33"
      +      }
      +    },
      +    "extglob": {
      +      "version": "0.3.2",
      +      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
      +      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
      +      "requires": {
      +        "is-extglob": "1.0.0"
      +      }
      +    },
      +    "extract-text-webpack-plugin": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.0.1.tgz",
      +      "integrity": "sha1-yVvzy6rEnclvHcbgclSfu2VMzSw=",
      +      "requires": {
      +        "async": "1.5.2",
      +        "loader-utils": "0.2.17",
      +        "webpack-sources": "0.1.5"
      +      },
      +      "dependencies": {
      +        "async": {
      +          "version": "1.5.2",
      +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
      +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
      +        }
      +      }
      +    },
      +    "extsprintf": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
      +      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
      +    },
      +    "fast-deep-equal": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
      +      "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
      +    },
      +    "fast-glob": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-1.0.1.tgz",
      +      "integrity": "sha512-C2VHbdBwSkaQDyavjQZDflZzmZKrsUK3fTdJtsOnED0L0vtHCw+NL0h8pRcydbpRHlNJLZ4/LbOfEdJKspK91A==",
      +      "requires": {
      +        "bash-glob": "1.0.2",
      +        "glob-parent": "3.1.0",
      +        "micromatch": "3.1.4",
      +        "readdir-enhanced": "1.5.2"
      +      },
      +      "dependencies": {
      +        "arr-diff": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
      +          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
      +        },
      +        "array-unique": {
      +          "version": "0.3.2",
      +          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
      +          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
      +        },
      +        "braces": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz",
      +          "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==",
      +          "requires": {
      +            "arr-flatten": "1.1.0",
      +            "array-unique": "0.3.2",
      +            "define-property": "1.0.0",
      +            "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.1.1",
      +            "split-string": "3.1.0",
      +            "to-regex": "3.0.1"
      +          }
      +        },
      +        "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.6.9",
      +            "define-property": "0.2.5",
      +            "extend-shallow": "2.0.1",
      +            "posix-character-classes": "0.1.1",
      +            "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.6"
      +              }
      +            }
      +          }
      +        },
      +        "extglob": {
      +          "version": "2.0.2",
      +          "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.2.tgz",
      +          "integrity": "sha512-I0+eZBH+jFGL8F5BnIz2ON2nKCjTS3AS3H/5PeSmCp7UVC70Ym8IhdRiQly2juKYQ//f7z1aj1BRpQniFJoU1w==",
      +          "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"
      +          }
      +        },
      +        "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.1"
      +          }
      +        },
      +        "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.2"
      +          }
      +        },
      +        "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.1.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-extglob": {
      +          "version": "2.1.1",
      +          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
      +          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
      +        },
      +        "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.1"
      +          }
      +        },
      +        "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.2.2"
      +          },
      +          "dependencies": {
      +            "kind-of": {
      +              "version": "3.2.2",
      +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
      +              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
      +              "requires": {
      +                "is-buffer": "1.1.6"
      +              }
      +            }
      +          }
      +        },
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        },
      +        "kind-of": {
      +          "version": "6.0.2",
      +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
      +          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
      +        },
      +        "micromatch": {
      +          "version": "3.1.4",
      +          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.4.tgz",
      +          "integrity": "sha512-kFRtviKYoAJT+t7HggMl0tBFGNAKLw/S7N+CO9qfEQyisob1Oy4pao+geRbkyeEd+V9aOkvZ4mhuyPvI/q9Sfg==",
      +          "requires": {
      +            "arr-diff": "4.0.0",
      +            "array-unique": "0.3.2",
      +            "braces": "2.3.0",
      +            "define-property": "1.0.0",
      +            "extend-shallow": "2.0.1",
      +            "extglob": "2.0.2",
      +            "fragment-cache": "0.2.1",
      +            "kind-of": "6.0.2",
      +            "nanomatch": "1.2.6",
      +            "object.pick": "1.3.0",
      +            "regex-not": "1.0.0",
      +            "snapdragon": "0.8.1",
      +            "to-regex": "3.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "fast-json-stable-stringify": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
      +      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
      +    },
      +    "fastparse": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
      +      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg="
      +    },
      +    "faye-websocket": {
      +      "version": "0.11.1",
      +      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
      +      "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
      +      "requires": {
      +        "websocket-driver": "0.7.0"
      +      }
      +    },
      +    "fb-watchman": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz",
      +      "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
      +      "requires": {
      +        "bser": "2.0.0"
      +      }
      +    },
      +    "fbjs": {
      +      "version": "0.8.16",
      +      "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz",
      +      "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
      +      "requires": {
      +        "core-js": "1.2.7",
      +        "isomorphic-fetch": "2.2.1",
      +        "loose-envify": "1.3.1",
      +        "object-assign": "4.1.1",
      +        "promise": "7.3.1",
      +        "setimmediate": "1.0.5",
      +        "ua-parser-js": "0.7.17"
      +      },
      +      "dependencies": {
      +        "core-js": {
      +          "version": "1.2.7",
      +          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
      +          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
      +        }
      +      }
      +    },
      +    "figures": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
      +      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
      +      "requires": {
      +        "escape-string-regexp": "1.0.5"
      +      }
      +    },
      +    "file-loader": {
      +      "version": "0.9.0",
      +      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz",
      +      "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=",
      +      "requires": {
      +        "loader-utils": "0.2.17"
      +      }
      +    },
      +    "filename-regex": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
      +      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
      +    },
      +    "filesize": {
      +      "version": "3.5.11",
      +      "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz",
      +      "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g=="
      +    },
      +    "fill-range": {
      +      "version": "2.2.3",
      +      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
      +      "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
      +      "requires": {
      +        "is-number": "2.1.0",
      +        "isobject": "2.1.0",
      +        "randomatic": "1.1.7",
      +        "repeat-element": "1.1.2",
      +        "repeat-string": "1.6.1"
      +      }
      +    },
      +    "finalhandler": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
      +      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
      +      "requires": {
      +        "debug": "2.6.9",
      +        "encodeurl": "1.0.1",
      +        "escape-html": "1.0.3",
      +        "on-finished": "2.3.0",
      +        "parseurl": "1.3.2",
      +        "statuses": "1.3.1",
      +        "unpipe": "1.0.0"
      +      }
      +    },
      +    "find-cache-dir": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
      +      "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
      +      "requires": {
      +        "commondir": "1.0.1",
      +        "mkdirp": "0.5.1",
      +        "pkg-dir": "1.0.0"
      +      }
      +    },
      +    "find-node-modules": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-1.0.4.tgz",
      +      "integrity": "sha1-tt6zzMtpnIcDdne87eLF9YYrJVA=",
      +      "requires": {
      +        "findup-sync": "0.4.2",
      +        "merge": "1.2.0"
      +      },
      +      "dependencies": {
      +        "findup-sync": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.2.tgz",
      +          "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=",
      +          "requires": {
      +            "detect-file": "0.1.0",
      +            "is-glob": "2.0.1",
      +            "micromatch": "2.3.11",
      +            "resolve-dir": "0.1.1"
      +          }
      +        }
      +      }
      +    },
      +    "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.1.0",
      +        "pinkie-promise": "2.0.1"
      +      },
      +      "dependencies": {
      +        "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.1"
      +          }
      +        }
      +      }
      +    },
      +    "findup-sync": {
      +      "version": "0.4.3",
      +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
      +      "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=",
      +      "optional": true,
      +      "requires": {
      +        "detect-file": "0.1.0",
      +        "is-glob": "2.0.1",
      +        "micromatch": "2.3.11",
      +        "resolve-dir": "0.1.1"
      +      }
      +    },
      +    "fined": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
      +      "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
      +      "optional": true,
      +      "requires": {
      +        "expand-tilde": "2.0.2",
      +        "is-plain-object": "2.0.4",
      +        "object.defaults": "1.1.0",
      +        "object.pick": "1.3.0",
      +        "parse-filepath": "1.0.1"
      +      },
      +      "dependencies": {
      +        "expand-tilde": {
      +          "version": "2.0.2",
      +          "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
      +          "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
      +          "optional": true,
      +          "requires": {
      +            "homedir-polyfill": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "flagged-respawn": {
      +      "version": "0.3.2",
      +      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz",
      +      "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=",
      +      "optional": true
      +    },
      +    "flat": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/flat/-/flat-2.0.1.tgz",
      +      "integrity": "sha1-cOKRiKdL4MPIlAnu0fqVd5B64y8=",
      +      "requires": {
      +        "is-buffer": "1.1.6"
      +      }
      +    },
      +    "flatten": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
      +      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I="
      +    },
      +    "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": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
      +      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
      +      "requires": {
      +        "for-in": "1.0.2"
      +      }
      +    },
      +    "forever-agent": {
      +      "version": "0.6.1",
      +      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
      +      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
      +    },
      +    "form-data": {
      +      "version": "2.3.1",
      +      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
      +      "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
      +      "requires": {
      +        "asynckit": "0.4.0",
      +        "combined-stream": "1.0.5",
      +        "mime-types": "2.1.17"
      +      }
      +    },
      +    "forwarded": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
      +      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
      +    },
      +    "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"
      +      }
      +    },
      +    "fresh": {
      +      "version": "0.5.2",
      +      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
      +      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
      +    },
      +    "friendly-errors-webpack-plugin": {
      +      "version": "1.6.1",
      +      "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz",
      +      "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=",
      +      "requires": {
      +        "chalk": "1.1.3",
      +        "error-stack-parser": "2.0.1",
      +        "string-length": "1.0.1"
      +      }
      +    },
      +    "front-matter": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-2.3.0.tgz",
      +      "integrity": "sha1-cgOviWzjV+4E4qpFFp6pHtf2dQQ=",
      +      "requires": {
      +        "js-yaml": "3.10.0"
      +      },
      +      "dependencies": {
      +        "esprima": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
      +          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
      +        },
      +        "js-yaml": {
      +          "version": "3.10.0",
      +          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
      +          "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
      +          "requires": {
      +            "argparse": "1.0.9",
      +            "esprima": "4.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "fs-exists-sync": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
      +      "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0="
      +    },
      +    "fs-extra": {
      +      "version": "4.0.2",
      +      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
      +      "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "jsonfile": "4.0.0",
      +        "universalify": "0.1.1"
      +      }
      +    },
      +    "fs-readdir-recursive": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
      +      "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
      +    },
      +    "fs.realpath": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
      +      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
      +    },
      +    "function-bind": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
      +      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
      +    },
      +    "gatsby": {
      +      "version": "1.9.127",
      +      "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-1.9.127.tgz",
      +      "integrity": "sha512-cYmOOloOA27+8E7IWY5T1QElxDY42OhGurx/rO0o2yfDjos9bxlD1rTJAhwBflWQJCzhLygp7ZSwZWkYIEsLwg==",
      +      "requires": {
      +        "async": "2.6.0",
      +        "babel-code-frame": "6.26.0",
      +        "babel-core": "6.26.0",
      +        "babel-loader": "6.4.1",
      +        "babel-plugin-add-module-exports": "0.2.1",
      +        "babel-plugin-transform-object-assign": "6.22.0",
      +        "babel-polyfill": "6.26.0",
      +        "babel-preset-env": "1.6.1",
      +        "babel-preset-es2015": "6.24.1",
      +        "babel-preset-react": "6.24.1",
      +        "babel-preset-stage-0": "6.24.1",
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babylon": "6.18.0",
      +        "bluebird": "3.5.1",
      +        "chalk": "1.1.3",
      +        "chokidar": "1.7.0",
      +        "chunk-manifest-webpack-plugin": "0.1.0",
      +        "common-tags": "1.5.1",
      +        "convert-hrtime": "2.0.0",
      +        "copyfiles": "1.2.0",
      +        "core-js": "2.5.1",
      +        "css-loader": "0.26.4",
      +        "debug": "2.6.9",
      +        "del": "3.0.0",
      +        "detect-port": "1.2.2",
      +        "domready": "1.0.8",
      +        "dotenv": "4.0.0",
      +        "express": "4.16.2",
      +        "express-graphql": "0.6.11",
      +        "extract-text-webpack-plugin": "1.0.1",
      +        "file-loader": "0.9.0",
      +        "flat": "2.0.1",
      +        "friendly-errors-webpack-plugin": "1.6.1",
      +        "front-matter": "2.3.0",
      +        "fs-extra": "4.0.2",
      +        "gatsby-1-config-css-modules": "1.0.7",
      +        "gatsby-cli": "1.1.25",
      +        "gatsby-module-loader": "1.0.9",
      +        "gatsby-react-router-scroll": "1.0.6",
      +        "glob": "7.1.2",
      +        "graphql": "0.11.7",
      +        "graphql-relay": "0.5.3",
      +        "graphql-skip-limit": "1.0.8",
      +        "history": "4.7.2",
      +        "invariant": "2.2.2",
      +        "is-relative": "0.2.1",
      +        "is-relative-url": "2.0.0",
      +        "joi": "12.0.0",
      +        "json-loader": "0.5.7",
      +        "json-stringify-safe": "5.0.1",
      +        "json5": "0.5.1",
      +        "lodash": "4.17.4",
      +        "lodash-id": "0.14.0",
      +        "lowdb": "0.16.2",
      +        "md5-file": "3.2.3",
      +        "mime": "1.6.0",
      +        "mitt": "1.1.2",
      +        "mkdirp": "0.5.1",
      +        "moment": "2.19.3",
      +        "node-libs-browser": "2.1.0",
      +        "normalize-path": "2.1.1",
      +        "null-loader": "0.1.1",
      +        "opn": "5.1.0",
      +        "parse-filepath": "1.0.1",
      +        "path-exists": "3.0.0",
      +        "postcss-browser-reporter": "0.5.0",
      +        "postcss-cssnext": "2.11.0",
      +        "postcss-import": "8.2.0",
      +        "postcss-loader": "0.13.0",
      +        "postcss-reporter": "1.4.1",
      +        "raw-loader": "0.5.1",
      +        "react": "15.6.2",
      +        "react-dev-utils": "4.2.1",
      +        "react-dom": "15.6.2",
      +        "react-error-overlay": "3.0.0",
      +        "react-hot-loader": "3.1.3",
      +        "react-router": "4.2.0",
      +        "react-router-dom": "4.2.2",
      +        "redux": "3.7.2",
      +        "relay-compiler": "1.4.1",
      +        "remote-redux-devtools": "0.5.12",
      +        "serve": "6.4.1",
      +        "sift": "3.3.12",
      +        "signal-exit": "3.0.2",
      +        "slash": "1.0.0",
      +        "socket.io": "2.0.4",
      +        "static-site-generator-webpack-plugin": "3.4.1",
      +        "string-similarity": "1.2.0",
      +        "style-loader": "0.13.2",
      +        "type-of": "2.0.1",
      +        "url-loader": "0.5.9",
      +        "webpack": "1.15.0",
      +        "webpack-configurator": "0.3.1",
      +        "webpack-dev-middleware": "1.12.2",
      +        "webpack-dev-server": "1.16.5",
      +        "webpack-hot-middleware": "2.21.0",
      +        "webpack-md5-hash": "0.0.5",
      +        "webpack-stats-plugin": "0.1.5",
      +        "webpack-validator": "2.3.0",
      +        "yaml-loader": "0.4.0"
      +      },
      +      "dependencies": {
      +        "gatsby-cli": {
      +          "version": "1.1.25",
      +          "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-1.1.25.tgz",
      +          "integrity": "sha512-PaPnll9wAArRROKtjrmLda+p6F5Wq3XrTqMh9f1mUuiniSTaK7ofJAxJOhIyww/V+J0TGc+YqiNaxaLjdcz13w==",
      +          "requires": {
      +            "babel-code-frame": "6.26.0",
      +            "babel-runtime": "6.26.0",
      +            "bluebird": "3.5.1",
      +            "common-tags": "1.5.1",
      +            "convert-hrtime": "2.0.0",
      +            "core-js": "2.5.1",
      +            "execa": "0.8.0",
      +            "fs-extra": "4.0.2",
      +            "hosted-git-info": "2.5.0",
      +            "lodash": "4.17.4",
      +            "pretty-error": "2.1.1",
      +            "resolve-cwd": "2.0.0",
      +            "source-map": "0.5.7",
      +            "stack-trace": "0.0.10",
      +            "yargs": "8.0.2",
      +            "yurnalist": "0.2.1"
      +          }
      +        }
      +      }
      +    },
      +    "gatsby-1-config-css-modules": {
      +      "version": "1.0.7",
      +      "resolved": "https://registry.npmjs.org/gatsby-1-config-css-modules/-/gatsby-1-config-css-modules-1.0.7.tgz",
      +      "integrity": "sha512-Xkqp8diNR/a/ghino+imqqfI/mgO1pneAnqIrCOWj9wwwtn8M74Fjv0qBsC9twHBmjhdrAbd5nJY2IcGylgEzA==",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "gatsby-link": {
      +      "version": "1.6.30",
      +      "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-1.6.30.tgz",
      +      "integrity": "sha512-IIOMfRISByjrblvqbJyiAbCJZ5/FnebJ0ZmhBp+KIkXnAPCLEd+axnXTffHFKFVC/SUVAumBJJAo2SEyPgGPMw==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "prop-types": "15.6.0",
      +        "ric": "1.3.0"
      +      }
      +    },
      +    "gatsby-module-loader": {
      +      "version": "1.0.9",
      +      "resolved": "https://registry.npmjs.org/gatsby-module-loader/-/gatsby-module-loader-1.0.9.tgz",
      +      "integrity": "sha512-PVq20rxDYAZVXBDgQzp5aNC0s9r4Je/UNVQUHE89N+CihY+POm+jp9eIHWLDzeGgMHGcSOg8Zn5MaHpngXL+5Q==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "loader-utils": "0.2.17"
      +      }
      +    },
      +    "gatsby-plugin-catch-links": {
      +      "version": "1.0.13",
      +      "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-1.0.13.tgz",
      +      "integrity": "sha512-AOWKonr+53GNor3cGs3nyqWs5ppm+rV/ks+uYjagKh+RSsRw5Cz98D6rsv5HRFMvq3RX99Wf7Tjk+jQRJDvpjA==",
      +      "requires": {
      +        "babel-runtime": "6.26.0"
      +      }
      +    },
      +    "gatsby-plugin-glamor": {
      +      "version": "1.6.9",
      +      "resolved": "https://registry.npmjs.org/gatsby-plugin-glamor/-/gatsby-plugin-glamor-1.6.9.tgz",
      +      "integrity": "sha512-dUXRUEEH2GD4iYVqjzTC3mw8wh2q8XQl8ONfMA6ZlXM8kFg53Nxt1t8+JJ8Y5HnLw9HHfnQf+p4V8Fro5Qagxw==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "glamor": "2.20.40"
      +      }
      +    },
      +    "gatsby-plugin-react-helmet": {
      +      "version": "1.0.8",
      +      "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-1.0.8.tgz",
      +      "integrity": "sha512-kkt+uvbu/fxb55z7URH6YBXGc2I80myannVPMmv0Mmrr3Ennmm4uTgrgTiTrkasyFN0AKGlXRuuHa2/zrc1TXA==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "react-helmet": "5.2.0"
      +      }
      +    },
      +    "gatsby-plugin-typography": {
      +      "version": "1.7.10",
      +      "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-1.7.10.tgz",
      +      "integrity": "sha512-mh5yC8cZ4iv6+JTLcKawfDHDkJqd2keV/uRO456peLyDDdQVTlb+5rDMHMFhsNnkMsaa09/mCvfjButtLbT9Zg==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "react-typography": "0.16.5",
      +        "typography": "0.16.6"
      +      }
      +    },
      +    "gatsby-react-router-scroll": {
      +      "version": "1.0.6",
      +      "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-1.0.6.tgz",
      +      "integrity": "sha512-pJervFsqgktCohSxgfhO9rOZyEkCvIBKB6uqzJXTGTIFs8JPKn/fM1cMXjp9ZMZpAZJ82zKjZe75bogavE7iHg==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "scroll-behavior": "0.9.5",
      +        "warning": "3.0.0"
      +      }
      +    },
      +    "gatsby-remark-prismjs": {
      +      "version": "1.2.10",
      +      "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-1.2.10.tgz",
      +      "integrity": "sha512-0j+6KmlgHBsUnIq2IBJyqtnTOgsK2y3waHX7lSIlV66TutAM4pxT7gavf25tanuwnOO4bBTc0Mv2enrGy7iFjQ==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "parse-numeric-range": "0.0.2",
      +        "prismjs": "1.9.0",
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "gatsby-source-filesystem": {
      +      "version": "1.5.9",
      +      "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.9.tgz",
      +      "integrity": "sha512-3YMAHgy84s3yFaSf46lla4ip/5K2eWk68G8G+q+fJNamRcB3LjCP57fACRB5+l6xiM3Vq/1Y6HIu6Dx4r9R5TA==",
      +      "requires": {
      +        "babel-cli": "6.26.0",
      +        "babel-runtime": "6.26.0",
      +        "bluebird": "3.5.1",
      +        "chokidar": "1.7.0",
      +        "fs-extra": "4.0.2",
      +        "got": "7.1.0",
      +        "md5-file": "3.2.3",
      +        "mime": "1.6.0",
      +        "pretty-bytes": "4.0.2",
      +        "slash": "1.0.0",
      +        "valid-url": "1.0.9"
      +      },
      +      "dependencies": {
      +        "got": {
      +          "version": "7.1.0",
      +          "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz",
      +          "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==",
      +          "requires": {
      +            "decompress-response": "3.3.0",
      +            "duplexer3": "0.1.4",
      +            "get-stream": "3.0.0",
      +            "is-plain-obj": "1.1.0",
      +            "is-retry-allowed": "1.1.0",
      +            "is-stream": "1.1.0",
      +            "isurl": "1.0.0",
      +            "lowercase-keys": "1.0.0",
      +            "p-cancelable": "0.3.0",
      +            "p-timeout": "1.2.1",
      +            "safe-buffer": "5.1.1",
      +            "timed-out": "4.0.1",
      +            "url-parse-lax": "1.0.0",
      +            "url-to-options": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "gatsby-transformer-remark": {
      +      "version": "1.7.23",
      +      "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-1.7.23.tgz",
      +      "integrity": "sha512-E5XMqgE5unEIIHXIjYcBR+reNNCR18lAa0rVC8UuS+niwX71HAoTurSXc4By5EIPyHg7PJyAKiLXKyKKTBRG/g==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "bluebird": "3.5.1",
      +        "gray-matter": "2.1.1",
      +        "hast-util-to-html": "3.1.0",
      +        "lodash": "4.17.4",
      +        "mdast-util-to-hast": "2.5.0",
      +        "mdast-util-toc": "2.0.1",
      +        "remark": "7.0.1",
      +        "remark-parse": "4.0.0",
      +        "remark-retext": "3.1.0",
      +        "remark-stringify": "4.0.0",
      +        "retext-english": "3.0.0",
      +        "sanitize-html": "1.16.1",
      +        "underscore.string": "3.3.4",
      +        "unified": "6.1.6",
      +        "unist-util-select": "1.5.0",
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "gauge": {
      +      "version": "1.2.7",
      +      "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz",
      +      "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=",
      +      "requires": {
      +        "ansi": "0.3.1",
      +        "has-unicode": "2.0.1",
      +        "lodash.pad": "4.5.1",
      +        "lodash.padend": "4.6.1",
      +        "lodash.padstart": "4.6.1"
      +      }
      +    },
      +    "get-caller-file": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
      +      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
      +    },
      +    "get-params": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/get-params/-/get-params-0.1.2.tgz",
      +      "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4="
      +    },
      +    "get-stream": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
      +      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
      +    },
      +    "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"
      +      }
      +    },
      +    "github-slugger": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz",
      +      "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==",
      +      "requires": {
      +        "emoji-regex": "6.1.1"
      +      }
      +    },
      +    "glamor": {
      +      "version": "2.20.40",
      +      "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz",
      +      "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==",
      +      "requires": {
      +        "fbjs": "0.8.16",
      +        "inline-style-prefixer": "3.0.8",
      +        "object-assign": "4.1.1",
      +        "prop-types": "15.6.0",
      +        "through": "2.3.8"
      +      }
      +    },
      +    "glob": {
      +      "version": "7.1.2",
      +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
      +      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
      +      "requires": {
      +        "fs.realpath": "1.0.0",
      +        "inflight": "1.0.6",
      +        "inherits": "2.0.3",
      +        "minimatch": "3.0.4",
      +        "once": "1.4.0",
      +        "path-is-absolute": "1.0.1"
      +      }
      +    },
      +    "glob-base": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
      +      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
      +      "requires": {
      +        "glob-parent": "2.0.0",
      +        "is-glob": "2.0.1"
      +      }
      +    },
      +    "glob-parent": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
      +      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
      +      "requires": {
      +        "is-glob": "2.0.1"
      +      }
      +    },
      +    "glob-to-regexp": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
      +      "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
      +    },
      +    "global": {
      +      "version": "4.3.2",
      +      "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
      +      "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
      +      "requires": {
      +        "min-document": "2.19.0",
      +        "process": "0.5.2"
      +      },
      +      "dependencies": {
      +        "process": {
      +          "version": "0.5.2",
      +          "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
      +          "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
      +        }
      +      }
      +    },
      +    "global-dirs": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
      +      "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
      +      "requires": {
      +        "ini": "1.3.5"
      +      }
      +    },
      +    "global-modules": {
      +      "version": "0.2.3",
      +      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
      +      "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
      +      "requires": {
      +        "global-prefix": "0.1.5",
      +        "is-windows": "0.2.0"
      +      }
      +    },
      +    "global-prefix": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
      +      "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
      +      "requires": {
      +        "homedir-polyfill": "1.0.1",
      +        "ini": "1.3.5",
      +        "is-windows": "0.2.0",
      +        "which": "1.3.0"
      +      }
      +    },
      +    "globals": {
      +      "version": "9.18.0",
      +      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
      +      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
      +    },
      +    "globby": {
      +      "version": "6.1.0",
      +      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
      +      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
      +      "requires": {
      +        "array-union": "1.0.2",
      +        "glob": "7.1.2",
      +        "object-assign": "4.1.1",
      +        "pify": "2.3.0",
      +        "pinkie-promise": "2.0.1"
      +      },
      +      "dependencies": {
      +        "pify": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
      +        }
      +      }
      +    },
      +    "good-listener": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
      +      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
      +      "optional": true,
      +      "requires": {
      +        "delegate": "3.2.0"
      +      }
      +    },
      +    "got": {
      +      "version": "6.7.1",
      +      "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
      +      "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
      +      "requires": {
      +        "create-error-class": "3.0.2",
      +        "duplexer3": "0.1.4",
      +        "get-stream": "3.0.0",
      +        "is-redirect": "1.0.0",
      +        "is-retry-allowed": "1.1.0",
      +        "is-stream": "1.1.0",
      +        "lowercase-keys": "1.0.0",
      +        "safe-buffer": "5.1.1",
      +        "timed-out": "4.0.1",
      +        "unzip-response": "2.0.1",
      +        "url-parse-lax": "1.0.0"
      +      }
      +    },
      +    "graceful-fs": {
      +      "version": "4.1.11",
      +      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
      +      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
      +    },
      +    "graceful-readlink": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
      +      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
      +    },
      +    "graphql": {
      +      "version": "0.11.7",
      +      "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.11.7.tgz",
      +      "integrity": "sha512-x7uDjyz8Jx+QPbpCFCMQ8lltnQa4p4vSYHx6ADe8rVYRTdsyhCJbvSty5DAsLVmU6cGakl+r8HQYolKHxk/tiw==",
      +      "requires": {
      +        "iterall": "1.1.3"
      +      }
      +    },
      +    "graphql-relay": {
      +      "version": "0.5.3",
      +      "resolved": "https://registry.npmjs.org/graphql-relay/-/graphql-relay-0.5.3.tgz",
      +      "integrity": "sha1-VqeKwHyH2JeVo022uOloG4J75bU="
      +    },
      +    "graphql-skip-limit": {
      +      "version": "1.0.8",
      +      "resolved": "https://registry.npmjs.org/graphql-skip-limit/-/graphql-skip-limit-1.0.8.tgz",
      +      "integrity": "sha512-aIB2V6c1K2dzZiCYGRbU+lsjqfXQOdqHMNcLJ/726AjxnDzwPPkxJweW/otmGXSz4dgUIdmxNfjSnhgb8tDz3A==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "graphql": "0.11.7"
      +      }
      +    },
      +    "gray-matter": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz",
      +      "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=",
      +      "requires": {
      +        "ansi-red": "0.1.1",
      +        "coffee-script": "1.12.7",
      +        "extend-shallow": "2.0.1",
      +        "js-yaml": "3.10.0",
      +        "toml": "2.3.3"
      +      },
      +      "dependencies": {
      +        "esprima": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
      +          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
      +        },
      +        "js-yaml": {
      +          "version": "3.10.0",
      +          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz",
      +          "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==",
      +          "requires": {
      +            "argparse": "1.0.9",
      +            "esprima": "4.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "gray-percentage": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/gray-percentage/-/gray-percentage-2.0.0.tgz",
      +      "integrity": "sha1-tyonTRsTeRBKAFC2OyB9xT/lb5k="
      +    },
      +    "gzip-size": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz",
      +      "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
      +      "requires": {
      +        "duplexer": "0.1.1"
      +      }
      +    },
      +    "handlebars": {
      +      "version": "4.0.11",
      +      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
      +      "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
      +      "requires": {
      +        "async": "1.5.2",
      +        "optimist": "0.6.1",
      +        "source-map": "0.4.4",
      +        "uglify-js": "2.8.29"
      +      },
      +      "dependencies": {
      +        "async": {
      +          "version": "1.5.2",
      +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
      +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
      +        },
      +        "source-map": {
      +          "version": "0.4.4",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
      +          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
      +          "requires": {
      +            "amdefine": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "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.0.3",
      +      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
      +      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
      +      "requires": {
      +        "ajv": "5.5.1",
      +        "har-schema": "2.0.0"
      +      }
      +    },
      +    "has": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
      +      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
      +      "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.1.1"
      +      }
      +    },
      +    "has-binary2": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz",
      +      "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=",
      +      "requires": {
      +        "isarray": "2.0.1"
      +      },
      +      "dependencies": {
      +        "isarray": {
      +          "version": "2.0.1",
      +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
      +          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
      +        }
      +      }
      +    },
      +    "has-cors": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
      +      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
      +    },
      +    "has-flag": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
      +      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
      +    },
      +    "has-symbol-support-x": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz",
      +      "integrity": "sha512-JkaetveU7hFbqnAC1EV1sF4rlojU2D4Usc5CmS69l6NfmPDnpnFUegzFg33eDkkpNCxZ0mQp65HwUDrNFS/8MA=="
      +    },
      +    "has-to-string-tag-x": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
      +      "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
      +      "requires": {
      +        "has-symbol-support-x": "1.4.1"
      +      }
      +    },
      +    "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.1"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "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": {
      +        "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.2.2"
      +          },
      +          "dependencies": {
      +            "kind-of": {
      +              "version": "3.2.2",
      +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
      +              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
      +              "requires": {
      +                "is-buffer": "1.1.6"
      +              }
      +            }
      +          }
      +        },
      +        "kind-of": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
      +          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
      +          "requires": {
      +            "is-buffer": "1.1.6"
      +          }
      +        }
      +      }
      +    },
      +    "hash-base": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
      +      "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
      +      "requires": {
      +        "inherits": "2.0.3"
      +      }
      +    },
      +    "hash.js": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
      +      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "minimalistic-assert": "1.0.0"
      +      }
      +    },
      +    "hast-util-is-element": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.0.tgz",
      +      "integrity": "sha1-P3IWl4sq4U2YdJh4eCZ18zvjzgA="
      +    },
      +    "hast-util-to-html": {
      +      "version": "3.1.0",
      +      "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-3.1.0.tgz",
      +      "integrity": "sha1-iCyZhJ5AEw6ZHAQuRW1FPZXDbP8=",
      +      "requires": {
      +        "ccount": "1.0.2",
      +        "comma-separated-tokens": "1.0.4",
      +        "hast-util-is-element": "1.0.0",
      +        "hast-util-whitespace": "1.0.0",
      +        "html-void-elements": "1.0.2",
      +        "kebab-case": "1.0.0",
      +        "property-information": "3.2.0",
      +        "space-separated-tokens": "1.1.1",
      +        "stringify-entities": "1.3.1",
      +        "unist-util-is": "2.1.1",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "hast-util-whitespace": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.0.tgz",
      +      "integrity": "sha1-vQlpGWJdKTbh/xe8Tff9cn8X7Ok="
      +    },
      +    "hawk": {
      +      "version": "6.0.2",
      +      "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
      +      "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
      +      "requires": {
      +        "boom": "4.3.1",
      +        "cryptiles": "3.1.2",
      +        "hoek": "4.2.0",
      +        "sntp": "2.1.0"
      +      }
      +    },
      +    "history": {
      +      "version": "4.7.2",
      +      "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz",
      +      "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==",
      +      "requires": {
      +        "invariant": "2.2.2",
      +        "loose-envify": "1.3.1",
      +        "resolve-pathname": "2.2.0",
      +        "value-equal": "0.4.0",
      +        "warning": "3.0.0"
      +      }
      +    },
      +    "hmac-drbg": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
      +      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
      +      "requires": {
      +        "hash.js": "1.1.3",
      +        "minimalistic-assert": "1.0.0",
      +        "minimalistic-crypto-utils": "1.0.1"
      +      }
      +    },
      +    "hoek": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
      +      "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
      +    },
      +    "hoist-non-react-statics": {
      +      "version": "2.3.1",
      +      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz",
      +      "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA="
      +    },
      +    "home-or-tmp": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
      +      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
      +      "requires": {
      +        "os-homedir": "1.0.2",
      +        "os-tmpdir": "1.0.2"
      +      }
      +    },
      +    "homedir-polyfill": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
      +      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
      +      "requires": {
      +        "parse-passwd": "1.0.0"
      +      }
      +    },
      +    "hosted-git-info": {
      +      "version": "2.5.0",
      +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
      +      "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg=="
      +    },
      +    "html-comment-regex": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
      +      "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4="
      +    },
      +    "html-entities": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
      +      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
      +    },
      +    "html-void-elements": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.2.tgz",
      +      "integrity": "sha1-nSLgyjKsyVs/RbjVtPb73AWv/VU="
      +    },
      +    "htmlparser2": {
      +      "version": "3.3.0",
      +      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
      +      "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
      +      "requires": {
      +        "domelementtype": "1.3.0",
      +        "domhandler": "2.1.0",
      +        "domutils": "1.1.6",
      +        "readable-stream": "1.0.34"
      +      },
      +      "dependencies": {
      +        "domutils": {
      +          "version": "1.1.6",
      +          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
      +          "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
      +          "requires": {
      +            "domelementtype": "1.3.0"
      +          }
      +        },
      +        "isarray": {
      +          "version": "0.0.1",
      +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
      +          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
      +        },
      +        "readable-stream": {
      +          "version": "1.0.34",
      +          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
      +          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
      +          "requires": {
      +            "core-util-is": "1.0.2",
      +            "inherits": "2.0.3",
      +            "isarray": "0.0.1",
      +            "string_decoder": "0.10.31"
      +          }
      +        },
      +        "string_decoder": {
      +          "version": "0.10.31",
      +          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
      +          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
      +        }
      +      }
      +    },
      +    "http-errors": {
      +      "version": "1.6.2",
      +      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
      +      "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
      +      "requires": {
      +        "depd": "1.1.1",
      +        "inherits": "2.0.3",
      +        "setprototypeof": "1.0.3",
      +        "statuses": "1.3.1"
      +      },
      +      "dependencies": {
      +        "setprototypeof": {
      +          "version": "1.0.3",
      +          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
      +          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
      +        }
      +      }
      +    },
      +    "http-parser-js": {
      +      "version": "0.4.9",
      +      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz",
      +      "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE="
      +    },
      +    "http-proxy": {
      +      "version": "1.16.2",
      +      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
      +      "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
      +      "requires": {
      +        "eventemitter3": "1.2.0",
      +        "requires-port": "1.0.0"
      +      }
      +    },
      +    "http-proxy-middleware": {
      +      "version": "0.17.4",
      +      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
      +      "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
      +      "requires": {
      +        "http-proxy": "1.16.2",
      +        "is-glob": "3.1.0",
      +        "lodash": "4.17.4",
      +        "micromatch": "2.3.11"
      +      },
      +      "dependencies": {
      +        "is-extglob": {
      +          "version": "2.1.1",
      +          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
      +          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
      +        },
      +        "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.1"
      +          }
      +        }
      +      }
      +    },
      +    "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.4.1",
      +        "sshpk": "1.13.1"
      +      }
      +    },
      +    "https-browserify": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
      +      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM="
      +    },
      +    "hyphenate-style-name": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz",
      +      "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es="
      +    },
      +    "iconv-lite": {
      +      "version": "0.4.19",
      +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
      +      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
      +    },
      +    "icss-replace-symbols": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
      +      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0="
      +    },
      +    "ieee754": {
      +      "version": "1.1.8",
      +      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
      +      "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q="
      +    },
      +    "immutable": {
      +      "version": "3.7.6",
      +      "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz",
      +      "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks="
      +    },
      +    "import-lazy": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
      +      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM="
      +    },
      +    "imurmurhash": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
      +      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
      +    },
      +    "indexes-of": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
      +      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
      +    },
      +    "indexof": {
      +      "version": "0.0.1",
      +      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
      +      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
      +    },
      +    "inflight": {
      +      "version": "1.0.6",
      +      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
      +      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
      +      "requires": {
      +        "once": "1.4.0",
      +        "wrappy": "1.0.2"
      +      }
      +    },
      +    "inherits": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
      +      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
      +    },
      +    "ini": {
      +      "version": "1.3.5",
      +      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
      +      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
      +    },
      +    "inline-style-prefixer": {
      +      "version": "3.0.8",
      +      "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz",
      +      "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=",
      +      "requires": {
      +        "bowser": "1.8.1",
      +        "css-in-js-utils": "2.0.0"
      +      }
      +    },
      +    "inquirer": {
      +      "version": "3.3.0",
      +      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
      +      "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
      +      "requires": {
      +        "ansi-escapes": "3.0.0",
      +        "chalk": "2.3.0",
      +        "cli-cursor": "2.1.0",
      +        "cli-width": "2.2.0",
      +        "external-editor": "2.1.0",
      +        "figures": "2.0.0",
      +        "lodash": "4.17.4",
      +        "mute-stream": "0.0.7",
      +        "run-async": "2.3.0",
      +        "rx-lite": "4.0.8",
      +        "rx-lite-aggregates": "4.0.8",
      +        "string-width": "2.1.1",
      +        "strip-ansi": "4.0.0",
      +        "through": "2.3.8"
      +      },
      +      "dependencies": {
      +        "ansi-regex": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
      +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
      +        },
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "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"
      +          }
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "interpret": {
      +      "version": "0.6.6",
      +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz",
      +      "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls="
      +    },
      +    "invariant": {
      +      "version": "2.2.2",
      +      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
      +      "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
      +      "requires": {
      +        "loose-envify": "1.3.1"
      +      }
      +    },
      +    "invert-kv": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
      +      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
      +    },
      +    "ip": {
      +      "version": "1.1.5",
      +      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
      +      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
      +    },
      +    "ipaddr.js": {
      +      "version": "1.5.2",
      +      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
      +      "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A="
      +    },
      +    "is-absolute": {
      +      "version": "0.2.6",
      +      "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz",
      +      "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=",
      +      "requires": {
      +        "is-relative": "0.2.1",
      +        "is-windows": "0.2.0"
      +      }
      +    },
      +    "is-absolute-url": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
      +      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY="
      +    },
      +    "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.2.2"
      +      }
      +    },
      +    "is-alphabetical": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.1.tgz",
      +      "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg="
      +    },
      +    "is-alphanumeric": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
      +      "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ="
      +    },
      +    "is-alphanumerical": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz",
      +      "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=",
      +      "requires": {
      +        "is-alphabetical": "1.0.1",
      +        "is-decimal": "1.0.1"
      +      }
      +    },
      +    "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.11.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-builtin-module": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
      +      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
      +      "requires": {
      +        "builtin-modules": "1.1.1"
      +      }
      +    },
      +    "is-ci": {
      +      "version": "1.0.10",
      +      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz",
      +      "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=",
      +      "requires": {
      +        "ci-info": "1.1.2"
      +      }
      +    },
      +    "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.2.2"
      +      }
      +    },
      +    "is-decimal": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.1.tgz",
      +      "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI="
      +    },
      +    "is-descriptor": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.1.tgz",
      +      "integrity": "sha512-G3fFVFTqfaqu7r4YuSBHKBAuOaLz8Sy7ekklUpFEliaLMP1Y2ZjoN9jS62YWCAPQrQpMUQSitRlrzibbuCZjdA==",
      +      "requires": {
      +        "is-accessor-descriptor": "0.1.6",
      +        "is-data-descriptor": "0.1.4",
      +        "kind-of": "5.1.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-dotfile": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
      +      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
      +    },
      +    "is-equal-shallow": {
      +      "version": "0.1.3",
      +      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
      +      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
      +      "requires": {
      +        "is-primitive": "2.0.0"
      +      }
      +    },
      +    "is-extendable": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
      +      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
      +    },
      +    "is-extglob": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
      +      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
      +    },
      +    "is-finite": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
      +      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
      +      "requires": {
      +        "number-is-nan": "1.0.1"
      +      }
      +    },
      +    "is-fullwidth-code-point": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
      +      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
      +      "requires": {
      +        "number-is-nan": "1.0.1"
      +      }
      +    },
      +    "is-glob": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
      +      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
      +      "requires": {
      +        "is-extglob": "1.0.0"
      +      }
      +    },
      +    "is-hexadecimal": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz",
      +      "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk="
      +    },
      +    "is-installed-globally": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
      +      "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
      +      "requires": {
      +        "global-dirs": "0.1.1",
      +        "is-path-inside": "1.0.1"
      +      }
      +    },
      +    "is-npm": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
      +      "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ="
      +    },
      +    "is-number": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
      +      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
      +      "requires": {
      +        "kind-of": "3.2.2"
      +      }
      +    },
      +    "is-obj": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
      +      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
      +    },
      +    "is-object": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
      +      "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA="
      +    },
      +    "is-odd": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz",
      +      "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=",
      +      "requires": {
      +        "is-number": "3.0.0"
      +      },
      +      "dependencies": {
      +        "is-number": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
      +          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
      +          "requires": {
      +            "kind-of": "3.2.2"
      +          }
      +        }
      +      }
      +    },
      +    "is-path-cwd": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
      +      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
      +    },
      +    "is-path-in-cwd": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
      +      "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
      +      "requires": {
      +        "is-path-inside": "1.0.1"
      +      }
      +    },
      +    "is-path-inside": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
      +      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
      +      "requires": {
      +        "path-is-inside": "1.0.2"
      +      }
      +    },
      +    "is-plain-obj": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
      +      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
      +    },
      +    "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"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "is-posix-bracket": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
      +      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
      +    },
      +    "is-primitive": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
      +      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
      +    },
      +    "is-promise": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
      +      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
      +    },
      +    "is-redirect": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
      +      "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ="
      +    },
      +    "is-relative": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz",
      +      "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=",
      +      "requires": {
      +        "is-unc-path": "0.1.2"
      +      }
      +    },
      +    "is-relative-url": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz",
      +      "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=",
      +      "requires": {
      +        "is-absolute-url": "2.1.0"
      +      }
      +    },
      +    "is-retry-allowed": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
      +      "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ="
      +    },
      +    "is-root": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz",
      +      "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU="
      +    },
      +    "is-stream": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
      +      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
      +    },
      +    "is-svg": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
      +      "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
      +      "requires": {
      +        "html-comment-regex": "1.1.1"
      +      }
      +    },
      +    "is-typedarray": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
      +      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
      +    },
      +    "is-unc-path": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz",
      +      "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=",
      +      "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-whitespace-character": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz",
      +      "integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs="
      +    },
      +    "is-windows": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
      +      "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw="
      +    },
      +    "is-word-character": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.1.tgz",
      +      "integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs="
      +    },
      +    "is-wsl": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
      +      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0="
      +    },
      +    "isarray": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
      +      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
      +    },
      +    "isemail": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.0.0.tgz",
      +      "integrity": "sha512-rz0ng/c+fX+zACpLgDB8fnUQ845WSU06f4hlhk4K8TJxmR6f5hyvitu9a9JdMD7aq/P4E0XdG1uaab2OiXgHlA==",
      +      "requires": {
      +        "punycode": "2.1.0"
      +      }
      +    },
      +    "isexe": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
      +      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
      +    },
      +    "isnumeric": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz",
      +      "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ="
      +    },
      +    "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"
      +      }
      +    },
      +    "isomorphic-fetch": {
      +      "version": "2.2.1",
      +      "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
      +      "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
      +      "requires": {
      +        "node-fetch": "1.7.3",
      +        "whatwg-fetch": "2.0.3"
      +      }
      +    },
      +    "isstream": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
      +      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
      +    },
      +    "isurl": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
      +      "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
      +      "requires": {
      +        "has-to-string-tag-x": "1.4.1",
      +        "is-object": "1.0.1"
      +      }
      +    },
      +    "items": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz",
      +      "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg="
      +    },
      +    "iterall": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.3.tgz",
      +      "integrity": "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ=="
      +    },
      +    "joi": {
      +      "version": "12.0.0",
      +      "resolved": "https://registry.npmjs.org/joi/-/joi-12.0.0.tgz",
      +      "integrity": "sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ==",
      +      "requires": {
      +        "hoek": "4.2.0",
      +        "isemail": "3.0.0",
      +        "topo": "2.0.2"
      +      }
      +    },
      +    "js-base64": {
      +      "version": "2.4.0",
      +      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz",
      +      "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA=="
      +    },
      +    "js-tokens": {
      +      "version": "3.0.2",
      +      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
      +      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
      +    },
      +    "js-yaml": {
      +      "version": "3.7.0",
      +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
      +      "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
      +      "requires": {
      +        "argparse": "1.0.9",
      +        "esprima": "2.7.3"
      +      }
      +    },
      +    "jsan": {
      +      "version": "3.1.9",
      +      "resolved": "https://registry.npmjs.org/jsan/-/jsan-3.1.9.tgz",
      +      "integrity": "sha1-JwVnbBBY8KfZrCZq0Daldpz6fJY="
      +    },
      +    "jsbn": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
      +      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
      +      "optional": true
      +    },
      +    "jsesc": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
      +      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
      +    },
      +    "json-loader": {
      +      "version": "0.5.7",
      +      "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
      +      "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w=="
      +    },
      +    "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.3.1",
      +      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
      +      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
      +    },
      +    "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="
      +    },
      +    "json3": {
      +      "version": "3.3.2",
      +      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
      +      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE="
      +    },
      +    "json5": {
      +      "version": "0.5.1",
      +      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
      +      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
      +    },
      +    "jsonfile": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
      +      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
      +      "requires": {
      +        "graceful-fs": "4.1.11"
      +      }
      +    },
      +    "jsonify": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
      +      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
      +    },
      +    "jspm": {
      +      "version": "0.17.0-beta.47",
      +      "resolved": "https://registry.npmjs.org/jspm/-/jspm-0.17.0-beta.47.tgz",
      +      "integrity": "sha512-fqO8V3/V2j9zqDHg6msMvRj/yr5T8WSEO5w/2PrgGC3noKuh4Mg/W6Tp+jOAbDl/t0jHQVLHfVBEA128EYhkug==",
      +      "optional": true,
      +      "requires": {
      +        "bluebird": "3.5.1",
      +        "chalk": "1.1.3",
      +        "core-js": "1.2.7",
      +        "glob": "6.0.4",
      +        "graceful-fs": "4.1.11",
      +        "jspm-github": "0.14.13",
      +        "jspm-npm": "0.30.3",
      +        "jspm-registry": "0.4.4",
      +        "liftoff": "2.3.0",
      +        "minimatch": "3.0.4",
      +        "mkdirp": "0.5.1",
      +        "ncp": "2.0.0",
      +        "proper-lockfile": "1.2.0",
      +        "request": "2.83.0",
      +        "rimraf": "2.6.2",
      +        "sane": "1.7.0",
      +        "semver": "5.4.1",
      +        "systemjs": "0.20.19",
      +        "systemjs-builder": "0.16.12",
      +        "traceur": "0.0.105",
      +        "uglify-js": "2.8.29"
      +      },
      +      "dependencies": {
      +        "core-js": {
      +          "version": "1.2.7",
      +          "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
      +          "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
      +          "optional": true
      +        },
      +        "glob": {
      +          "version": "6.0.4",
      +          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
      +          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
      +          "optional": true,
      +          "requires": {
      +            "inflight": "1.0.6",
      +            "inherits": "2.0.3",
      +            "minimatch": "3.0.4",
      +            "once": "1.4.0",
      +            "path-is-absolute": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "jspm-github": {
      +      "version": "0.14.13",
      +      "resolved": "https://registry.npmjs.org/jspm-github/-/jspm-github-0.14.13.tgz",
      +      "integrity": "sha1-Mm5SF9NjmyFgkpOwHn4Yd13T3Mc=",
      +      "optional": true,
      +      "requires": {
      +        "bluebird": "3.5.1",
      +        "expand-tilde": "1.2.2",
      +        "graceful-fs": "4.1.11",
      +        "mkdirp": "0.5.1",
      +        "netrc": "0.1.4",
      +        "request": "2.83.0",
      +        "rimraf": "2.6.2",
      +        "semver": "5.4.1",
      +        "tar-fs": "1.16.0",
      +        "which": "1.3.0"
      +      }
      +    },
      +    "jspm-npm": {
      +      "version": "0.30.3",
      +      "resolved": "https://registry.npmjs.org/jspm-npm/-/jspm-npm-0.30.3.tgz",
      +      "integrity": "sha512-yZBzuvA+9pGw+KbdnvV8IxAGAkyonwisqu/WbZHZcs5XaQa4vzTpCdAopuGypPEQBuvUjpFenINtP4nJIkHxDw==",
      +      "optional": true,
      +      "requires": {
      +        "bluebird": "3.5.1",
      +        "buffer-peek-stream": "1.0.1",
      +        "graceful-fs": "4.1.11",
      +        "mkdirp": "0.5.1",
      +        "readdirp": "2.1.0",
      +        "request": "2.83.0",
      +        "semver": "5.4.1",
      +        "tar-fs": "1.16.0",
      +        "traceur": "0.0.105",
      +        "which": "1.3.0"
      +      }
      +    },
      +    "jspm-registry": {
      +      "version": "0.4.4",
      +      "resolved": "https://registry.npmjs.org/jspm-registry/-/jspm-registry-0.4.4.tgz",
      +      "integrity": "sha1-1TFmA1qHzc5YXWK6o5dWhUaZbXA=",
      +      "optional": true,
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "rimraf": "2.6.2",
      +        "rsvp": "3.6.2",
      +        "semver": "4.3.6"
      +      },
      +      "dependencies": {
      +        "semver": {
      +          "version": "4.3.6",
      +          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
      +          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
      +          "optional": true
      +        }
      +      }
      +    },
      +    "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"
      +      }
      +    },
      +    "kebab-case": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.0.tgz",
      +      "integrity": "sha1-P55JkK3K0MaGwOcB92RYaPdfkes="
      +    },
      +    "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.6"
      +      }
      +    },
      +    "latest-version": {
      +      "version": "3.1.0",
      +      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
      +      "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
      +      "requires": {
      +        "package-json": "4.0.1"
      +      }
      +    },
      +    "lazy-cache": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
      +      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
      +    },
      +    "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"
      +      }
      +    },
      +    "leven": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
      +      "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA="
      +    },
      +    "liftoff": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
      +      "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=",
      +      "optional": true,
      +      "requires": {
      +        "extend": "3.0.1",
      +        "findup-sync": "0.4.3",
      +        "fined": "1.1.0",
      +        "flagged-respawn": "0.3.2",
      +        "lodash.isplainobject": "4.0.6",
      +        "lodash.isstring": "4.0.1",
      +        "lodash.mapvalues": "4.6.0",
      +        "rechoir": "0.6.2",
      +        "resolve": "1.5.0"
      +      }
      +    },
      +    "linked-list": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/linked-list/-/linked-list-0.1.0.tgz",
      +      "integrity": "sha1-eYsP+X0bkqT9CEgPVa6k6dSdN78="
      +    },
      +    "load-json-file": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
      +      "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "parse-json": "2.2.0",
      +        "pify": "2.3.0",
      +        "strip-bom": "3.0.0"
      +      },
      +      "dependencies": {
      +        "pify": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
      +        }
      +      }
      +    },
      +    "loader-utils": {
      +      "version": "0.2.17",
      +      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
      +      "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
      +      "requires": {
      +        "big.js": "3.2.0",
      +        "emojis-list": "2.1.0",
      +        "json5": "0.5.1",
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "locate-path": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
      +      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
      +      "requires": {
      +        "p-locate": "2.0.0",
      +        "path-exists": "3.0.0"
      +      }
      +    },
      +    "lodash": {
      +      "version": "4.17.4",
      +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
      +      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
      +    },
      +    "lodash-es": {
      +      "version": "4.17.4",
      +      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz",
      +      "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc="
      +    },
      +    "lodash-id": {
      +      "version": "0.14.0",
      +      "resolved": "https://registry.npmjs.org/lodash-id/-/lodash-id-0.14.0.tgz",
      +      "integrity": "sha1-uvSJNOVDobXWNG+MhGmLGoyAOJY="
      +    },
      +    "lodash._reinterpolate": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
      +      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
      +    },
      +    "lodash.assign": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
      +      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
      +    },
      +    "lodash.assignin": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
      +      "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI="
      +    },
      +    "lodash.bind": {
      +      "version": "4.2.1",
      +      "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
      +      "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
      +    },
      +    "lodash.camelcase": {
      +      "version": "4.3.0",
      +      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
      +      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
      +    },
      +    "lodash.clonedeep": {
      +      "version": "4.5.0",
      +      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
      +      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
      +    },
      +    "lodash.defaults": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
      +      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
      +    },
      +    "lodash.escaperegexp": {
      +      "version": "4.1.2",
      +      "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
      +      "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c="
      +    },
      +    "lodash.filter": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
      +      "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4="
      +    },
      +    "lodash.flatten": {
      +      "version": "4.4.0",
      +      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
      +      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
      +    },
      +    "lodash.foreach": {
      +      "version": "4.5.0",
      +      "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
      +      "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM="
      +    },
      +    "lodash.isarray": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz",
      +      "integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM="
      +    },
      +    "lodash.isnumber": {
      +      "version": "3.0.3",
      +      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
      +      "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
      +    },
      +    "lodash.isplainobject": {
      +      "version": "4.0.6",
      +      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
      +      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
      +      "optional": true
      +    },
      +    "lodash.isstring": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
      +      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
      +      "optional": true
      +    },
      +    "lodash.map": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
      +      "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM="
      +    },
      +    "lodash.mapvalues": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
      +      "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
      +      "optional": true
      +    },
      +    "lodash.memoize": {
      +      "version": "4.1.2",
      +      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
      +      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
      +    },
      +    "lodash.merge": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
      +      "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU="
      +    },
      +    "lodash.mergewith": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz",
      +      "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU="
      +    },
      +    "lodash.pad": {
      +      "version": "4.5.1",
      +      "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz",
      +      "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA="
      +    },
      +    "lodash.padend": {
      +      "version": "4.6.1",
      +      "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
      +      "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4="
      +    },
      +    "lodash.padstart": {
      +      "version": "4.6.1",
      +      "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz",
      +      "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs="
      +    },
      +    "lodash.pick": {
      +      "version": "4.4.0",
      +      "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
      +      "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
      +    },
      +    "lodash.reduce": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
      +      "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs="
      +    },
      +    "lodash.reject": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
      +      "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU="
      +    },
      +    "lodash.some": {
      +      "version": "4.6.0",
      +      "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
      +      "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
      +    },
      +    "lodash.template": {
      +      "version": "4.4.0",
      +      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
      +      "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
      +      "requires": {
      +        "lodash._reinterpolate": "3.0.0",
      +        "lodash.templatesettings": "4.1.0"
      +      }
      +    },
      +    "lodash.templatesettings": {
      +      "version": "4.1.0",
      +      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
      +      "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
      +      "requires": {
      +        "lodash._reinterpolate": "3.0.0"
      +      }
      +    },
      +    "lodash.toarray": {
      +      "version": "4.4.0",
      +      "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
      +      "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
      +    },
      +    "lodash.uniq": {
      +      "version": "4.5.0",
      +      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
      +      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
      +    },
      +    "log-symbols": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
      +      "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
      +      "requires": {
      +        "chalk": "1.1.3"
      +      }
      +    },
      +    "longest": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
      +      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
      +    },
      +    "longest-streak": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
      +      "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA=="
      +    },
      +    "loose-envify": {
      +      "version": "1.3.1",
      +      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
      +      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
      +      "requires": {
      +        "js-tokens": "3.0.2"
      +      }
      +    },
      +    "loud-rejection": {
      +      "version": "1.6.0",
      +      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
      +      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
      +      "requires": {
      +        "currently-unhandled": "0.4.1",
      +        "signal-exit": "3.0.2"
      +      }
      +    },
      +    "lowdb": {
      +      "version": "0.16.2",
      +      "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-0.16.2.tgz",
      +      "integrity": "sha1-oql262bsV3lykZcPPIfNthEm+jo=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "is-promise": "2.1.0",
      +        "lodash": "4.17.4",
      +        "steno": "0.4.4"
      +      }
      +    },
      +    "lowercase-keys": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
      +      "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY="
      +    },
      +    "lru-cache": {
      +      "version": "4.1.1",
      +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
      +      "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
      +      "requires": {
      +        "pseudomap": "1.0.2",
      +        "yallist": "2.1.2"
      +      }
      +    },
      +    "ltcdr": {
      +      "version": "2.2.1",
      +      "resolved": "https://registry.npmjs.org/ltcdr/-/ltcdr-2.2.1.tgz",
      +      "integrity": "sha1-Wrh60dTB2rjowIu/A37gwZAih88="
      +    },
      +    "macaddress": {
      +      "version": "0.2.8",
      +      "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
      +      "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI="
      +    },
      +    "make-dir": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz",
      +      "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==",
      +      "requires": {
      +        "pify": "3.0.0"
      +      }
      +    },
      +    "makeerror": {
      +      "version": "1.0.11",
      +      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
      +      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
      +      "optional": true,
      +      "requires": {
      +        "tmpl": "1.0.4"
      +      }
      +    },
      +    "map-cache": {
      +      "version": "0.2.2",
      +      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
      +      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
      +    },
      +    "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.1"
      +      }
      +    },
      +    "markdown-escapes": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.1.tgz",
      +      "integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg="
      +    },
      +    "markdown-table": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.1.tgz",
      +      "integrity": "sha1-Sz3ToTPRUYuO8NvHCb8qG0gkvIw="
      +    },
      +    "math-expression-evaluator": {
      +      "version": "1.2.17",
      +      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
      +      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw="
      +    },
      +    "md5": {
      +      "version": "2.2.1",
      +      "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
      +      "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
      +      "requires": {
      +        "charenc": "0.0.2",
      +        "crypt": "0.0.2",
      +        "is-buffer": "1.1.6"
      +      }
      +    },
      +    "md5-file": {
      +      "version": "3.2.3",
      +      "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz",
      +      "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==",
      +      "requires": {
      +        "buffer-alloc": "1.1.0"
      +      }
      +    },
      +    "md5.js": {
      +      "version": "1.3.4",
      +      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
      +      "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
      +      "requires": {
      +        "hash-base": "3.0.4",
      +        "inherits": "2.0.3"
      +      },
      +      "dependencies": {
      +        "hash-base": {
      +          "version": "3.0.4",
      +          "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
      +          "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
      +          "requires": {
      +            "inherits": "2.0.3",
      +            "safe-buffer": "5.1.1"
      +          }
      +        }
      +      }
      +    },
      +    "mdast-util-compact": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz",
      +      "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=",
      +      "requires": {
      +        "unist-util-modify-children": "1.1.1",
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "mdast-util-definitions": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz",
      +      "integrity": "sha512-9NloPSwaB9f1PKcGqaScfqRf6zKOEjTIXVIbPOmgWI/JKxznlgVXC5C+8qgl3AjYg2vJBRgLYfLICaNiac89iA==",
      +      "requires": {
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "mdast-util-to-hast": {
      +      "version": "2.5.0",
      +      "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-2.5.0.tgz",
      +      "integrity": "sha1-8IeETSVcdUDzaQbaMLoQbA7l7i8=",
      +      "requires": {
      +        "collapse-white-space": "1.0.3",
      +        "detab": "2.0.1",
      +        "mdast-util-definitions": "1.2.2",
      +        "mdurl": "1.0.1",
      +        "trim": "0.0.1",
      +        "trim-lines": "1.1.0",
      +        "unist-builder": "1.0.2",
      +        "unist-util-generated": "1.1.1",
      +        "unist-util-position": "3.0.0",
      +        "unist-util-visit": "1.2.0",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "mdast-util-to-nlcst": {
      +      "version": "3.2.0",
      +      "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.0.tgz",
      +      "integrity": "sha1-2tJihXZY0eq0tYFKIOL5PXyh47Y=",
      +      "requires": {
      +        "nlcst-to-string": "2.0.1",
      +        "repeat-string": "1.6.1",
      +        "unist-util-position": "3.0.0",
      +        "vfile-location": "2.0.2"
      +      }
      +    },
      +    "mdast-util-to-string": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz",
      +      "integrity": "sha1-XEVch4yTVfDB5/PotxnPWDaRrPs="
      +    },
      +    "mdast-util-toc": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-2.0.1.tgz",
      +      "integrity": "sha1-sdLLI7+wH4Evp7Vb/+iwqL7fbyE=",
      +      "requires": {
      +        "github-slugger": "1.2.0",
      +        "mdast-util-to-string": "1.0.4",
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "mdurl": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
      +      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
      +    },
      +    "media-typer": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
      +      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
      +    },
      +    "mem": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
      +      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
      +      "requires": {
      +        "mimic-fn": "1.1.0"
      +      }
      +    },
      +    "memory-fs": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz",
      +      "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
      +      "requires": {
      +        "errno": "0.1.4",
      +        "readable-stream": "2.3.3"
      +      }
      +    },
      +    "merge": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
      +      "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo="
      +    },
      +    "merge-descriptors": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
      +      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
      +    },
      +    "methods": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
      +      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
      +    },
      +    "micro": {
      +      "version": "9.0.0",
      +      "resolved": "https://registry.npmjs.org/micro/-/micro-9.0.0.tgz",
      +      "integrity": "sha512-yXRiZMviDUGtwIgHi+ON+WCZgzncsrcXN/7lWSewvlBWy8oFQ47JPeMqBWI8uluz6TSon9Hq8ME3QuQHxoujXg==",
      +      "requires": {
      +        "is-stream": "1.1.0",
      +        "media-typer": "0.3.0",
      +        "mri": "1.1.0",
      +        "raw-body": "2.3.2"
      +      }
      +    },
      +    "micro-compress": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/micro-compress/-/micro-compress-1.0.0.tgz",
      +      "integrity": "sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=",
      +      "requires": {
      +        "compression": "1.7.1"
      +      }
      +    },
      +    "micromatch": {
      +      "version": "2.3.11",
      +      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
      +      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
      +      "requires": {
      +        "arr-diff": "2.0.0",
      +        "array-unique": "0.2.1",
      +        "braces": "1.8.5",
      +        "expand-brackets": "0.1.5",
      +        "extglob": "0.3.2",
      +        "filename-regex": "2.0.1",
      +        "is-extglob": "1.0.0",
      +        "is-glob": "2.0.1",
      +        "kind-of": "3.2.2",
      +        "normalize-path": "2.1.1",
      +        "object.omit": "2.0.1",
      +        "parse-glob": "3.0.4",
      +        "regex-cache": "0.4.4"
      +      }
      +    },
      +    "miller-rabin": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
      +      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "brorand": "1.1.0"
      +      }
      +    },
      +    "mime": {
      +      "version": "1.6.0",
      +      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
      +      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
      +    },
      +    "mime-db": {
      +      "version": "1.30.0",
      +      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
      +      "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
      +    },
      +    "mime-types": {
      +      "version": "2.1.17",
      +      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
      +      "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
      +      "requires": {
      +        "mime-db": "1.30.0"
      +      }
      +    },
      +    "mimic-fn": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
      +      "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg="
      +    },
      +    "mimic-response": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz",
      +      "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4="
      +    },
      +    "min-document": {
      +      "version": "2.19.0",
      +      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
      +      "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
      +      "requires": {
      +        "dom-walk": "0.1.1"
      +      }
      +    },
      +    "minimalistic-assert": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
      +      "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M="
      +    },
      +    "minimalistic-crypto-utils": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
      +      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
      +    },
      +    "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.8"
      +      }
      +    },
      +    "minimist": {
      +      "version": "0.0.8",
      +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
      +      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
      +    },
      +    "mitt": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz",
      +      "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY="
      +    },
      +    "mixin-deep": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz",
      +      "integrity": "sha1-0CuMb4ttS49ZgtP9AJxJGYUcP+I=",
      +      "requires": {
      +        "for-in": "1.0.2",
      +        "is-extendable": "0.1.1"
      +      }
      +    },
      +    "mkdirp": {
      +      "version": "0.5.1",
      +      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
      +      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
      +      "requires": {
      +        "minimist": "0.0.8"
      +      }
      +    },
      +    "modularscale": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/modularscale/-/modularscale-1.0.2.tgz",
      +      "integrity": "sha1-So8TrzKl5SFPxuLPxSkGSr/X2Hc=",
      +      "requires": {
      +        "lodash.isnumber": "3.0.3"
      +      }
      +    },
      +    "moment": {
      +      "version": "2.19.3",
      +      "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.3.tgz",
      +      "integrity": "sha1-vbmdJw1tf9p4zA+6zoVeJ/59pp8="
      +    },
      +    "mri": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz",
      +      "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o="
      +    },
      +    "ms": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
      +      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
      +    },
      +    "mute-stream": {
      +      "version": "0.0.7",
      +      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
      +      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
      +    },
      +    "nanomatch": {
      +      "version": "1.2.6",
      +      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.6.tgz",
      +      "integrity": "sha512-WJ6XTCbvWXUFPbi/bDwKcYkCeOGUHzaJj72KbuPqGn78Ba/F5Vu26Zlo6SuMQbCIst1RGKL1zfWBCOGAlbRLAg==",
      +      "requires": {
      +        "arr-diff": "4.0.0",
      +        "array-unique": "0.3.2",
      +        "define-property": "1.0.0",
      +        "extend-shallow": "2.0.1",
      +        "fragment-cache": "0.2.1",
      +        "is-odd": "1.0.0",
      +        "kind-of": "5.1.0",
      +        "object.pick": "1.3.0",
      +        "regex-not": "1.0.0",
      +        "snapdragon": "0.8.1",
      +        "to-regex": "3.0.1"
      +      },
      +      "dependencies": {
      +        "arr-diff": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
      +          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
      +        },
      +        "array-unique": {
      +          "version": "0.3.2",
      +          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
      +          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
      +        },
      +        "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=="
      +        }
      +      }
      +    },
      +    "ncp": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
      +      "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
      +      "optional": true
      +    },
      +    "negotiator": {
      +      "version": "0.6.1",
      +      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
      +      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
      +    },
      +    "netrc": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz",
      +      "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=",
      +      "optional": true
      +    },
      +    "nlcst-to-string": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.1.tgz",
      +      "integrity": "sha1-+Q88+QXBN9yO3Ycn+83nPnPCodk="
      +    },
      +    "node-emoji": {
      +      "version": "1.8.1",
      +      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz",
      +      "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==",
      +      "requires": {
      +        "lodash.toarray": "4.4.0"
      +      }
      +    },
      +    "node-fetch": {
      +      "version": "1.7.3",
      +      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
      +      "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
      +      "requires": {
      +        "encoding": "0.1.12",
      +        "is-stream": "1.1.0"
      +      }
      +    },
      +    "node-int64": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
      +      "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
      +    },
      +    "node-libs-browser": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
      +      "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
      +      "requires": {
      +        "assert": "1.4.1",
      +        "browserify-zlib": "0.2.0",
      +        "buffer": "4.9.1",
      +        "console-browserify": "1.1.0",
      +        "constants-browserify": "1.0.0",
      +        "crypto-browserify": "3.12.0",
      +        "domain-browser": "1.1.7",
      +        "events": "1.1.1",
      +        "https-browserify": "1.0.0",
      +        "os-browserify": "0.3.0",
      +        "path-browserify": "0.0.0",
      +        "process": "0.11.10",
      +        "punycode": "1.4.1",
      +        "querystring-es3": "0.2.1",
      +        "readable-stream": "2.3.3",
      +        "stream-browserify": "2.0.1",
      +        "stream-http": "2.7.2",
      +        "string_decoder": "1.0.3",
      +        "timers-browserify": "2.0.4",
      +        "tty-browserify": "0.0.0",
      +        "url": "0.11.0",
      +        "util": "0.10.3",
      +        "vm-browserify": "0.0.4"
      +      },
      +      "dependencies": {
      +        "punycode": {
      +          "version": "1.4.1",
      +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
      +          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
      +        }
      +      }
      +    },
      +    "node-version": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.0.tgz",
      +      "integrity": "sha512-t1V2RFiaTavaW3jtQO0A2nok6k7/Gghuvx2rjvICuT0B0dYaObBQ4U0xHL+ZTPFZodt1LMYG2Vi2nypfz4/AJg=="
      +    },
      +    "noms": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz",
      +      "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "readable-stream": "1.0.34"
      +      },
      +      "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.0.34",
      +          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
      +          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
      +          "requires": {
      +            "core-util-is": "1.0.2",
      +            "inherits": "2.0.3",
      +            "isarray": "0.0.1",
      +            "string_decoder": "0.10.31"
      +          }
      +        },
      +        "string_decoder": {
      +          "version": "0.10.31",
      +          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
      +          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
      +        }
      +      }
      +    },
      +    "normalize-package-data": {
      +      "version": "2.4.0",
      +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
      +      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
      +      "requires": {
      +        "hosted-git-info": "2.5.0",
      +        "is-builtin-module": "1.0.0",
      +        "semver": "5.4.1",
      +        "validate-npm-package-license": "3.0.1"
      +      }
      +    },
      +    "normalize-path": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
      +      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
      +      "requires": {
      +        "remove-trailing-separator": "1.1.0"
      +      }
      +    },
      +    "normalize-range": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
      +      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
      +    },
      +    "normalize-url": {
      +      "version": "1.9.1",
      +      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
      +      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
      +      "requires": {
      +        "object-assign": "4.1.1",
      +        "prepend-http": "1.0.4",
      +        "query-string": "4.3.4",
      +        "sort-keys": "1.1.2"
      +      }
      +    },
      +    "npm-run-path": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
      +      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
      +      "requires": {
      +        "path-key": "2.0.1"
      +      }
      +    },
      +    "npmlog": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.3.tgz",
      +      "integrity": "sha1-Ag+ZNR8MAuOZxnS6JW58TTs90pg=",
      +      "requires": {
      +        "ansi": "0.3.1",
      +        "are-we-there-yet": "1.1.4",
      +        "gauge": "1.2.7"
      +      }
      +    },
      +    "nth-check": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
      +      "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
      +      "requires": {
      +        "boolbase": "1.0.0"
      +      }
      +    },
      +    "null-loader": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz",
      +      "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64="
      +    },
      +    "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.8.2",
      +      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
      +      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
      +    },
      +    "object-assign": {
      +      "version": "4.1.1",
      +      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
      +      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
      +    },
      +    "object-component": {
      +      "version": "0.0.3",
      +      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
      +      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
      +    },
      +    "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.1",
      +        "define-property": "0.2.5",
      +        "kind-of": "3.2.2"
      +      },
      +      "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.6"
      +          }
      +        },
      +        "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.1.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=="
      +            }
      +          }
      +        }
      +      }
      +    },
      +    "object-path": {
      +      "version": "0.11.4",
      +      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
      +      "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
      +    },
      +    "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.1"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "object.defaults": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
      +      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
      +      "optional": true,
      +      "requires": {
      +        "array-each": "1.0.1",
      +        "array-slice": "1.1.0",
      +        "for-own": "1.0.0",
      +        "isobject": "3.0.1"
      +      },
      +      "dependencies": {
      +        "for-own": {
      +          "version": "1.0.0",
      +          "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
      +          "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
      +          "optional": true,
      +          "requires": {
      +            "for-in": "1.0.2"
      +          }
      +        },
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
      +          "optional": true
      +        }
      +      }
      +    },
      +    "object.omit": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
      +      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
      +      "requires": {
      +        "for-own": "0.1.5",
      +        "is-extendable": "0.1.1"
      +      }
      +    },
      +    "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"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "on-finished": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
      +      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
      +      "requires": {
      +        "ee-first": "1.1.1"
      +      }
      +    },
      +    "on-headers": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
      +      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
      +    },
      +    "once": {
      +      "version": "1.4.0",
      +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
      +      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
      +      "requires": {
      +        "wrappy": "1.0.2"
      +      }
      +    },
      +    "onecolor": {
      +      "version": "2.4.2",
      +      "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.4.2.tgz",
      +      "integrity": "sha1-pT7D/xccNEYBbdUhDRobVEv32HQ="
      +    },
      +    "onetime": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
      +      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
      +      "requires": {
      +        "mimic-fn": "1.1.0"
      +      }
      +    },
      +    "open": {
      +      "version": "0.0.5",
      +      "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz",
      +      "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw="
      +    },
      +    "openssl-self-signed-certificate": {
      +      "version": "1.1.6",
      +      "resolved": "https://registry.npmjs.org/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz",
      +      "integrity": "sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ="
      +    },
      +    "opn": {
      +      "version": "5.1.0",
      +      "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz",
      +      "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==",
      +      "requires": {
      +        "is-wsl": "1.1.0"
      +      }
      +    },
      +    "optimist": {
      +      "version": "0.6.1",
      +      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
      +      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
      +      "requires": {
      +        "minimist": "0.0.8",
      +        "wordwrap": "0.0.2"
      +      }
      +    },
      +    "original": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
      +      "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
      +      "requires": {
      +        "url-parse": "1.0.5"
      +      },
      +      "dependencies": {
      +        "url-parse": {
      +          "version": "1.0.5",
      +          "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
      +          "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
      +          "requires": {
      +            "querystringify": "0.0.4",
      +            "requires-port": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "os-browserify": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
      +      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
      +    },
      +    "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": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
      +      "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
      +      "requires": {
      +        "execa": "0.7.0",
      +        "lcid": "1.0.0",
      +        "mem": "1.1.0"
      +      },
      +      "dependencies": {
      +        "execa": {
      +          "version": "0.7.0",
      +          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
      +          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
      +          "requires": {
      +            "cross-spawn": "5.1.0",
      +            "get-stream": "3.0.0",
      +            "is-stream": "1.1.0",
      +            "npm-run-path": "2.0.2",
      +            "p-finally": "1.0.0",
      +            "signal-exit": "3.0.2",
      +            "strip-eof": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "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="
      +    },
      +    "output-file-sync": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
      +      "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "mkdirp": "0.5.1",
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "p-cancelable": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
      +      "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw=="
      +    },
      +    "p-finally": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
      +      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
      +    },
      +    "p-limit": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
      +      "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw="
      +    },
      +    "p-locate": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
      +      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
      +      "requires": {
      +        "p-limit": "1.1.0"
      +      }
      +    },
      +    "p-map": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
      +      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA=="
      +    },
      +    "p-timeout": {
      +      "version": "1.2.1",
      +      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz",
      +      "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=",
      +      "requires": {
      +        "p-finally": "1.0.0"
      +      }
      +    },
      +    "package-json": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
      +      "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
      +      "requires": {
      +        "got": "6.7.1",
      +        "registry-auth-token": "3.3.1",
      +        "registry-url": "3.1.0",
      +        "semver": "5.4.1"
      +      }
      +    },
      +    "pako": {
      +      "version": "1.0.6",
      +      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
      +      "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
      +    },
      +    "parse-asn1": {
      +      "version": "5.1.0",
      +      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
      +      "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
      +      "requires": {
      +        "asn1.js": "4.9.2",
      +        "browserify-aes": "1.1.1",
      +        "create-hash": "1.1.3",
      +        "evp_bytestokey": "1.0.3",
      +        "pbkdf2": "3.0.14"
      +      }
      +    },
      +    "parse-english": {
      +      "version": "4.1.0",
      +      "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.1.0.tgz",
      +      "integrity": "sha512-gj0dubsg1Kg9WgB9QF/WcF8C4y0tKytj0+B/S/R2Y3NMfNPwxpg+MAkqnEodzYkcCZmelLXFaKB3d1ihBMR7og==",
      +      "requires": {
      +        "nlcst-to-string": "2.0.1",
      +        "parse-latin": "4.1.0",
      +        "unist-util-modify-children": "1.1.1",
      +        "unist-util-visit-children": "1.1.1"
      +      }
      +    },
      +    "parse-entities": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz",
      +      "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=",
      +      "requires": {
      +        "character-entities": "1.2.1",
      +        "character-entities-legacy": "1.1.1",
      +        "character-reference-invalid": "1.1.1",
      +        "is-alphanumerical": "1.0.1",
      +        "is-decimal": "1.0.1",
      +        "is-hexadecimal": "1.0.1"
      +      }
      +    },
      +    "parse-filepath": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz",
      +      "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=",
      +      "requires": {
      +        "is-absolute": "0.2.6",
      +        "map-cache": "0.2.2",
      +        "path-root": "0.1.1"
      +      }
      +    },
      +    "parse-glob": {
      +      "version": "3.0.4",
      +      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
      +      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
      +      "requires": {
      +        "glob-base": "0.3.0",
      +        "is-dotfile": "1.0.3",
      +        "is-extglob": "1.0.0",
      +        "is-glob": "2.0.1"
      +      }
      +    },
      +    "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.3.1"
      +      }
      +    },
      +    "parse-latin": {
      +      "version": "4.1.0",
      +      "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.1.0.tgz",
      +      "integrity": "sha512-mLNys0aA6v2bt4+/dmM5F7tRrLZ45Wg19++xr8iCo813NdurhIAiZpcXwvb086DvVGwSkcGUmz+AkbthMVVNyg==",
      +      "requires": {
      +        "nlcst-to-string": "2.0.1",
      +        "unist-util-modify-children": "1.1.1",
      +        "unist-util-visit-children": "1.1.1"
      +      }
      +    },
      +    "parse-numeric-range": {
      +      "version": "0.0.2",
      +      "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz",
      +      "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ="
      +    },
      +    "parse-passwd": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
      +      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
      +    },
      +    "parse-unit": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz",
      +      "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8="
      +    },
      +    "parseqs": {
      +      "version": "0.0.5",
      +      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
      +      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
      +      "requires": {
      +        "better-assert": "1.0.2"
      +      }
      +    },
      +    "parseuri": {
      +      "version": "0.0.5",
      +      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
      +      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
      +      "requires": {
      +        "better-assert": "1.0.2"
      +      }
      +    },
      +    "parseurl": {
      +      "version": "1.3.2",
      +      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
      +      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
      +    },
      +    "pascalcase": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
      +      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
      +    },
      +    "path-browserify": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
      +      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo="
      +    },
      +    "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": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
      +      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
      +    },
      +    "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-is-inside": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
      +      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
      +    },
      +    "path-key": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
      +      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
      +    },
      +    "path-parse": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
      +      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
      +    },
      +    "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.2"
      +      }
      +    },
      +    "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-to-regexp": {
      +      "version": "0.1.7",
      +      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
      +      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
      +    },
      +    "path-type": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
      +      "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
      +      "requires": {
      +        "pify": "2.3.0"
      +      },
      +      "dependencies": {
      +        "pify": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
      +        }
      +      }
      +    },
      +    "pbkdf2": {
      +      "version": "3.0.14",
      +      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
      +      "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
      +      "requires": {
      +        "create-hash": "1.1.3",
      +        "create-hmac": "1.1.6",
      +        "ripemd160": "2.0.1",
      +        "safe-buffer": "5.1.1",
      +        "sha.js": "2.4.9"
      +      }
      +    },
      +    "pbkdf2-compat": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz",
      +      "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og="
      +    },
      +    "performance-now": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
      +      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
      +    },
      +    "pify": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
      +      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
      +    },
      +    "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.4"
      +      }
      +    },
      +    "pixrem": {
      +      "version": "3.0.2",
      +      "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-3.0.2.tgz",
      +      "integrity": "sha1-MNG6+0w73Ojpu0vVahOYVhkyDDQ=",
      +      "requires": {
      +        "browserslist": "1.7.7",
      +        "postcss": "5.2.18",
      +        "reduce-css-calc": "1.3.0"
      +      },
      +      "dependencies": {
      +        "browserslist": {
      +          "version": "1.7.7",
      +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
      +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
      +          "requires": {
      +            "caniuse-db": "1.0.30000777",
      +            "electron-to-chromium": "1.3.27"
      +          }
      +        }
      +      }
      +    },
      +    "pkg-conf": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz",
      +      "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=",
      +      "requires": {
      +        "find-up": "1.1.2",
      +        "load-json-file": "1.1.0",
      +        "object-assign": "4.1.1",
      +        "symbol": "0.2.3"
      +      },
      +      "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.11",
      +            "parse-json": "2.2.0",
      +            "pify": "2.3.0",
      +            "pinkie-promise": "2.0.1",
      +            "strip-bom": "2.0.0"
      +          }
      +        },
      +        "pify": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
      +        },
      +        "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.1"
      +          }
      +        }
      +      }
      +    },
      +    "pkg-dir": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
      +      "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
      +      "requires": {
      +        "find-up": "1.1.2"
      +      }
      +    },
      +    "pkg-resolve": {
      +      "version": "0.1.14",
      +      "resolved": "https://registry.npmjs.org/pkg-resolve/-/pkg-resolve-0.1.14.tgz",
      +      "integrity": "sha1-Mpsudsy7Ny4i5qOkHLMKsEV4Nro=",
      +      "optional": true,
      +      "requires": {
      +        "jspm": "0.17.0-beta.47",
      +        "resolve": "1.5.0"
      +      }
      +    },
      +    "pkginfo": {
      +      "version": "0.4.1",
      +      "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
      +      "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
      +    },
      +    "pleeease-filters": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-3.0.1.tgz",
      +      "integrity": "sha1-Tf4OjxBGYTUXxktyi8gGCKfr8i8=",
      +      "requires": {
      +        "onecolor": "2.4.2",
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "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": "5.2.18",
      +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
      +      "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
      +      "requires": {
      +        "chalk": "1.1.3",
      +        "js-base64": "2.4.0",
      +        "source-map": "0.5.7",
      +        "supports-color": "3.2.3"
      +      },
      +      "dependencies": {
      +        "supports-color": {
      +          "version": "3.2.3",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
      +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
      +          "requires": {
      +            "has-flag": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-apply": {
      +      "version": "0.3.0",
      +      "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.3.0.tgz",
      +      "integrity": "sha1-ovN8W9+ogeTBX08kXsDNlt0ucNU=",
      +      "requires": {
      +        "balanced-match": "0.4.2",
      +        "postcss": "5.2.18"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
      +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
      +        }
      +      }
      +    },
      +    "postcss-attribute-case-insensitive": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-1.0.1.tgz",
      +      "integrity": "sha1-zrc3d+EGFn6yM/GTjJvZ8uaXMI0=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-selector-parser": "2.2.3"
      +      }
      +    },
      +    "postcss-browser-reporter": {
      +      "version": "0.5.0",
      +      "resolved": "https://registry.npmjs.org/postcss-browser-reporter/-/postcss-browser-reporter-0.5.0.tgz",
      +      "integrity": "sha1-rgad0IbVc4jRluHaw5y412Jv60g=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-calc": {
      +      "version": "5.3.1",
      +      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
      +      "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-message-helpers": "2.0.0",
      +        "reduce-css-calc": "1.3.0"
      +      }
      +    },
      +    "postcss-color-function": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-2.0.1.tgz",
      +      "integrity": "sha1-mtIm9VDop8f4uKd4YFRbbdf1UkE=",
      +      "requires": {
      +        "css-color-function": "1.3.3",
      +        "postcss": "5.2.18",
      +        "postcss-message-helpers": "2.0.0",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-color-gray": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-3.0.1.tgz",
      +      "integrity": "sha1-dEMu3mbdg7HRNjVlxos3bhj/Z3A=",
      +      "requires": {
      +        "color": "0.11.4",
      +        "postcss": "5.2.18",
      +        "postcss-message-helpers": "2.0.0",
      +        "reduce-function-call": "1.0.2"
      +      }
      +    },
      +    "postcss-color-hex-alpha": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-2.0.0.tgz",
      +      "integrity": "sha1-RP1uyt5mAoZIyIHLZQTNy/3GzQk=",
      +      "requires": {
      +        "color": "0.10.1",
      +        "postcss": "5.2.18",
      +        "postcss-message-helpers": "2.0.0"
      +      },
      +      "dependencies": {
      +        "color": {
      +          "version": "0.10.1",
      +          "resolved": "https://registry.npmjs.org/color/-/color-0.10.1.tgz",
      +          "integrity": "sha1-wEGI34KiCd3rzOzazT7DIPGTc58=",
      +          "requires": {
      +            "color-convert": "0.5.3",
      +            "color-string": "0.3.0"
      +          }
      +        },
      +        "color-convert": {
      +          "version": "0.5.3",
      +          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
      +          "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
      +        }
      +      }
      +    },
      +    "postcss-color-hsl": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-1.0.5.tgz",
      +      "integrity": "sha1-9Tuxw0gxDOMHrYnjGBqGRzi15oc=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0",
      +        "units-css": "0.4.0"
      +      }
      +    },
      +    "postcss-color-hwb": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-2.0.1.tgz",
      +      "integrity": "sha1-1jr6+bcMtZX5AKKcn+V78qMvq+w=",
      +      "requires": {
      +        "color": "0.11.4",
      +        "postcss": "5.2.18",
      +        "postcss-message-helpers": "2.0.0",
      +        "reduce-function-call": "1.0.2"
      +      }
      +    },
      +    "postcss-color-rebeccapurple": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-2.0.1.tgz",
      +      "integrity": "sha1-dMZETny7fYVhO19yht96SRYIRRw=",
      +      "requires": {
      +        "color": "0.11.4",
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-color-rgb": {
      +      "version": "1.1.4",
      +      "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-1.1.4.tgz",
      +      "integrity": "sha1-8pJD4i6OjBNDRHQJI3LUzmBb6Lw=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-color-rgba-fallback": {
      +      "version": "2.2.0",
      +      "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-2.2.0.tgz",
      +      "integrity": "sha1-bSlJG+WZCpMXPUfnx29YELCUAro=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0",
      +        "rgb-hex": "1.0.0"
      +      }
      +    },
      +    "postcss-colormin": {
      +      "version": "2.2.2",
      +      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
      +      "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
      +      "requires": {
      +        "colormin": "1.1.2",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-convert-values": {
      +      "version": "2.6.1",
      +      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
      +      "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-cssnext": {
      +      "version": "2.11.0",
      +      "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-2.11.0.tgz",
      +      "integrity": "sha1-MeaPAB5AlgTacDtm3hS4uMjJ8rE=",
      +      "requires": {
      +        "autoprefixer": "6.7.7",
      +        "caniuse-api": "1.6.1",
      +        "chalk": "1.1.3",
      +        "pixrem": "3.0.2",
      +        "pleeease-filters": "3.0.1",
      +        "postcss": "5.2.18",
      +        "postcss-apply": "0.3.0",
      +        "postcss-attribute-case-insensitive": "1.0.1",
      +        "postcss-calc": "5.3.1",
      +        "postcss-color-function": "2.0.1",
      +        "postcss-color-gray": "3.0.1",
      +        "postcss-color-hex-alpha": "2.0.0",
      +        "postcss-color-hsl": "1.0.5",
      +        "postcss-color-hwb": "2.0.1",
      +        "postcss-color-rebeccapurple": "2.0.1",
      +        "postcss-color-rgb": "1.1.4",
      +        "postcss-color-rgba-fallback": "2.2.0",
      +        "postcss-custom-media": "5.0.1",
      +        "postcss-custom-properties": "5.0.2",
      +        "postcss-custom-selectors": "3.0.0",
      +        "postcss-font-family-system-ui": "1.0.2",
      +        "postcss-font-variant": "2.0.1",
      +        "postcss-image-set-polyfill": "0.3.5",
      +        "postcss-initial": "1.5.3",
      +        "postcss-media-minmax": "2.1.2",
      +        "postcss-nesting": "2.3.1",
      +        "postcss-pseudo-class-any-link": "1.0.0",
      +        "postcss-pseudoelements": "3.0.0",
      +        "postcss-replace-overflow-wrap": "1.0.0",
      +        "postcss-selector-matches": "2.0.5",
      +        "postcss-selector-not": "2.0.0"
      +      }
      +    },
      +    "postcss-custom-media": {
      +      "version": "5.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-5.0.1.tgz",
      +      "integrity": "sha1-E40loYS/LrVN4S1VpsAcMKnYvYE=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-custom-properties": {
      +      "version": "5.0.2",
      +      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-5.0.2.tgz",
      +      "integrity": "sha1-lxnXjy2pz59TgQrrwj1GVhMKzrE=",
      +      "requires": {
      +        "balanced-match": "0.4.2",
      +        "postcss": "5.2.18"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
      +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
      +        }
      +      }
      +    },
      +    "postcss-custom-selectors": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-3.0.0.tgz",
      +      "integrity": "sha1-j4Ekn17Qeo0JF89qOf5bBWt/lqw=",
      +      "requires": {
      +        "balanced-match": "0.2.1",
      +        "postcss": "5.2.18",
      +        "postcss-selector-matches": "2.0.5"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.2.1",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz",
      +          "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc="
      +        }
      +      }
      +    },
      +    "postcss-discard-comments": {
      +      "version": "2.0.4",
      +      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
      +      "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-discard-duplicates": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
      +      "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-discard-empty": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
      +      "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-discard-overridden": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
      +      "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-discard-unused": {
      +      "version": "2.2.3",
      +      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
      +      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "uniqs": "2.0.0"
      +      }
      +    },
      +    "postcss-filter-plugins": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
      +      "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "uniqid": "4.1.1"
      +      }
      +    },
      +    "postcss-font-family-system-ui": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-1.0.2.tgz",
      +      "integrity": "sha1-PhpeP7fjHl6ecUOcyw6AFFVpJ8c=",
      +      "requires": {
      +        "lodash": "4.17.4",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-font-variant": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-2.0.1.tgz",
      +      "integrity": "sha1-fKKRA/WfoCyjrOLKIrL3VoU9Tvg=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-image-set-polyfill": {
      +      "version": "0.3.5",
      +      "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz",
      +      "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=",
      +      "requires": {
      +        "postcss": "6.0.14",
      +        "postcss-media-query-parser": "0.2.3"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-import": {
      +      "version": "8.2.0",
      +      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-8.2.0.tgz",
      +      "integrity": "sha1-+S/SRU4h7077HnXADEesA/TROXw=",
      +      "requires": {
      +        "object-assign": "4.1.1",
      +        "pkg-resolve": "0.1.14",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0",
      +        "promise-each": "2.2.0",
      +        "read-cache": "1.0.0",
      +        "resolve": "1.5.0"
      +      }
      +    },
      +    "postcss-initial": {
      +      "version": "1.5.3",
      +      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-1.5.3.tgz",
      +      "integrity": "sha1-IMPpHJaCLdsb7UlQjbltVrrDd9A=",
      +      "requires": {
      +        "lodash.template": "4.4.0",
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-loader": {
      +      "version": "0.13.0",
      +      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-0.13.0.tgz",
      +      "integrity": "sha1-cv2vDSlETfd9N1HOTmncQLyZ7YU=",
      +      "requires": {
      +        "loader-utils": "0.2.17",
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-media-minmax": {
      +      "version": "2.1.2",
      +      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-2.1.2.tgz",
      +      "integrity": "sha1-RExc+JJqteT9iiUJ6Sl+dRZJzfg=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-media-query-parser": {
      +      "version": "0.2.3",
      +      "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
      +      "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ="
      +    },
      +    "postcss-merge-idents": {
      +      "version": "2.1.7",
      +      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
      +      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
      +      "requires": {
      +        "has": "1.0.1",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-merge-longhand": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
      +      "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-merge-rules": {
      +      "version": "2.1.2",
      +      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
      +      "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
      +      "requires": {
      +        "browserslist": "1.7.7",
      +        "caniuse-api": "1.6.1",
      +        "postcss": "5.2.18",
      +        "postcss-selector-parser": "2.2.3",
      +        "vendors": "1.0.1"
      +      },
      +      "dependencies": {
      +        "browserslist": {
      +          "version": "1.7.7",
      +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
      +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
      +          "requires": {
      +            "caniuse-db": "1.0.30000777",
      +            "electron-to-chromium": "1.3.27"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-message-helpers": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
      +      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4="
      +    },
      +    "postcss-minify-font-values": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
      +      "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
      +      "requires": {
      +        "object-assign": "4.1.1",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-minify-gradients": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
      +      "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-minify-params": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
      +      "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
      +      "requires": {
      +        "alphanum-sort": "1.0.2",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0",
      +        "uniqs": "2.0.0"
      +      }
      +    },
      +    "postcss-minify-selectors": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
      +      "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
      +      "requires": {
      +        "alphanum-sort": "1.0.2",
      +        "has": "1.0.1",
      +        "postcss": "5.2.18",
      +        "postcss-selector-parser": "2.2.3"
      +      }
      +    },
      +    "postcss-modules-extract-imports": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
      +      "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
      +      "requires": {
      +        "postcss": "6.0.14"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-modules-local-by-default": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
      +      "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
      +      "requires": {
      +        "css-selector-tokenizer": "0.7.0",
      +        "postcss": "6.0.14"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-modules-scope": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
      +      "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
      +      "requires": {
      +        "css-selector-tokenizer": "0.7.0",
      +        "postcss": "6.0.14"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-modules-values": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
      +      "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
      +      "requires": {
      +        "icss-replace-symbols": "1.1.0",
      +        "postcss": "6.0.14"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-nesting": {
      +      "version": "2.3.1",
      +      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-2.3.1.tgz",
      +      "integrity": "sha1-lKa2pO9wf77CCof+5clXdZtOAc8=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-normalize-charset": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
      +      "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-normalize-url": {
      +      "version": "3.0.8",
      +      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
      +      "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
      +      "requires": {
      +        "is-absolute-url": "2.1.0",
      +        "normalize-url": "1.9.1",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-ordered-values": {
      +      "version": "2.2.3",
      +      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
      +      "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-pseudo-class-any-link": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-1.0.0.tgz",
      +      "integrity": "sha1-kDI5GWQB0zX+c6x1YYb6YuaTryY=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-selector-parser": "1.3.3"
      +      },
      +      "dependencies": {
      +        "postcss-selector-parser": {
      +          "version": "1.3.3",
      +          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz",
      +          "integrity": "sha1-0u4Z33pk+O8hwacchvfUg1yIwoE=",
      +          "requires": {
      +            "flatten": "1.0.2",
      +            "indexes-of": "1.0.1",
      +            "uniq": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "postcss-pseudoelements": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-3.0.0.tgz",
      +      "integrity": "sha1-bGghd8eQC6BTtt8X+MWQKEx7i7w=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-reduce-idents": {
      +      "version": "2.4.0",
      +      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
      +      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
      +      "requires": {
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-reduce-initial": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
      +      "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-reduce-transforms": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
      +      "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
      +      "requires": {
      +        "has": "1.0.1",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0"
      +      }
      +    },
      +    "postcss-replace-overflow-wrap": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-1.0.0.tgz",
      +      "integrity": "sha1-8KA7Meq5Y2ppNr/SEOKu8bQ0pkM=",
      +      "requires": {
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-reporter": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz",
      +      "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=",
      +      "requires": {
      +        "chalk": "1.1.3",
      +        "lodash": "4.17.4",
      +        "log-symbols": "1.0.2",
      +        "postcss": "5.2.18"
      +      }
      +    },
      +    "postcss-selector-matches": {
      +      "version": "2.0.5",
      +      "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-2.0.5.tgz",
      +      "integrity": "sha1-+g9Dvle2jneqTNEYBwI0kqExAn8=",
      +      "requires": {
      +        "balanced-match": "0.4.2",
      +        "postcss": "5.2.18"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
      +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
      +        }
      +      }
      +    },
      +    "postcss-selector-not": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-2.0.0.tgz",
      +      "integrity": "sha1-xzrSGj91I0vuf+4mnhVP1qhpeY0=",
      +      "requires": {
      +        "balanced-match": "0.2.1",
      +        "postcss": "5.2.18"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.2.1",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz",
      +          "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc="
      +        }
      +      }
      +    },
      +    "postcss-selector-parser": {
      +      "version": "2.2.3",
      +      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
      +      "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
      +      "requires": {
      +        "flatten": "1.0.2",
      +        "indexes-of": "1.0.1",
      +        "uniq": "1.0.1"
      +      }
      +    },
      +    "postcss-svgo": {
      +      "version": "2.1.6",
      +      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
      +      "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
      +      "requires": {
      +        "is-svg": "2.1.0",
      +        "postcss": "5.2.18",
      +        "postcss-value-parser": "3.3.0",
      +        "svgo": "0.7.2"
      +      }
      +    },
      +    "postcss-unique-selectors": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
      +      "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
      +      "requires": {
      +        "alphanum-sort": "1.0.2",
      +        "postcss": "5.2.18",
      +        "uniqs": "2.0.0"
      +      }
      +    },
      +    "postcss-value-parser": {
      +      "version": "3.3.0",
      +      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
      +      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU="
      +    },
      +    "postcss-zindex": {
      +      "version": "2.2.0",
      +      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
      +      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
      +      "requires": {
      +        "has": "1.0.1",
      +        "postcss": "5.2.18",
      +        "uniqs": "2.0.0"
      +      }
      +    },
      +    "prepend-http": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
      +      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
      +    },
      +    "preserve": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
      +      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
      +    },
      +    "pretty-bytes": {
      +      "version": "4.0.2",
      +      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
      +      "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk="
      +    },
      +    "pretty-error": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
      +      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
      +      "requires": {
      +        "renderkid": "2.0.1",
      +        "utila": "0.4.0"
      +      }
      +    },
      +    "prismjs": {
      +      "version": "1.9.0",
      +      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.9.0.tgz",
      +      "integrity": "sha1-+j4tntw8OIfB8fMJXUHx+bQgDw8=",
      +      "requires": {
      +        "clipboard": "1.7.1"
      +      }
      +    },
      +    "private": {
      +      "version": "0.1.8",
      +      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
      +      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
      +    },
      +    "process": {
      +      "version": "0.11.10",
      +      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
      +      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
      +    },
      +    "process-nextick-args": {
      +      "version": "1.0.7",
      +      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
      +      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
      +    },
      +    "promise": {
      +      "version": "7.3.1",
      +      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
      +      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
      +      "requires": {
      +        "asap": "2.0.6"
      +      }
      +    },
      +    "promise-each": {
      +      "version": "2.2.0",
      +      "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz",
      +      "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=",
      +      "requires": {
      +        "any-promise": "0.1.0"
      +      }
      +    },
      +    "prop-types": {
      +      "version": "15.6.0",
      +      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz",
      +      "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=",
      +      "requires": {
      +        "fbjs": "0.8.16",
      +        "loose-envify": "1.3.1",
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "proper-lockfile": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz",
      +      "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=",
      +      "optional": true,
      +      "requires": {
      +        "err-code": "1.1.2",
      +        "extend": "3.0.1",
      +        "graceful-fs": "4.1.11",
      +        "retry": "0.10.1"
      +      }
      +    },
      +    "property-information": {
      +      "version": "3.2.0",
      +      "resolved": "https://registry.npmjs.org/property-information/-/property-information-3.2.0.tgz",
      +      "integrity": "sha1-/RSDyPusYYCPX+NZ52k6H0ilgzE="
      +    },
      +    "proxy-addr": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
      +      "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
      +      "requires": {
      +        "forwarded": "0.1.2",
      +        "ipaddr.js": "1.5.2"
      +      }
      +    },
      +    "prr": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
      +      "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo="
      +    },
      +    "pseudomap": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
      +      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
      +    },
      +    "public-encrypt": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
      +      "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
      +      "requires": {
      +        "bn.js": "4.11.8",
      +        "browserify-rsa": "4.0.1",
      +        "create-hash": "1.1.3",
      +        "parse-asn1": "5.1.0",
      +        "randombytes": "2.0.5"
      +      }
      +    },
      +    "pump": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
      +      "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
      +      "requires": {
      +        "end-of-stream": "1.4.0",
      +        "once": "1.4.0"
      +      }
      +    },
      +    "punycode": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
      +      "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0="
      +    },
      +    "q": {
      +      "version": "1.5.1",
      +      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
      +      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
      +    },
      +    "qs": {
      +      "version": "6.5.1",
      +      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
      +      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
      +    },
      +    "query-string": {
      +      "version": "4.3.4",
      +      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
      +      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
      +      "requires": {
      +        "object-assign": "4.1.1",
      +        "strict-uri-encode": "1.1.0"
      +      }
      +    },
      +    "querystring": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
      +      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
      +    },
      +    "querystring-es3": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
      +      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
      +    },
      +    "querystringify": {
      +      "version": "0.0.4",
      +      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz",
      +      "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw="
      +    },
      +    "randomatic": {
      +      "version": "1.1.7",
      +      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
      +      "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
      +      "requires": {
      +        "is-number": "3.0.0",
      +        "kind-of": "4.0.0"
      +      },
      +      "dependencies": {
      +        "is-number": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
      +          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
      +          "requires": {
      +            "kind-of": "3.2.2"
      +          },
      +          "dependencies": {
      +            "kind-of": {
      +              "version": "3.2.2",
      +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
      +              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
      +              "requires": {
      +                "is-buffer": "1.1.6"
      +              }
      +            }
      +          }
      +        },
      +        "kind-of": {
      +          "version": "4.0.0",
      +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
      +          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
      +          "requires": {
      +            "is-buffer": "1.1.6"
      +          }
      +        }
      +      }
      +    },
      +    "randombytes": {
      +      "version": "2.0.5",
      +      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
      +      "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
      +      "requires": {
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "randomfill": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz",
      +      "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==",
      +      "requires": {
      +        "randombytes": "2.0.5",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "range-parser": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
      +      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
      +    },
      +    "raw-body": {
      +      "version": "2.3.2",
      +      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
      +      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
      +      "requires": {
      +        "bytes": "3.0.0",
      +        "http-errors": "1.6.2",
      +        "iconv-lite": "0.4.19",
      +        "unpipe": "1.0.0"
      +      }
      +    },
      +    "raw-loader": {
      +      "version": "0.5.1",
      +      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
      +      "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao="
      +    },
      +    "rc": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
      +      "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
      +      "requires": {
      +        "deep-extend": "0.4.2",
      +        "ini": "1.3.5",
      +        "minimist": "1.2.0",
      +        "strip-json-comments": "2.0.1"
      +      },
      +      "dependencies": {
      +        "minimist": {
      +          "version": "1.2.0",
      +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
      +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
      +        }
      +      }
      +    },
      +    "react": {
      +      "version": "15.6.2",
      +      "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
      +      "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=",
      +      "requires": {
      +        "create-react-class": "15.6.2",
      +        "fbjs": "0.8.16",
      +        "loose-envify": "1.3.1",
      +        "object-assign": "4.1.1",
      +        "prop-types": "15.6.0"
      +      }
      +    },
      +    "react-deep-force-update": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz",
      +      "integrity": "sha1-jqQmPNZFWgULN0RbPwj9g52G6Qk="
      +    },
      +    "react-dev-utils": {
      +      "version": "4.2.1",
      +      "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.1.tgz",
      +      "integrity": "sha1-nydj57r6GhucUiVNKked7sKA8RE=",
      +      "requires": {
      +        "address": "1.0.3",
      +        "babel-code-frame": "6.26.0",
      +        "chalk": "1.1.3",
      +        "cross-spawn": "5.1.0",
      +        "detect-port-alt": "1.1.3",
      +        "escape-string-regexp": "1.0.5",
      +        "filesize": "3.5.11",
      +        "global-modules": "1.0.0",
      +        "gzip-size": "3.0.0",
      +        "inquirer": "3.3.0",
      +        "is-root": "1.0.0",
      +        "opn": "5.1.0",
      +        "react-error-overlay": "3.0.0",
      +        "recursive-readdir": "2.2.1",
      +        "shell-quote": "1.6.1",
      +        "sockjs-client": "1.1.4",
      +        "strip-ansi": "3.0.1",
      +        "text-table": "0.2.0"
      +      },
      +      "dependencies": {
      +        "detect-port-alt": {
      +          "version": "1.1.3",
      +          "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz",
      +          "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=",
      +          "requires": {
      +            "address": "1.0.3",
      +            "debug": "2.6.9"
      +          }
      +        },
      +        "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"
      +          }
      +        },
      +        "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.2",
      +            "is-windows": "1.0.1",
      +            "resolve-dir": "1.0.1"
      +          }
      +        },
      +        "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.5",
      +            "is-windows": "1.0.1",
      +            "which": "1.3.0"
      +          }
      +        },
      +        "is-windows": {
      +          "version": "1.0.1",
      +          "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz",
      +          "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk="
      +        },
      +        "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.2",
      +            "global-modules": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "react-dom": {
      +      "version": "15.6.2",
      +      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz",
      +      "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=",
      +      "requires": {
      +        "fbjs": "0.8.16",
      +        "loose-envify": "1.3.1",
      +        "object-assign": "4.1.1",
      +        "prop-types": "15.6.0"
      +      }
      +    },
      +    "react-error-overlay": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz",
      +      "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw=="
      +    },
      +    "react-helmet": {
      +      "version": "5.2.0",
      +      "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz",
      +      "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=",
      +      "requires": {
      +        "deep-equal": "1.0.1",
      +        "object-assign": "4.1.1",
      +        "prop-types": "15.6.0",
      +        "react-side-effect": "1.1.3"
      +      }
      +    },
      +    "react-hot-loader": {
      +      "version": "3.1.3",
      +      "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz",
      +      "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==",
      +      "requires": {
      +        "global": "4.3.2",
      +        "react-deep-force-update": "2.1.1",
      +        "react-proxy": "3.0.0-alpha.1",
      +        "redbox-react": "1.5.0",
      +        "source-map": "0.6.1"
      +      },
      +      "dependencies": {
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        }
      +      }
      +    },
      +    "react-proxy": {
      +      "version": "3.0.0-alpha.1",
      +      "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz",
      +      "integrity": "sha1-RABCa8+oDKpnJMd1VpUxUgn6Swc=",
      +      "requires": {
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "react-router": {
      +      "version": "4.2.0",
      +      "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz",
      +      "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==",
      +      "requires": {
      +        "history": "4.7.2",
      +        "hoist-non-react-statics": "2.3.1",
      +        "invariant": "2.2.2",
      +        "loose-envify": "1.3.1",
      +        "path-to-regexp": "1.7.0",
      +        "prop-types": "15.6.0",
      +        "warning": "3.0.0"
      +      },
      +      "dependencies": {
      +        "isarray": {
      +          "version": "0.0.1",
      +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
      +          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
      +        },
      +        "path-to-regexp": {
      +          "version": "1.7.0",
      +          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
      +          "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
      +          "requires": {
      +            "isarray": "0.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "react-router-dom": {
      +      "version": "4.2.2",
      +      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz",
      +      "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==",
      +      "requires": {
      +        "history": "4.7.2",
      +        "invariant": "2.2.2",
      +        "loose-envify": "1.3.1",
      +        "prop-types": "15.6.0",
      +        "react-router": "4.2.0",
      +        "warning": "3.0.0"
      +      }
      +    },
      +    "react-side-effect": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.3.tgz",
      +      "integrity": "sha1-USwlq+DewXKDTEAB7FxR4E1BvFw=",
      +      "requires": {
      +        "exenv": "1.2.2",
      +        "shallowequal": "1.0.2"
      +      }
      +    },
      +    "react-typography": {
      +      "version": "0.16.5",
      +      "resolved": "https://registry.npmjs.org/react-typography/-/react-typography-0.16.5.tgz",
      +      "integrity": "sha512-cUK2ATEIg0W6d/63GGSed6FHed7C9xAbxwQ4IjDJFiv/JIlqc3RUbq4DIWi+xMRtiikwqO7i2EG9+bq8gzB2EQ=="
      +    },
      +    "read": {
      +      "version": "1.0.7",
      +      "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
      +      "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
      +      "requires": {
      +        "mute-stream": "0.0.7"
      +      }
      +    },
      +    "read-cache": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
      +      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
      +      "requires": {
      +        "pify": "2.3.0"
      +      },
      +      "dependencies": {
      +        "pify": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
      +          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
      +        }
      +      }
      +    },
      +    "read-pkg": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
      +      "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
      +      "requires": {
      +        "load-json-file": "2.0.0",
      +        "normalize-package-data": "2.4.0",
      +        "path-type": "2.0.0"
      +      }
      +    },
      +    "read-pkg-up": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
      +      "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
      +      "requires": {
      +        "find-up": "2.1.0",
      +        "read-pkg": "2.0.0"
      +      },
      +      "dependencies": {
      +        "find-up": {
      +          "version": "2.1.0",
      +          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
      +          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
      +          "requires": {
      +            "locate-path": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "readable-stream": {
      +      "version": "2.3.3",
      +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
      +      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
      +      "requires": {
      +        "core-util-is": "1.0.2",
      +        "inherits": "2.0.3",
      +        "isarray": "1.0.0",
      +        "process-nextick-args": "1.0.7",
      +        "safe-buffer": "5.1.1",
      +        "string_decoder": "1.0.3",
      +        "util-deprecate": "1.0.2"
      +      }
      +    },
      +    "readdir-enhanced": {
      +      "version": "1.5.2",
      +      "resolved": "https://registry.npmjs.org/readdir-enhanced/-/readdir-enhanced-1.5.2.tgz",
      +      "integrity": "sha1-YUYwSGkKxqRVt1ti+nioj43IXlM=",
      +      "requires": {
      +        "call-me-maybe": "1.0.1",
      +        "es6-promise": "4.1.1",
      +        "glob-to-regexp": "0.3.0"
      +      }
      +    },
      +    "readdirp": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
      +      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "minimatch": "3.0.4",
      +        "readable-stream": "2.3.3",
      +        "set-immediate-shim": "1.0.1"
      +      }
      +    },
      +    "rechoir": {
      +      "version": "0.6.2",
      +      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
      +      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
      +      "requires": {
      +        "resolve": "1.5.0"
      +      }
      +    },
      +    "recursive-readdir": {
      +      "version": "2.2.1",
      +      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz",
      +      "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=",
      +      "requires": {
      +        "minimatch": "3.0.3"
      +      },
      +      "dependencies": {
      +        "minimatch": {
      +          "version": "3.0.3",
      +          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
      +          "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
      +          "requires": {
      +            "brace-expansion": "1.1.8"
      +          }
      +        }
      +      }
      +    },
      +    "redbox-react": {
      +      "version": "1.5.0",
      +      "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.5.0.tgz",
      +      "integrity": "sha512-mdxArOI3sF8K5Nay5NG+lv/VW516TbXjjd4h1wcV1Iy4IMDQPnCayjoQXBAycAFSME4nyXRUXCjHxsw2rYpVRw==",
      +      "requires": {
      +        "error-stack-parser": "1.3.6",
      +        "object-assign": "4.1.1",
      +        "prop-types": "15.6.0",
      +        "sourcemapped-stacktrace": "1.1.7"
      +      },
      +      "dependencies": {
      +        "error-stack-parser": {
      +          "version": "1.3.6",
      +          "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
      +          "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
      +          "requires": {
      +            "stackframe": "0.3.1"
      +          }
      +        },
      +        "stackframe": {
      +          "version": "0.3.1",
      +          "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
      +          "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ="
      +        }
      +      }
      +    },
      +    "reduce-css-calc": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
      +      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
      +      "requires": {
      +        "balanced-match": "0.4.2",
      +        "math-expression-evaluator": "1.2.17",
      +        "reduce-function-call": "1.0.2"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
      +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
      +        }
      +      }
      +    },
      +    "reduce-function-call": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
      +      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
      +      "requires": {
      +        "balanced-match": "0.4.2"
      +      },
      +      "dependencies": {
      +        "balanced-match": {
      +          "version": "0.4.2",
      +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
      +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
      +        }
      +      }
      +    },
      +    "redux": {
      +      "version": "3.7.2",
      +      "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
      +      "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
      +      "requires": {
      +        "lodash": "4.17.4",
      +        "lodash-es": "4.17.4",
      +        "loose-envify": "1.3.1",
      +        "symbol-observable": "1.1.0"
      +      }
      +    },
      +    "redux-devtools-instrument": {
      +      "version": "1.8.2",
      +      "resolved": "https://registry.npmjs.org/redux-devtools-instrument/-/redux-devtools-instrument-1.8.2.tgz",
      +      "integrity": "sha1-XpHP5ALnkNrj/S8NI197fYSwn/4=",
      +      "requires": {
      +        "lodash": "4.17.4",
      +        "symbol-observable": "1.1.0"
      +      }
      +    },
      +    "regenerate": {
      +      "version": "1.3.3",
      +      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
      +      "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg=="
      +    },
      +    "regenerator-runtime": {
      +      "version": "0.11.0",
      +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
      +      "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A=="
      +    },
      +    "regenerator-transform": {
      +      "version": "0.10.1",
      +      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
      +      "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "private": "0.1.8"
      +      }
      +    },
      +    "regex-cache": {
      +      "version": "0.4.4",
      +      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
      +      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
      +      "requires": {
      +        "is-equal-shallow": "0.1.3"
      +      }
      +    },
      +    "regex-not": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz",
      +      "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=",
      +      "requires": {
      +        "extend-shallow": "2.0.1"
      +      }
      +    },
      +    "regexpu-core": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
      +      "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
      +      "requires": {
      +        "regenerate": "1.3.3",
      +        "regjsgen": "0.2.0",
      +        "regjsparser": "0.1.5"
      +      }
      +    },
      +    "registry-auth-token": {
      +      "version": "3.3.1",
      +      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
      +      "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
      +      "requires": {
      +        "rc": "1.2.2",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "registry-url": {
      +      "version": "3.1.0",
      +      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
      +      "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
      +      "requires": {
      +        "rc": "1.2.2"
      +      }
      +    },
      +    "regjsgen": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
      +      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
      +    },
      +    "regjsparser": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
      +      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
      +      "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="
      +        }
      +      }
      +    },
      +    "relay-compiler": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-1.4.1.tgz",
      +      "integrity": "sha512-8O9dVIOOTp1TlbQhdNp2EBO/WUaSEPaYhQ8HFgMVjpvLTCaCfHEpptNQPJf5uDG/AH1p2qhPtLaCyQ2pBYh7Cw==",
      +      "requires": {
      +        "babel-generator": "6.26.0",
      +        "babel-polyfill": "6.26.0",
      +        "babel-preset-fbjs": "2.1.4",
      +        "babel-runtime": "6.26.0",
      +        "babel-traverse": "6.26.0",
      +        "babel-types": "6.26.0",
      +        "babylon": "6.18.0",
      +        "chalk": "1.1.3",
      +        "fast-glob": "1.0.1",
      +        "fb-watchman": "2.0.0",
      +        "fbjs": "0.8.16",
      +        "graphql": "0.11.7",
      +        "immutable": "3.7.6",
      +        "relay-runtime": "1.4.1",
      +        "signedsource": "1.0.0",
      +        "yargs": "9.0.1"
      +      },
      +      "dependencies": {
      +        "yargs": {
      +          "version": "9.0.1",
      +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
      +          "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
      +          "requires": {
      +            "camelcase": "4.1.0",
      +            "cliui": "3.2.0",
      +            "decamelize": "1.2.0",
      +            "get-caller-file": "1.0.2",
      +            "os-locale": "2.1.0",
      +            "read-pkg-up": "2.0.0",
      +            "require-directory": "2.1.1",
      +            "require-main-filename": "1.0.1",
      +            "set-blocking": "2.0.0",
      +            "string-width": "2.1.1",
      +            "which-module": "2.0.0",
      +            "y18n": "3.2.1",
      +            "yargs-parser": "7.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "relay-debugger-react-native-runtime": {
      +      "version": "0.0.10",
      +      "resolved": "https://registry.npmjs.org/relay-debugger-react-native-runtime/-/relay-debugger-react-native-runtime-0.0.10.tgz",
      +      "integrity": "sha1-DvNgEqH7qSiWIgVRS0b2NcZS8jU="
      +    },
      +    "relay-runtime": {
      +      "version": "1.4.1",
      +      "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-1.4.1.tgz",
      +      "integrity": "sha512-hsEVCPik0Wo+8xvVqaMK96d45fqYAcHz/UCAw2qy1dxY+2kHUhnDUh6CGilFKB1H3f+DLzvqIHUyNYKWS/jZ/g==",
      +      "requires": {
      +        "babel-runtime": "6.26.0",
      +        "fbjs": "0.8.16",
      +        "relay-debugger-react-native-runtime": "0.0.10"
      +      }
      +    },
      +    "remark": {
      +      "version": "7.0.1",
      +      "resolved": "https://registry.npmjs.org/remark/-/remark-7.0.1.tgz",
      +      "integrity": "sha1-pd5NrPq/D2CkmCbvJMR5gH+QS/s=",
      +      "requires": {
      +        "remark-parse": "3.0.1",
      +        "remark-stringify": "3.0.1",
      +        "unified": "6.1.6"
      +      },
      +      "dependencies": {
      +        "remark-parse": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-3.0.1.tgz",
      +          "integrity": "sha1-G5+EGkTY9PvyJGhQJlRZpOs1TIA=",
      +          "requires": {
      +            "collapse-white-space": "1.0.3",
      +            "has": "1.0.1",
      +            "is-alphabetical": "1.0.1",
      +            "is-decimal": "1.0.1",
      +            "is-whitespace-character": "1.0.1",
      +            "is-word-character": "1.0.1",
      +            "markdown-escapes": "1.0.1",
      +            "parse-entities": "1.1.1",
      +            "repeat-string": "1.6.1",
      +            "state-toggle": "1.0.0",
      +            "trim": "0.0.1",
      +            "trim-trailing-lines": "1.1.0",
      +            "unherit": "1.1.0",
      +            "unist-util-remove-position": "1.1.1",
      +            "vfile-location": "2.0.2",
      +            "xtend": "4.0.1"
      +          }
      +        },
      +        "remark-stringify": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-3.0.1.tgz",
      +          "integrity": "sha1-eSQr6+CnUggbWAlRb6DAbt7Aac8=",
      +          "requires": {
      +            "ccount": "1.0.2",
      +            "is-alphanumeric": "1.0.0",
      +            "is-decimal": "1.0.1",
      +            "is-whitespace-character": "1.0.1",
      +            "longest-streak": "2.0.2",
      +            "markdown-escapes": "1.0.1",
      +            "markdown-table": "1.1.1",
      +            "mdast-util-compact": "1.0.1",
      +            "parse-entities": "1.1.1",
      +            "repeat-string": "1.6.1",
      +            "state-toggle": "1.0.0",
      +            "stringify-entities": "1.3.1",
      +            "unherit": "1.1.0",
      +            "xtend": "4.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "remark-parse": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz",
      +      "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==",
      +      "requires": {
      +        "collapse-white-space": "1.0.3",
      +        "is-alphabetical": "1.0.1",
      +        "is-decimal": "1.0.1",
      +        "is-whitespace-character": "1.0.1",
      +        "is-word-character": "1.0.1",
      +        "markdown-escapes": "1.0.1",
      +        "parse-entities": "1.1.1",
      +        "repeat-string": "1.6.1",
      +        "state-toggle": "1.0.0",
      +        "trim": "0.0.1",
      +        "trim-trailing-lines": "1.1.0",
      +        "unherit": "1.1.0",
      +        "unist-util-remove-position": "1.1.1",
      +        "vfile-location": "2.0.2",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "remark-retext": {
      +      "version": "3.1.0",
      +      "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.0.tgz",
      +      "integrity": "sha1-Gz3y1JRpwNNZbK2G6RUDqLYA/cw=",
      +      "requires": {
      +        "mdast-util-to-nlcst": "3.2.0"
      +      }
      +    },
      +    "remark-stringify": {
      +      "version": "4.0.0",
      +      "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz",
      +      "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==",
      +      "requires": {
      +        "ccount": "1.0.2",
      +        "is-alphanumeric": "1.0.0",
      +        "is-decimal": "1.0.1",
      +        "is-whitespace-character": "1.0.1",
      +        "longest-streak": "2.0.2",
      +        "markdown-escapes": "1.0.1",
      +        "markdown-table": "1.1.1",
      +        "mdast-util-compact": "1.0.1",
      +        "parse-entities": "1.1.1",
      +        "repeat-string": "1.6.1",
      +        "state-toggle": "1.0.0",
      +        "stringify-entities": "1.3.1",
      +        "unherit": "1.1.0",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "remote-redux-devtools": {
      +      "version": "0.5.12",
      +      "resolved": "https://registry.npmjs.org/remote-redux-devtools/-/remote-redux-devtools-0.5.12.tgz",
      +      "integrity": "sha1-QsuV36nlTB2WcTF8Xnu6QeaMrsI=",
      +      "requires": {
      +        "jsan": "3.1.9",
      +        "querystring": "0.2.0",
      +        "redux-devtools-instrument": "1.8.2",
      +        "remotedev-utils": "0.1.4",
      +        "rn-host-detect": "1.1.3",
      +        "socketcluster-client": "5.5.2"
      +      }
      +    },
      +    "remotedev-serialize": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/remotedev-serialize/-/remotedev-serialize-0.1.0.tgz",
      +      "integrity": "sha1-B0do6Yy3qoBvRZlO6wyK+VEg7jI=",
      +      "requires": {
      +        "jsan": "3.1.9"
      +      }
      +    },
      +    "remotedev-utils": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/remotedev-utils/-/remotedev-utils-0.1.4.tgz",
      +      "integrity": "sha1-ZDcAgZqUNngHPHXrGF6B2WYgs0g=",
      +      "requires": {
      +        "get-params": "0.1.2",
      +        "jsan": "3.1.9",
      +        "lodash": "4.17.4",
      +        "remotedev-serialize": "0.1.0",
      +        "shortid": "2.2.8"
      +      }
      +    },
      +    "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="
      +    },
      +    "renderkid": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz",
      +      "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
      +      "requires": {
      +        "css-select": "1.2.0",
      +        "dom-converter": "0.1.4",
      +        "htmlparser2": "3.3.0",
      +        "strip-ansi": "3.0.1",
      +        "utila": "0.3.3"
      +      },
      +      "dependencies": {
      +        "utila": {
      +          "version": "0.3.3",
      +          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
      +          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY="
      +        }
      +      }
      +    },
      +    "repeat-element": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
      +      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
      +    },
      +    "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.2"
      +      }
      +    },
      +    "replace-ext": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
      +      "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
      +    },
      +    "request": {
      +      "version": "2.83.0",
      +      "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
      +      "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
      +      "requires": {
      +        "aws-sign2": "0.7.0",
      +        "aws4": "1.6.0",
      +        "caseless": "0.12.0",
      +        "combined-stream": "1.0.5",
      +        "extend": "3.0.1",
      +        "forever-agent": "0.6.1",
      +        "form-data": "2.3.1",
      +        "har-validator": "5.0.3",
      +        "hawk": "6.0.2",
      +        "http-signature": "1.2.0",
      +        "is-typedarray": "1.0.0",
      +        "isstream": "0.1.2",
      +        "json-stringify-safe": "5.0.1",
      +        "mime-types": "2.1.17",
      +        "oauth-sign": "0.8.2",
      +        "performance-now": "2.1.0",
      +        "qs": "6.5.1",
      +        "safe-buffer": "5.1.1",
      +        "stringstream": "0.0.5",
      +        "tough-cookie": "2.3.3",
      +        "tunnel-agent": "0.6.0",
      +        "uuid": "3.1.0"
      +      }
      +    },
      +    "require-directory": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
      +      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
      +    },
      +    "require-like": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
      +      "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o="
      +    },
      +    "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="
      +    },
      +    "requires-port": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
      +      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
      +    },
      +    "resolve": {
      +      "version": "1.5.0",
      +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
      +      "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
      +      "requires": {
      +        "path-parse": "1.0.5"
      +      }
      +    },
      +    "resolve-cwd": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
      +      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
      +      "requires": {
      +        "resolve-from": "3.0.0"
      +      }
      +    },
      +    "resolve-dir": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
      +      "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
      +      "requires": {
      +        "expand-tilde": "1.2.2",
      +        "global-modules": "0.2.3"
      +      }
      +    },
      +    "resolve-from": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
      +      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
      +    },
      +    "resolve-pathname": {
      +      "version": "2.2.0",
      +      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz",
      +      "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg=="
      +    },
      +    "resolve-url": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
      +      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
      +    },
      +    "restore-cursor": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
      +      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
      +      "requires": {
      +        "onetime": "2.0.1",
      +        "signal-exit": "3.0.2"
      +      }
      +    },
      +    "retext-english": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.0.tgz",
      +      "integrity": "sha1-wXy1a9Xxuj3uM1XdurefHEiUqAk=",
      +      "requires": {
      +        "parse-english": "4.1.0",
      +        "unherit": "1.1.0"
      +      }
      +    },
      +    "retry": {
      +      "version": "0.10.1",
      +      "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
      +      "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
      +      "optional": true
      +    },
      +    "rgb": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
      +      "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U="
      +    },
      +    "rgb-hex": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-1.0.0.tgz",
      +      "integrity": "sha1-v6+M2c2RZLWibXHrTxWgllMks8E="
      +    },
      +    "ric": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/ric/-/ric-1.3.0.tgz",
      +      "integrity": "sha1-jpUEJgnOghNUioMWTQjpT66UkJ8="
      +    },
      +    "right-align": {
      +      "version": "0.1.3",
      +      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
      +      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
      +      "requires": {
      +        "align-text": "0.1.4"
      +      }
      +    },
      +    "rimraf": {
      +      "version": "2.6.2",
      +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
      +      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
      +      "requires": {
      +        "glob": "7.1.2"
      +      }
      +    },
      +    "ripemd160": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
      +      "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
      +      "requires": {
      +        "hash-base": "2.0.2",
      +        "inherits": "2.0.3"
      +      }
      +    },
      +    "rn-host-detect": {
      +      "version": "1.1.3",
      +      "resolved": "https://registry.npmjs.org/rn-host-detect/-/rn-host-detect-1.1.3.tgz",
      +      "integrity": "sha1-JC124vpIXEjXUUFuZbfM5ZaWnpE="
      +    },
      +    "rollup": {
      +      "version": "0.36.4",
      +      "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz",
      +      "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=",
      +      "optional": true,
      +      "requires": {
      +        "source-map-support": "0.4.18"
      +      }
      +    },
      +    "rsvp": {
      +      "version": "3.6.2",
      +      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
      +      "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw=="
      +    },
      +    "run-async": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
      +      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
      +      "requires": {
      +        "is-promise": "2.1.0"
      +      }
      +    },
      +    "rx-lite": {
      +      "version": "4.0.8",
      +      "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
      +      "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
      +    },
      +    "rx-lite-aggregates": {
      +      "version": "4.0.8",
      +      "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
      +      "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
      +      "requires": {
      +        "rx-lite": "4.0.8"
      +      }
      +    },
      +    "safe-buffer": {
      +      "version": "5.1.1",
      +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
      +      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
      +    },
      +    "sane": {
      +      "version": "1.7.0",
      +      "resolved": "https://registry.npmjs.org/sane/-/sane-1.7.0.tgz",
      +      "integrity": "sha1-s1ebzLRclM8gNVzIESSZDf00bjA=",
      +      "optional": true,
      +      "requires": {
      +        "anymatch": "1.3.2",
      +        "exec-sh": "0.2.1",
      +        "fb-watchman": "2.0.0",
      +        "minimatch": "3.0.4",
      +        "minimist": "1.2.0",
      +        "walker": "1.0.7",
      +        "watch": "0.10.0"
      +      },
      +      "dependencies": {
      +        "minimist": {
      +          "version": "1.2.0",
      +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
      +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
      +          "optional": true
      +        }
      +      }
      +    },
      +    "sanitize-html": {
      +      "version": "1.16.1",
      +      "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.16.1.tgz",
      +      "integrity": "sha512-w3++cRkD2krVl8Zn70l7OcrF+zQc6lF0EVzCrcyFA3LR3AofZb2AuC3HRWyyNq225kSvl5K7IxSpQMkTQ+bHkw==",
      +      "requires": {
      +        "htmlparser2": "3.9.2",
      +        "lodash.clonedeep": "4.5.0",
      +        "lodash.escaperegexp": "4.1.2",
      +        "lodash.isarray": "4.0.0",
      +        "lodash.mergewith": "4.6.0",
      +        "postcss": "6.0.14",
      +        "srcset": "1.0.0",
      +        "xtend": "4.0.1"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "domhandler": {
      +          "version": "2.4.1",
      +          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz",
      +          "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=",
      +          "requires": {
      +            "domelementtype": "1.3.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "htmlparser2": {
      +          "version": "3.9.2",
      +          "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
      +          "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
      +          "requires": {
      +            "domelementtype": "1.3.0",
      +            "domhandler": "2.4.1",
      +            "domutils": "1.5.1",
      +            "entities": "1.1.1",
      +            "inherits": "2.0.3",
      +            "readable-stream": "2.3.3"
      +          }
      +        },
      +        "postcss": {
      +          "version": "6.0.14",
      +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
      +          "integrity": "sha512-NJ1z0f+1offCgadPhz+DvGm5Mkci+mmV5BqD13S992o0Xk9eElxUfPPF+t2ksH5R/17gz4xVK8KWocUQ5o3Rog==",
      +          "requires": {
      +            "chalk": "2.3.0",
      +            "source-map": "0.6.1",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "source-map": {
      +          "version": "0.6.1",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
      +          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "sax": {
      +      "version": "1.2.4",
      +      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
      +      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
      +    },
      +    "sc-channel": {
      +      "version": "1.0.6",
      +      "resolved": "https://registry.npmjs.org/sc-channel/-/sc-channel-1.0.6.tgz",
      +      "integrity": "sha1-s4vUepk+eCkPvFNGeGf2sqCghjk=",
      +      "requires": {
      +        "sc-emitter": "1.1.0"
      +      }
      +    },
      +    "sc-emitter": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/sc-emitter/-/sc-emitter-1.1.0.tgz",
      +      "integrity": "sha1-7xGdQiL0xk+Ie0hpZO8REWzdDnU=",
      +      "requires": {
      +        "component-emitter": "1.2.0"
      +      },
      +      "dependencies": {
      +        "component-emitter": {
      +          "version": "1.2.0",
      +          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz",
      +          "integrity": "sha1-zNETqGOI0GSC0D3j/H35hSa6jv4="
      +        }
      +      }
      +    },
      +    "sc-errors": {
      +      "version": "1.3.3",
      +      "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-1.3.3.tgz",
      +      "integrity": "sha1-wAvEx2apcMyNWTfQjNWOkx19rgU="
      +    },
      +    "sc-formatter": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-3.0.1.tgz",
      +      "integrity": "sha512-Jl2bH8zUtKn70JJIIPTEfWGDXK+TB9wV55C/zwSoDum4T1X1bsIBudO1QkxOG2RZMgkcKexfGQLlDCH37c/4fg=="
      +    },
      +    "scroll-behavior": {
      +      "version": "0.9.5",
      +      "resolved": "https://registry.npmjs.org/scroll-behavior/-/scroll-behavior-0.9.5.tgz",
      +      "integrity": "sha512-/5CtMX6YHmCrcV6AICYqFpNqYgx5v6YOyDTeMgVFdLZpgU+T3JXmgV+9s4R+uApcyYwcc7o8Nwp7VTt/ue8y0Q==",
      +      "requires": {
      +        "dom-helpers": "3.2.1",
      +        "invariant": "2.2.2"
      +      }
      +    },
      +    "select": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
      +      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
      +      "optional": true
      +    },
      +    "semver": {
      +      "version": "5.4.1",
      +      "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
      +      "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
      +    },
      +    "semver-diff": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
      +      "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
      +      "requires": {
      +        "semver": "5.4.1"
      +      }
      +    },
      +    "send": {
      +      "version": "0.16.1",
      +      "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
      +      "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
      +      "requires": {
      +        "debug": "2.6.9",
      +        "depd": "1.1.1",
      +        "destroy": "1.0.4",
      +        "encodeurl": "1.0.1",
      +        "escape-html": "1.0.3",
      +        "etag": "1.8.1",
      +        "fresh": "0.5.2",
      +        "http-errors": "1.6.2",
      +        "mime": "1.4.1",
      +        "ms": "2.0.0",
      +        "on-finished": "2.3.0",
      +        "range-parser": "1.2.0",
      +        "statuses": "1.3.1"
      +      },
      +      "dependencies": {
      +        "mime": {
      +          "version": "1.4.1",
      +          "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
      +          "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
      +        }
      +      }
      +    },
      +    "serve": {
      +      "version": "6.4.1",
      +      "resolved": "https://registry.npmjs.org/serve/-/serve-6.4.1.tgz",
      +      "integrity": "sha512-oKc03byDwYQPrOZpfvDTTkjuMtRhRyWRu961LSt/0Uvj0Bv5UPY3LaESfxl8vfaZWBTibzOZIdkyvIAQLXJZ0A==",
      +      "requires": {
      +        "args": "3.0.7",
      +        "basic-auth": "2.0.0",
      +        "bluebird": "3.5.1",
      +        "boxen": "1.2.2",
      +        "chalk": "2.3.0",
      +        "clipboardy": "1.1.4",
      +        "dargs": "5.1.0",
      +        "detect-port": "1.2.1",
      +        "filesize": "3.5.11",
      +        "fs-extra": "4.0.2",
      +        "handlebars": "4.0.11",
      +        "ip": "1.1.5",
      +        "micro": "9.0.0",
      +        "micro-compress": "1.0.0",
      +        "mime-types": "2.1.17",
      +        "node-version": "1.1.0",
      +        "openssl-self-signed-certificate": "1.1.6",
      +        "opn": "5.1.0",
      +        "path-type": "3.0.0",
      +        "send": "0.16.1",
      +        "update-notifier": "2.3.0"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "detect-port": {
      +          "version": "1.2.1",
      +          "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.1.tgz",
      +          "integrity": "sha512-2KWLTLsfpi/oYPGNBEniPcFzr1GW/s+Xq/4hJmTQRdE8ULuRwGnRPuVhS/cf+Z4ZEXNo7EO2f6oydHJQd94KMg==",
      +          "requires": {
      +            "address": "1.0.3",
      +            "debug": "2.6.9"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "path-type": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
      +          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
      +          "requires": {
      +            "pify": "3.0.0"
      +          }
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "serve-index": {
      +      "version": "1.9.1",
      +      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
      +      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
      +      "requires": {
      +        "accepts": "1.3.4",
      +        "batch": "0.6.1",
      +        "debug": "2.6.9",
      +        "escape-html": "1.0.3",
      +        "http-errors": "1.6.2",
      +        "mime-types": "2.1.17",
      +        "parseurl": "1.3.2"
      +      }
      +    },
      +    "serve-static": {
      +      "version": "1.13.1",
      +      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
      +      "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
      +      "requires": {
      +        "encodeurl": "1.0.1",
      +        "escape-html": "1.0.3",
      +        "parseurl": "1.3.2",
      +        "send": "0.16.1"
      +      }
      +    },
      +    "set-blocking": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
      +      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
      +    },
      +    "set-getter": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz",
      +      "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=",
      +      "requires": {
      +        "to-object-path": "0.3.0"
      +      }
      +    },
      +    "set-immediate-shim": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
      +      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
      +    },
      +    "set-value": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
      +      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
      +      "requires": {
      +        "extend-shallow": "2.0.1",
      +        "is-extendable": "0.1.1",
      +        "is-plain-object": "2.0.4",
      +        "split-string": "3.1.0"
      +      }
      +    },
      +    "setimmediate": {
      +      "version": "1.0.5",
      +      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
      +      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
      +    },
      +    "setprototypeof": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
      +      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
      +    },
      +    "sha.js": {
      +      "version": "2.4.9",
      +      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
      +      "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "shallowequal": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz",
      +      "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw=="
      +    },
      +    "shebang-command": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
      +      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
      +      "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="
      +    },
      +    "shell-quote": {
      +      "version": "1.6.1",
      +      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
      +      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
      +      "requires": {
      +        "array-filter": "0.0.1",
      +        "array-map": "0.0.0",
      +        "array-reduce": "0.0.0",
      +        "jsonify": "0.0.0"
      +      }
      +    },
      +    "shelljs": {
      +      "version": "0.7.0",
      +      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.0.tgz",
      +      "integrity": "sha1-P28uSWXOxWX2X/OGHWRPh5KBpXY=",
      +      "requires": {
      +        "glob": "7.1.2",
      +        "interpret": "1.1.0",
      +        "rechoir": "0.6.2"
      +      },
      +      "dependencies": {
      +        "interpret": {
      +          "version": "1.1.0",
      +          "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
      +          "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
      +        }
      +      }
      +    },
      +    "shortid": {
      +      "version": "2.2.8",
      +      "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz",
      +      "integrity": "sha1-AzsRfWoul1gE9vCWnb59PQs1UTE="
      +    },
      +    "sift": {
      +      "version": "3.3.12",
      +      "resolved": "https://registry.npmjs.org/sift/-/sift-3.3.12.tgz",
      +      "integrity": "sha1-T1zfFq89syr6BKslKXsOIK2YKUo="
      +    },
      +    "signal-exit": {
      +      "version": "3.0.2",
      +      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
      +      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
      +    },
      +    "signedsource": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz",
      +      "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo="
      +    },
      +    "slash": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
      +      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
      +    },
      +    "snapdragon": {
      +      "version": "0.8.1",
      +      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz",
      +      "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=",
      +      "requires": {
      +        "base": "0.11.2",
      +        "debug": "2.6.9",
      +        "define-property": "0.2.5",
      +        "extend-shallow": "2.0.1",
      +        "map-cache": "0.2.2",
      +        "source-map": "0.5.7",
      +        "source-map-resolve": "0.5.1",
      +        "use": "2.0.2"
      +      },
      +      "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.6"
      +          }
      +        },
      +        "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.1.0"
      +          }
      +        },
      +        "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=="
      +        }
      +      }
      +    },
      +    "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.1",
      +        "snapdragon-util": "3.0.1"
      +      },
      +      "dependencies": {
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "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.2"
      +      }
      +    },
      +    "sntp": {
      +      "version": "2.1.0",
      +      "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
      +      "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
      +      "requires": {
      +        "hoek": "4.2.0"
      +      }
      +    },
      +    "socket.io": {
      +      "version": "2.0.4",
      +      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz",
      +      "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=",
      +      "requires": {
      +        "debug": "2.6.9",
      +        "engine.io": "3.1.4",
      +        "socket.io-adapter": "1.1.1",
      +        "socket.io-client": "2.0.4",
      +        "socket.io-parser": "3.1.2"
      +      }
      +    },
      +    "socket.io-adapter": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
      +      "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
      +    },
      +    "socket.io-client": {
      +      "version": "2.0.4",
      +      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz",
      +      "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=",
      +      "requires": {
      +        "backo2": "1.0.2",
      +        "base64-arraybuffer": "0.1.5",
      +        "component-bind": "1.0.0",
      +        "component-emitter": "1.2.1",
      +        "debug": "2.6.9",
      +        "engine.io-client": "3.1.4",
      +        "has-cors": "1.1.0",
      +        "indexof": "0.0.1",
      +        "object-component": "0.0.3",
      +        "parseqs": "0.0.5",
      +        "parseuri": "0.0.5",
      +        "socket.io-parser": "3.1.2",
      +        "to-array": "0.1.4"
      +      }
      +    },
      +    "socket.io-parser": {
      +      "version": "3.1.2",
      +      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz",
      +      "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=",
      +      "requires": {
      +        "component-emitter": "1.2.1",
      +        "debug": "2.6.9",
      +        "has-binary2": "1.0.2",
      +        "isarray": "2.0.1"
      +      },
      +      "dependencies": {
      +        "isarray": {
      +          "version": "2.0.1",
      +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
      +          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
      +        }
      +      }
      +    },
      +    "socketcluster-client": {
      +      "version": "5.5.2",
      +      "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-5.5.2.tgz",
      +      "integrity": "sha1-nUNp4Oci/35V5UIsLUT1r+Gv8Sg=",
      +      "requires": {
      +        "base-64": "0.1.0",
      +        "clone": "2.1.1",
      +        "linked-list": "0.1.0",
      +        "querystring": "0.2.0",
      +        "sc-channel": "1.0.6",
      +        "sc-emitter": "1.1.0",
      +        "sc-errors": "1.3.3",
      +        "sc-formatter": "3.0.1",
      +        "ws": "3.0.0"
      +      },
      +      "dependencies": {
      +        "clone": {
      +          "version": "2.1.1",
      +          "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
      +          "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs="
      +        }
      +      }
      +    },
      +    "sockjs": {
      +      "version": "0.3.19",
      +      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
      +      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
      +      "requires": {
      +        "faye-websocket": "0.10.0",
      +        "uuid": "3.1.0"
      +      },
      +      "dependencies": {
      +        "faye-websocket": {
      +          "version": "0.10.0",
      +          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
      +          "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
      +          "requires": {
      +            "websocket-driver": "0.7.0"
      +          }
      +        }
      +      }
      +    },
      +    "sockjs-client": {
      +      "version": "1.1.4",
      +      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz",
      +      "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=",
      +      "requires": {
      +        "debug": "2.6.9",
      +        "eventsource": "0.1.6",
      +        "faye-websocket": "0.11.1",
      +        "inherits": "2.0.3",
      +        "json3": "3.3.2",
      +        "url-parse": "1.2.0"
      +      }
      +    },
      +    "sort-keys": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
      +      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
      +      "requires": {
      +        "is-plain-obj": "1.1.0"
      +      }
      +    },
      +    "source-list-map": {
      +      "version": "0.1.8",
      +      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
      +      "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY="
      +    },
      +    "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.1",
      +      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz",
      +      "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==",
      +      "requires": {
      +        "atob": "2.0.3",
      +        "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.4.18",
      +      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
      +      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
      +      "requires": {
      +        "source-map": "0.5.7"
      +      }
      +    },
      +    "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="
      +    },
      +    "sourcemapped-stacktrace": {
      +      "version": "1.1.7",
      +      "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.7.tgz",
      +      "integrity": "sha512-pgHNUACbafkQ+M5zR00NSOtSKBc/i40prgN+SY07J/pghClwVNWNTTMa0JuXj4lriR2TvMKcPAHw5KN9tVFRhA==",
      +      "requires": {
      +        "source-map": "0.5.6"
      +      },
      +      "dependencies": {
      +        "source-map": {
      +          "version": "0.5.6",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
      +          "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI="
      +        }
      +      }
      +    },
      +    "space-separated-tokens": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.1.tgz",
      +      "integrity": "sha1-lpW5355lrsGBHUw/nOUlILwvfk0=",
      +      "requires": {
      +        "trim": "0.0.1"
      +      }
      +    },
      +    "spdx-correct": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
      +      "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
      +      "requires": {
      +        "spdx-license-ids": "1.2.2"
      +      }
      +    },
      +    "spdx-expression-parse": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
      +      "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw="
      +    },
      +    "spdx-license-ids": {
      +      "version": "1.2.2",
      +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
      +      "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc="
      +    },
      +    "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.1"
      +      },
      +      "dependencies": {
      +        "extend-shallow": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.1.tgz",
      +          "integrity": "sha512-Fg1xXAv+qXKdwHiJFMcZSqsMcbPlkzsZtf8KkLJ2fqnP+lqg2RjEKgDcSfO9CO1+p4LZKgApDBUUUqKaaRhwZQ==",
      +          "requires": {
      +            "is-extendable": "1.0.1"
      +          }
      +        },
      +        "is-extendable": {
      +          "version": "1.0.1",
      +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
      +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
      +          "requires": {
      +            "is-plain-object": "2.0.4"
      +          }
      +        }
      +      }
      +    },
      +    "sprintf-js": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
      +      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
      +    },
      +    "srcset": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz",
      +      "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=",
      +      "requires": {
      +        "array-uniq": "1.0.3",
      +        "number-is-nan": "1.0.1"
      +      }
      +    },
      +    "sshpk": {
      +      "version": "1.13.1",
      +      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
      +      "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
      +      "requires": {
      +        "asn1": "0.2.3",
      +        "assert-plus": "1.0.0",
      +        "bcrypt-pbkdf": "1.0.1",
      +        "dashdash": "1.14.1",
      +        "ecc-jsbn": "0.1.1",
      +        "getpass": "0.1.7",
      +        "jsbn": "0.1.1",
      +        "tweetnacl": "0.14.5"
      +      }
      +    },
      +    "stack-trace": {
      +      "version": "0.0.10",
      +      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
      +      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
      +    },
      +    "stackframe": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz",
      +      "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw=="
      +    },
      +    "state-toggle": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.0.tgz",
      +      "integrity": "sha1-0g+aYWu08MO5i5GSLSW2QKorxCU="
      +    },
      +    "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.6"
      +          }
      +        },
      +        "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.1.0"
      +          }
      +        },
      +        "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=="
      +        }
      +      }
      +    },
      +    "static-site-generator-webpack-plugin": {
      +      "version": "3.4.1",
      +      "resolved": "https://registry.npmjs.org/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.1.tgz",
      +      "integrity": "sha1-buIkaIMLxUZ5ijfg/Kb9aZzJO4E=",
      +      "requires": {
      +        "bluebird": "3.5.1",
      +        "cheerio": "0.22.0",
      +        "eval": "0.1.2",
      +        "url": "0.11.0",
      +        "webpack-sources": "0.2.3"
      +      },
      +      "dependencies": {
      +        "source-list-map": {
      +          "version": "1.1.2",
      +          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz",
      +          "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE="
      +        },
      +        "webpack-sources": {
      +          "version": "0.2.3",
      +          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz",
      +          "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=",
      +          "requires": {
      +            "source-list-map": "1.1.2",
      +            "source-map": "0.5.7"
      +          }
      +        }
      +      }
      +    },
      +    "statuses": {
      +      "version": "1.3.1",
      +      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
      +      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
      +    },
      +    "steno": {
      +      "version": "0.4.4",
      +      "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz",
      +      "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=",
      +      "requires": {
      +        "graceful-fs": "4.1.11"
      +      }
      +    },
      +    "stream-browserify": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
      +      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "readable-stream": "2.3.3"
      +      }
      +    },
      +    "stream-cache": {
      +      "version": "0.0.2",
      +      "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz",
      +      "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8="
      +    },
      +    "stream-http": {
      +      "version": "2.7.2",
      +      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
      +      "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
      +      "requires": {
      +        "builtin-status-codes": "3.0.0",
      +        "inherits": "2.0.3",
      +        "readable-stream": "2.3.3",
      +        "to-arraybuffer": "1.0.1",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "strict-uri-encode": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
      +      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
      +    },
      +    "string_decoder": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
      +      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
      +      "requires": {
      +        "safe-buffer": "5.1.1"
      +      }
      +    },
      +    "string-length": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
      +      "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
      +      "requires": {
      +        "strip-ansi": "3.0.1"
      +      }
      +    },
      +    "string-similarity": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.0.tgz",
      +      "integrity": "sha1-11FTyzg4RjGLejmo2SkrtNtOnDA=",
      +      "requires": {
      +        "lodash": "4.17.4"
      +      }
      +    },
      +    "string-width": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
      +      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
      +      "requires": {
      +        "is-fullwidth-code-point": "2.0.0",
      +        "strip-ansi": "4.0.0"
      +      },
      +      "dependencies": {
      +        "ansi-regex": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
      +          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
      +        },
      +        "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="
      +        },
      +        "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"
      +          }
      +        }
      +      }
      +    },
      +    "stringify-entities": {
      +      "version": "1.3.1",
      +      "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz",
      +      "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=",
      +      "requires": {
      +        "character-entities-html4": "1.1.1",
      +        "character-entities-legacy": "1.1.1",
      +        "is-alphanumerical": "1.0.1",
      +        "is-hexadecimal": "1.0.1"
      +      }
      +    },
      +    "stringstream": {
      +      "version": "0.0.5",
      +      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
      +      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
      +    },
      +    "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.1.1"
      +      }
      +    },
      +    "strip-bom": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
      +      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
      +    },
      +    "strip-eof": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
      +      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
      +    },
      +    "strip-json-comments": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
      +      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
      +    },
      +    "style-loader": {
      +      "version": "0.13.2",
      +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz",
      +      "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=",
      +      "requires": {
      +        "loader-utils": "1.1.0"
      +      },
      +      "dependencies": {
      +        "loader-utils": {
      +          "version": "1.1.0",
      +          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
      +          "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
      +          "requires": {
      +            "big.js": "3.2.0",
      +            "emojis-list": "2.1.0",
      +            "json5": "0.5.1"
      +          }
      +        }
      +      }
      +    },
      +    "supports-color": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
      +      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
      +    },
      +    "svgo": {
      +      "version": "0.7.2",
      +      "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
      +      "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
      +      "requires": {
      +        "coa": "1.0.4",
      +        "colors": "1.1.2",
      +        "csso": "2.3.2",
      +        "js-yaml": "3.7.0",
      +        "mkdirp": "0.5.1",
      +        "sax": "1.2.4",
      +        "whet.extend": "0.9.9"
      +      }
      +    },
      +    "symbol": {
      +      "version": "0.2.3",
      +      "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz",
      +      "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c="
      +    },
      +    "symbol-observable": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz",
      +      "integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw=="
      +    },
      +    "systemjs": {
      +      "version": "0.20.19",
      +      "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.20.19.tgz",
      +      "integrity": "sha512-H/rKwNEEyej/+IhkmFNmKFyJul8tbH/muiPq5TyNoVTwsGhUjRsN3NlFnFQUvFXA3+GQmsXkCNXU6QKPl779aw==",
      +      "optional": true
      +    },
      +    "systemjs-builder": {
      +      "version": "0.16.12",
      +      "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.16.12.tgz",
      +      "integrity": "sha512-E+INOPzUsi1VpXat3GYDKl1Xap3Acv3Bw6KmRC9TdpfdJnTk6Jh5K07DdM8P+LEPXZaLZvTaaN/5q2i+1FD1vA==",
      +      "optional": true,
      +      "requires": {
      +        "babel-core": "6.26.0",
      +        "babel-plugin-syntax-dynamic-import": "6.18.0",
      +        "babel-plugin-transform-amd-system-wrapper": "0.3.7",
      +        "babel-plugin-transform-cjs-system-wrapper": "0.6.2",
      +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
      +        "babel-plugin-transform-global-system-wrapper": "0.3.4",
      +        "babel-plugin-transform-system-register": "0.0.1",
      +        "bluebird": "3.5.1",
      +        "data-uri-to-buffer": "0.0.4",
      +        "es6-template-strings": "2.0.1",
      +        "glob": "7.1.2",
      +        "mkdirp": "0.5.1",
      +        "rollup": "0.36.4",
      +        "source-map": "0.5.7",
      +        "systemjs": "0.19.47",
      +        "traceur": "0.0.105",
      +        "uglify-js": "2.8.29"
      +      },
      +      "dependencies": {
      +        "systemjs": {
      +          "version": "0.19.47",
      +          "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.47.tgz",
      +          "integrity": "sha1-yMk5NxgPP1SBx2nNJyB2P7SjHG8=",
      +          "optional": true,
      +          "requires": {
      +            "when": "3.7.8"
      +          }
      +        }
      +      }
      +    },
      +    "tapable": {
      +      "version": "0.1.10",
      +      "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
      +      "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q="
      +    },
      +    "tar-fs": {
      +      "version": "1.16.0",
      +      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz",
      +      "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==",
      +      "requires": {
      +        "chownr": "1.0.1",
      +        "mkdirp": "0.5.1",
      +        "pump": "1.0.3",
      +        "tar-stream": "1.5.5"
      +      }
      +    },
      +    "tar-stream": {
      +      "version": "1.5.5",
      +      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
      +      "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
      +      "requires": {
      +        "bl": "1.2.1",
      +        "end-of-stream": "1.4.0",
      +        "readable-stream": "2.3.3",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "term-size": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
      +      "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
      +      "requires": {
      +        "execa": "0.7.0"
      +      },
      +      "dependencies": {
      +        "execa": {
      +          "version": "0.7.0",
      +          "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
      +          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
      +          "requires": {
      +            "cross-spawn": "5.1.0",
      +            "get-stream": "3.0.0",
      +            "is-stream": "1.1.0",
      +            "npm-run-path": "2.0.2",
      +            "p-finally": "1.0.0",
      +            "signal-exit": "3.0.2",
      +            "strip-eof": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "text-table": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
      +      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
      +    },
      +    "through": {
      +      "version": "2.3.8",
      +      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
      +      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
      +    },
      +    "through2": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
      +      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
      +      "requires": {
      +        "readable-stream": "2.3.3",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "time-stamp": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
      +      "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c="
      +    },
      +    "timed-out": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
      +      "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8="
      +    },
      +    "timers-browserify": {
      +      "version": "2.0.4",
      +      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz",
      +      "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==",
      +      "requires": {
      +        "setimmediate": "1.0.5"
      +      }
      +    },
      +    "tiny-emitter": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
      +      "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==",
      +      "optional": true
      +    },
      +    "tmp": {
      +      "version": "0.0.33",
      +      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
      +      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
      +      "requires": {
      +        "os-tmpdir": "1.0.2"
      +      }
      +    },
      +    "tmpl": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
      +      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
      +      "optional": true
      +    },
      +    "to-array": {
      +      "version": "0.1.4",
      +      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
      +      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
      +    },
      +    "to-arraybuffer": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
      +      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
      +    },
      +    "to-fast-properties": {
      +      "version": "1.0.3",
      +      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
      +      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
      +    },
      +    "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.2.2"
      +      }
      +    },
      +    "to-regex": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz",
      +      "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=",
      +      "requires": {
      +        "define-property": "0.2.5",
      +        "extend-shallow": "2.0.1",
      +        "regex-not": "1.0.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.6"
      +          }
      +        },
      +        "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.1.0"
      +          }
      +        },
      +        "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=="
      +        }
      +      }
      +    },
      +    "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"
      +      },
      +      "dependencies": {
      +        "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.2.2"
      +          }
      +        }
      +      }
      +    },
      +    "toml": {
      +      "version": "2.3.3",
      +      "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz",
      +      "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA=="
      +    },
      +    "topo": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
      +      "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
      +      "requires": {
      +        "hoek": "4.2.0"
      +      }
      +    },
      +    "tough-cookie": {
      +      "version": "2.3.3",
      +      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
      +      "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
      +      "requires": {
      +        "punycode": "1.4.1"
      +      },
      +      "dependencies": {
      +        "punycode": {
      +          "version": "1.4.1",
      +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
      +          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
      +        }
      +      }
      +    },
      +    "traceur": {
      +      "version": "0.0.105",
      +      "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz",
      +      "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=",
      +      "requires": {
      +        "commander": "2.9.0",
      +        "glob": "5.0.15",
      +        "rsvp": "3.6.2",
      +        "semver": "4.3.6",
      +        "source-map-support": "0.2.10"
      +      },
      +      "dependencies": {
      +        "glob": {
      +          "version": "5.0.15",
      +          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
      +          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
      +          "requires": {
      +            "inflight": "1.0.6",
      +            "inherits": "2.0.3",
      +            "minimatch": "3.0.4",
      +            "once": "1.4.0",
      +            "path-is-absolute": "1.0.1"
      +          }
      +        },
      +        "semver": {
      +          "version": "4.3.6",
      +          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
      +          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
      +        },
      +        "source-map": {
      +          "version": "0.1.32",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz",
      +          "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
      +          "requires": {
      +            "amdefine": "1.0.1"
      +          }
      +        },
      +        "source-map-support": {
      +          "version": "0.2.10",
      +          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz",
      +          "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
      +          "requires": {
      +            "source-map": "0.1.32"
      +          }
      +        }
      +      }
      +    },
      +    "trim": {
      +      "version": "0.0.1",
      +      "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
      +      "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
      +    },
      +    "trim-lines": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.0.tgz",
      +      "integrity": "sha1-mSbQPt4Tuhj31CIiYx+wTHn/Jv4="
      +    },
      +    "trim-right": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
      +      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
      +    },
      +    "trim-trailing-lines": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz",
      +      "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ="
      +    },
      +    "trough": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.1.tgz",
      +      "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y="
      +    },
      +    "tty-browserify": {
      +      "version": "0.0.0",
      +      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
      +      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
      +    },
      +    "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.1.1"
      +      }
      +    },
      +    "tweetnacl": {
      +      "version": "0.14.5",
      +      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
      +      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
      +      "optional": true
      +    },
      +    "type-is": {
      +      "version": "1.6.15",
      +      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
      +      "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
      +      "requires": {
      +        "media-typer": "0.3.0",
      +        "mime-types": "2.1.17"
      +      }
      +    },
      +    "type-of": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz",
      +      "integrity": "sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI="
      +    },
      +    "typography": {
      +      "version": "0.16.6",
      +      "resolved": "https://registry.npmjs.org/typography/-/typography-0.16.6.tgz",
      +      "integrity": "sha512-jR4FECYt/Nq6ghD5nUJMAvx0Y6F44BeNo3ZRf1RjALbHaueseiz1O9oCTCkaQzfuVL9kAwphWF6BwKgG8hooWQ==",
      +      "requires": {
      +        "compass-vertical-rhythm": "1.3.1",
      +        "decamelize": "1.2.0",
      +        "gray-percentage": "2.0.0",
      +        "lodash": "4.17.4",
      +        "modularscale": "1.0.2",
      +        "object-assign": "4.1.1",
      +        "typography-normalize": "0.14.0"
      +      }
      +    },
      +    "typography-normalize": {
      +      "version": "0.14.0",
      +      "resolved": "https://registry.npmjs.org/typography-normalize/-/typography-normalize-0.14.0.tgz",
      +      "integrity": "sha1-HXfB/iqvSlGzZzxMhchaZaLUtXM="
      +    },
      +    "typography-theme-github": {
      +      "version": "0.15.10",
      +      "resolved": "https://registry.npmjs.org/typography-theme-github/-/typography-theme-github-0.15.10.tgz",
      +      "integrity": "sha1-ZK2jlyLi4jyCDbigj8yoT05wQwk=",
      +      "requires": {
      +        "gray-percentage": "2.0.0"
      +      }
      +    },
      +    "ua-parser-js": {
      +      "version": "0.7.17",
      +      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",
      +      "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g=="
      +    },
      +    "uglify-js": {
      +      "version": "2.8.29",
      +      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
      +      "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
      +      "requires": {
      +        "source-map": "0.5.7",
      +        "uglify-to-browserify": "1.0.2",
      +        "yargs": "3.10.0"
      +      },
      +      "dependencies": {
      +        "camelcase": {
      +          "version": "1.2.1",
      +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
      +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
      +        },
      +        "cliui": {
      +          "version": "2.1.0",
      +          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
      +          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
      +          "requires": {
      +            "center-align": "0.1.3",
      +            "right-align": "0.1.3",
      +            "wordwrap": "0.0.2"
      +          }
      +        },
      +        "yargs": {
      +          "version": "3.10.0",
      +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
      +          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
      +          "requires": {
      +            "camelcase": "1.2.1",
      +            "cliui": "2.1.0",
      +            "decamelize": "1.2.0",
      +            "window-size": "0.1.0"
      +          }
      +        }
      +      }
      +    },
      +    "uglify-to-browserify": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
      +      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
      +    },
      +    "ultron": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
      +      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
      +    },
      +    "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="
      +    },
      +    "underscore.string": {
      +      "version": "3.3.4",
      +      "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
      +      "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
      +      "requires": {
      +        "sprintf-js": "1.0.3",
      +        "util-deprecate": "1.0.2"
      +      }
      +    },
      +    "unherit": {
      +      "version": "1.1.0",
      +      "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz",
      +      "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=",
      +      "requires": {
      +        "inherits": "2.0.3",
      +        "xtend": "4.0.1"
      +      }
      +    },
      +    "unified": {
      +      "version": "6.1.6",
      +      "resolved": "https://registry.npmjs.org/unified/-/unified-6.1.6.tgz",
      +      "integrity": "sha512-pW2f82bCIo2ifuIGYcV12fL96kMMYgw7JKVEgh7ODlrM9rj6vXSY3BV+H6lCcv1ksxynFf582hwWLnA1qRFy4w==",
      +      "requires": {
      +        "bail": "1.0.2",
      +        "extend": "3.0.1",
      +        "is-plain-obj": "1.1.0",
      +        "trough": "1.0.1",
      +        "vfile": "2.3.0",
      +        "x-is-function": "1.0.4",
      +        "x-is-string": "0.1.0"
      +      }
      +    },
      +    "union-value": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
      +      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
      +      "requires": {
      +        "arr-union": "3.1.0",
      +        "get-value": "2.0.6",
      +        "is-extendable": "0.1.1",
      +        "set-value": "0.4.3"
      +      },
      +      "dependencies": {
      +        "set-value": {
      +          "version": "0.4.3",
      +          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
      +          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
      +          "requires": {
      +            "extend-shallow": "2.0.1",
      +            "is-extendable": "0.1.1",
      +            "is-plain-object": "2.0.4",
      +            "to-object-path": "0.3.0"
      +          }
      +        }
      +      }
      +    },
      +    "uniq": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
      +      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
      +    },
      +    "uniqid": {
      +      "version": "4.1.1",
      +      "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
      +      "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
      +      "requires": {
      +        "macaddress": "0.2.8"
      +      }
      +    },
      +    "uniqs": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
      +      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI="
      +    },
      +    "unique-string": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
      +      "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
      +      "requires": {
      +        "crypto-random-string": "1.0.0"
      +      }
      +    },
      +    "unist-builder": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.2.tgz",
      +      "integrity": "sha1-jDuZA+9kvPsRfdfPal2Y/Bs7J7Y=",
      +      "requires": {
      +        "object-assign": "4.1.1"
      +      }
      +    },
      +    "unist-util-generated": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.1.tgz",
      +      "integrity": "sha1-mfFseJWayFTe58YVwpGSTIv03n8="
      +    },
      +    "unist-util-is": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.1.tgz",
      +      "integrity": "sha1-DDEmKeP5YMZukx6BLT2A53AQlHs="
      +    },
      +    "unist-util-modify-children": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.1.tgz",
      +      "integrity": "sha1-ZtfmpEnm9nIguXarPLi166w55R0=",
      +      "requires": {
      +        "array-iterate": "1.1.1"
      +      }
      +    },
      +    "unist-util-position": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.0.tgz",
      +      "integrity": "sha1-5uHgPu64HF4a/lU+jUrfvXwNj4I="
      +    },
      +    "unist-util-remove-position": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz",
      +      "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=",
      +      "requires": {
      +        "unist-util-visit": "1.2.0"
      +      }
      +    },
      +    "unist-util-select": {
      +      "version": "1.5.0",
      +      "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-1.5.0.tgz",
      +      "integrity": "sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=",
      +      "requires": {
      +        "css-selector-parser": "1.3.0",
      +        "debug": "2.6.9",
      +        "nth-check": "1.0.1"
      +      }
      +    },
      +    "unist-util-stringify-position": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz",
      +      "integrity": "sha1-PMvcU2ee7W7PN3fdf14yKcG2qjw="
      +    },
      +    "unist-util-visit": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.2.0.tgz",
      +      "integrity": "sha512-lI+jyPlDztHZ2CJhUchcRMQ7MNc0yASgYFxwRTxs0EZ+9HbYFBLVGDJ2FchTBy+pra0O1LVEn0Wkgf19mDVDzw==",
      +      "requires": {
      +        "unist-util-is": "2.1.1"
      +      }
      +    },
      +    "unist-util-visit-children": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.1.tgz",
      +      "integrity": "sha1-66Y7NxEWIxGBBog3EYtubhDsiEQ="
      +    },
      +    "units-css": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz",
      +      "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=",
      +      "requires": {
      +        "isnumeric": "0.2.0",
      +        "viewport-dimensions": "0.2.0"
      +      }
      +    },
      +    "universalify": {
      +      "version": "0.1.1",
      +      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
      +      "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
      +    },
      +    "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.1"
      +      },
      +      "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.6",
      +            "has-values": "0.1.4",
      +            "isobject": "2.1.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="
      +        },
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        }
      +      }
      +    },
      +    "unzip-response": {
      +      "version": "2.0.1",
      +      "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
      +      "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c="
      +    },
      +    "update-notifier": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz",
      +      "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=",
      +      "requires": {
      +        "boxen": "1.2.2",
      +        "chalk": "2.3.0",
      +        "configstore": "3.1.1",
      +        "import-lazy": "2.1.0",
      +        "is-installed-globally": "0.1.0",
      +        "is-npm": "1.0.0",
      +        "latest-version": "3.1.0",
      +        "semver-diff": "2.1.0",
      +        "xdg-basedir": "3.0.0"
      +      },
      +      "dependencies": {
      +        "ansi-styles": {
      +          "version": "3.2.0",
      +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
      +          "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
      +          "requires": {
      +            "color-convert": "1.9.1"
      +          }
      +        },
      +        "chalk": {
      +          "version": "2.3.0",
      +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
      +          "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
      +          "requires": {
      +            "ansi-styles": "3.2.0",
      +            "escape-string-regexp": "1.0.5",
      +            "supports-color": "4.5.0"
      +          }
      +        },
      +        "has-flag": {
      +          "version": "2.0.0",
      +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
      +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
      +        },
      +        "supports-color": {
      +          "version": "4.5.0",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
      +          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
      +          "requires": {
      +            "has-flag": "2.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "urix": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
      +      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
      +    },
      +    "url": {
      +      "version": "0.11.0",
      +      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
      +      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
      +      "requires": {
      +        "punycode": "1.3.2",
      +        "querystring": "0.2.0"
      +      },
      +      "dependencies": {
      +        "punycode": {
      +          "version": "1.3.2",
      +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
      +          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
      +        }
      +      }
      +    },
      +    "url-loader": {
      +      "version": "0.5.9",
      +      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz",
      +      "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==",
      +      "requires": {
      +        "loader-utils": "1.1.0",
      +        "mime": "1.3.6"
      +      },
      +      "dependencies": {
      +        "loader-utils": {
      +          "version": "1.1.0",
      +          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
      +          "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
      +          "requires": {
      +            "big.js": "3.2.0",
      +            "emojis-list": "2.1.0",
      +            "json5": "0.5.1"
      +          }
      +        },
      +        "mime": {
      +          "version": "1.3.6",
      +          "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz",
      +          "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA="
      +        }
      +      }
      +    },
      +    "url-parse": {
      +      "version": "1.2.0",
      +      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz",
      +      "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==",
      +      "requires": {
      +        "querystringify": "1.0.0",
      +        "requires-port": "1.0.0"
      +      },
      +      "dependencies": {
      +        "querystringify": {
      +          "version": "1.0.0",
      +          "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz",
      +          "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs="
      +        }
      +      }
      +    },
      +    "url-parse-lax": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
      +      "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
      +      "requires": {
      +        "prepend-http": "1.0.4"
      +      }
      +    },
      +    "url-to-options": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
      +      "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k="
      +    },
      +    "use": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz",
      +      "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=",
      +      "requires": {
      +        "define-property": "0.2.5",
      +        "isobject": "3.0.1",
      +        "lazy-cache": "2.0.2"
      +      },
      +      "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.6"
      +          }
      +        },
      +        "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.1.0"
      +          }
      +        },
      +        "isobject": {
      +          "version": "3.0.1",
      +          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
      +          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
      +        },
      +        "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=="
      +        },
      +        "lazy-cache": {
      +          "version": "2.0.2",
      +          "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
      +          "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
      +          "requires": {
      +            "set-getter": "0.1.0"
      +          }
      +        }
      +      }
      +    },
      +    "user-home": {
      +      "version": "1.1.1",
      +      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
      +      "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
      +    },
      +    "util": {
      +      "version": "0.10.3",
      +      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
      +      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
      +      "requires": {
      +        "inherits": "2.0.1"
      +      },
      +      "dependencies": {
      +        "inherits": {
      +          "version": "2.0.1",
      +          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
      +          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
      +        }
      +      }
      +    },
      +    "util-deprecate": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
      +      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
      +    },
      +    "utila": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
      +      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw="
      +    },
      +    "utils-merge": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
      +      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
      +    },
      +    "uuid": {
      +      "version": "3.1.0",
      +      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
      +      "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
      +    },
      +    "uws": {
      +      "version": "0.14.5",
      +      "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz",
      +      "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=",
      +      "optional": true
      +    },
      +    "v8flags": {
      +      "version": "2.1.1",
      +      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
      +      "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
      +      "requires": {
      +        "user-home": "1.1.1"
      +      }
      +    },
      +    "valid-url": {
      +      "version": "1.0.9",
      +      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
      +      "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA="
      +    },
      +    "validate-npm-package-license": {
      +      "version": "3.0.1",
      +      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
      +      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
      +      "requires": {
      +        "spdx-correct": "1.0.2",
      +        "spdx-expression-parse": "1.0.4"
      +      }
      +    },
      +    "value-equal": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz",
      +      "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw=="
      +    },
      +    "vary": {
      +      "version": "1.1.2",
      +      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
      +      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
      +    },
      +    "vendors": {
      +      "version": "1.0.1",
      +      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
      +      "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI="
      +    },
      +    "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.3.0"
      +      }
      +    },
      +    "vfile": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
      +      "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
      +      "requires": {
      +        "is-buffer": "1.1.6",
      +        "replace-ext": "1.0.0",
      +        "unist-util-stringify-position": "1.1.1",
      +        "vfile-message": "1.0.0"
      +      }
      +    },
      +    "vfile-location": {
      +      "version": "2.0.2",
      +      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.2.tgz",
      +      "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU="
      +    },
      +    "vfile-message": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.0.tgz",
      +      "integrity": "sha512-HPREhzTOB/sNDc9/Mxf8w0FmHnThg5CRSJdR9VRFkD2riqYWs+fuXlj5z8mIpv2LrD7uU41+oPWFOL4Mjlf+dw==",
      +      "requires": {
      +        "unist-util-stringify-position": "1.1.1"
      +      }
      +    },
      +    "viewport-dimensions": {
      +      "version": "0.2.0",
      +      "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz",
      +      "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w="
      +    },
      +    "vm-browserify": {
      +      "version": "0.0.4",
      +      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
      +      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
      +      "requires": {
      +        "indexof": "0.0.1"
      +      }
      +    },
      +    "walker": {
      +      "version": "1.0.7",
      +      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
      +      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
      +      "optional": true,
      +      "requires": {
      +        "makeerror": "1.0.11"
      +      }
      +    },
      +    "warning": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
      +      "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
      +      "requires": {
      +        "loose-envify": "1.3.1"
      +      }
      +    },
      +    "watch": {
      +      "version": "0.10.0",
      +      "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz",
      +      "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=",
      +      "optional": true
      +    },
      +    "watchpack": {
      +      "version": "0.2.9",
      +      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz",
      +      "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
      +      "requires": {
      +        "async": "0.9.2",
      +        "chokidar": "1.7.0",
      +        "graceful-fs": "4.1.11"
      +      },
      +      "dependencies": {
      +        "async": {
      +          "version": "0.9.2",
      +          "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
      +          "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
      +        }
      +      }
      +    },
      +    "webpack": {
      +      "version": "1.15.0",
      +      "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz",
      +      "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
      +      "requires": {
      +        "acorn": "3.3.0",
      +        "async": "1.5.2",
      +        "clone": "1.0.3",
      +        "enhanced-resolve": "0.9.1",
      +        "interpret": "0.6.6",
      +        "loader-utils": "0.2.17",
      +        "memory-fs": "0.3.0",
      +        "mkdirp": "0.5.1",
      +        "node-libs-browser": "0.7.0",
      +        "optimist": "0.6.1",
      +        "supports-color": "3.2.3",
      +        "tapable": "0.1.10",
      +        "uglify-js": "2.7.5",
      +        "watchpack": "0.2.9",
      +        "webpack-core": "0.6.9"
      +      },
      +      "dependencies": {
      +        "async": {
      +          "version": "1.5.2",
      +          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
      +          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
      +        },
      +        "browserify-aes": {
      +          "version": "0.4.0",
      +          "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz",
      +          "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
      +          "requires": {
      +            "inherits": "2.0.3"
      +          }
      +        },
      +        "browserify-zlib": {
      +          "version": "0.1.4",
      +          "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
      +          "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
      +          "requires": {
      +            "pako": "0.2.9"
      +          }
      +        },
      +        "camelcase": {
      +          "version": "1.2.1",
      +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
      +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
      +        },
      +        "cliui": {
      +          "version": "2.1.0",
      +          "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
      +          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
      +          "requires": {
      +            "center-align": "0.1.3",
      +            "right-align": "0.1.3",
      +            "wordwrap": "0.0.2"
      +          }
      +        },
      +        "crypto-browserify": {
      +          "version": "3.3.0",
      +          "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz",
      +          "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=",
      +          "requires": {
      +            "browserify-aes": "0.4.0",
      +            "pbkdf2-compat": "2.0.1",
      +            "ripemd160": "0.2.0",
      +            "sha.js": "2.2.6"
      +          }
      +        },
      +        "https-browserify": {
      +          "version": "0.0.1",
      +          "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
      +          "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI="
      +        },
      +        "node-libs-browser": {
      +          "version": "0.7.0",
      +          "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz",
      +          "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
      +          "requires": {
      +            "assert": "1.4.1",
      +            "browserify-zlib": "0.1.4",
      +            "buffer": "4.9.1",
      +            "console-browserify": "1.1.0",
      +            "constants-browserify": "1.0.0",
      +            "crypto-browserify": "3.3.0",
      +            "domain-browser": "1.1.7",
      +            "events": "1.1.1",
      +            "https-browserify": "0.0.1",
      +            "os-browserify": "0.2.1",
      +            "path-browserify": "0.0.0",
      +            "process": "0.11.10",
      +            "punycode": "1.4.1",
      +            "querystring-es3": "0.2.1",
      +            "readable-stream": "2.3.3",
      +            "stream-browserify": "2.0.1",
      +            "stream-http": "2.7.2",
      +            "string_decoder": "0.10.31",
      +            "timers-browserify": "2.0.4",
      +            "tty-browserify": "0.0.0",
      +            "url": "0.11.0",
      +            "util": "0.10.3",
      +            "vm-browserify": "0.0.4"
      +          }
      +        },
      +        "os-browserify": {
      +          "version": "0.2.1",
      +          "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
      +          "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8="
      +        },
      +        "pako": {
      +          "version": "0.2.9",
      +          "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
      +          "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
      +        },
      +        "punycode": {
      +          "version": "1.4.1",
      +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
      +          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
      +        },
      +        "ripemd160": {
      +          "version": "0.2.0",
      +          "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz",
      +          "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84="
      +        },
      +        "sha.js": {
      +          "version": "2.2.6",
      +          "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz",
      +          "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo="
      +        },
      +        "string_decoder": {
      +          "version": "0.10.31",
      +          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
      +          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
      +        },
      +        "supports-color": {
      +          "version": "3.2.3",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
      +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
      +          "requires": {
      +            "has-flag": "1.0.0"
      +          }
      +        },
      +        "uglify-js": {
      +          "version": "2.7.5",
      +          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
      +          "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
      +          "requires": {
      +            "async": "0.2.10",
      +            "source-map": "0.5.7",
      +            "uglify-to-browserify": "1.0.2",
      +            "yargs": "3.10.0"
      +          },
      +          "dependencies": {
      +            "async": {
      +              "version": "0.2.10",
      +              "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
      +              "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
      +            }
      +          }
      +        },
      +        "webpack-core": {
      +          "version": "0.6.9",
      +          "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
      +          "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
      +          "requires": {
      +            "source-list-map": "0.1.8",
      +            "source-map": "0.4.4"
      +          },
      +          "dependencies": {
      +            "source-map": {
      +              "version": "0.4.4",
      +              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
      +              "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
      +              "requires": {
      +                "amdefine": "1.0.1"
      +              }
      +            }
      +          }
      +        },
      +        "yargs": {
      +          "version": "3.10.0",
      +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
      +          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
      +          "requires": {
      +            "camelcase": "1.2.1",
      +            "cliui": "2.1.0",
      +            "decamelize": "1.2.0",
      +            "window-size": "0.1.0"
      +          }
      +        }
      +      }
      +    },
      +    "webpack-configurator": {
      +      "version": "0.3.1",
      +      "resolved": "https://registry.npmjs.org/webpack-configurator/-/webpack-configurator-0.3.1.tgz",
      +      "integrity": "sha1-0WgCr6Z0EBoMv6b8NE1BXJZJVAs=",
      +      "requires": {
      +        "lodash": "3.10.1"
      +      },
      +      "dependencies": {
      +        "lodash": {
      +          "version": "3.10.1",
      +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
      +          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
      +        }
      +      }
      +    },
      +    "webpack-core": {
      +      "version": "0.4.8",
      +      "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.4.8.tgz",
      +      "integrity": "sha1-B/xVq6gdF9uoyuWkPWvWkjb4tfg=",
      +      "requires": {
      +        "source-map": "0.1.43"
      +      },
      +      "dependencies": {
      +        "source-map": {
      +          "version": "0.1.43",
      +          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
      +          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
      +          "requires": {
      +            "amdefine": "1.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "webpack-dev-middleware": {
      +      "version": "1.12.2",
      +      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
      +      "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
      +      "requires": {
      +        "memory-fs": "0.4.1",
      +        "mime": "1.6.0",
      +        "path-is-absolute": "1.0.1",
      +        "range-parser": "1.2.0",
      +        "time-stamp": "2.0.0"
      +      },
      +      "dependencies": {
      +        "memory-fs": {
      +          "version": "0.4.1",
      +          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
      +          "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
      +          "requires": {
      +            "errno": "0.1.4",
      +            "readable-stream": "2.3.3"
      +          }
      +        }
      +      }
      +    },
      +    "webpack-dev-server": {
      +      "version": "1.16.5",
      +      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz",
      +      "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=",
      +      "requires": {
      +        "compression": "1.7.1",
      +        "connect-history-api-fallback": "1.5.0",
      +        "express": "4.16.2",
      +        "http-proxy-middleware": "0.17.4",
      +        "open": "0.0.5",
      +        "optimist": "0.6.1",
      +        "serve-index": "1.9.1",
      +        "sockjs": "0.3.19",
      +        "sockjs-client": "1.1.4",
      +        "stream-cache": "0.0.2",
      +        "strip-ansi": "3.0.1",
      +        "supports-color": "3.2.3",
      +        "webpack-dev-middleware": "1.12.2"
      +      },
      +      "dependencies": {
      +        "supports-color": {
      +          "version": "3.2.3",
      +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
      +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
      +          "requires": {
      +            "has-flag": "1.0.0"
      +          }
      +        }
      +      }
      +    },
      +    "webpack-hot-middleware": {
      +      "version": "2.21.0",
      +      "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz",
      +      "integrity": "sha512-P6xiOLy10QlSVSO7GanU9PLxN6zLLQ7RG16MPTvmFwf2KUG7jMp6m+fmdgsR7xoaVVLA7OlX3YO6JjoZEKjCuA==",
      +      "requires": {
      +        "ansi-html": "0.0.7",
      +        "html-entities": "1.2.1",
      +        "querystring": "0.2.0",
      +        "strip-ansi": "3.0.1"
      +      }
      +    },
      +    "webpack-md5-hash": {
      +      "version": "0.0.5",
      +      "resolved": "https://registry.npmjs.org/webpack-md5-hash/-/webpack-md5-hash-0.0.5.tgz",
      +      "integrity": "sha1-2fGJnq1mRFndi2sMkmrHHPvXvHo=",
      +      "requires": {
      +        "md5": "2.2.1"
      +      }
      +    },
      +    "webpack-sources": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz",
      +      "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=",
      +      "requires": {
      +        "source-list-map": "0.1.8",
      +        "source-map": "0.5.7"
      +      }
      +    },
      +    "webpack-stats-plugin": {
      +      "version": "0.1.5",
      +      "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-0.1.5.tgz",
      +      "integrity": "sha1-KeXxLr/VMVjTHWVqETrB97hhedk="
      +    },
      +    "webpack-validator": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/webpack-validator/-/webpack-validator-2.3.0.tgz",
      +      "integrity": "sha1-I1xuppqpMKkCYru/m9Ra2L1JcxA=",
      +      "requires": {
      +        "basename": "0.1.2",
      +        "chalk": "1.1.3",
      +        "commander": "2.9.0",
      +        "common-tags": "0.1.1",
      +        "cross-env": "3.2.4",
      +        "find-node-modules": "1.0.4",
      +        "joi": "9.0.0-0",
      +        "lodash": "4.11.1",
      +        "npmlog": "2.0.3",
      +        "shelljs": "0.7.0",
      +        "yargs": "4.7.1"
      +      },
      +      "dependencies": {
      +        "camelcase": {
      +          "version": "3.0.0",
      +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
      +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
      +        },
      +        "common-tags": {
      +          "version": "0.1.1",
      +          "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-0.1.1.tgz",
      +          "integrity": "sha1-2JNIbsxt8iz/5sOTyIwS9x5+iHE=",
      +          "requires": {
      +            "babel-runtime": "6.26.0"
      +          }
      +        },
      +        "isemail": {
      +          "version": "2.2.1",
      +          "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz",
      +          "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY="
      +        },
      +        "joi": {
      +          "version": "9.0.0-0",
      +          "resolved": "https://registry.npmjs.org/joi/-/joi-9.0.0-0.tgz",
      +          "integrity": "sha1-p8pCGWAhSa4Np6fFyh1j08eeCWs=",
      +          "requires": {
      +            "hoek": "4.2.0",
      +            "isemail": "2.2.1",
      +            "items": "2.1.1",
      +            "moment": "2.19.3",
      +            "topo": "2.0.2"
      +          }
      +        },
      +        "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.11",
      +            "parse-json": "2.2.0",
      +            "pify": "2.3.0",
      +            "pinkie-promise": "2.0.1",
      +            "strip-bom": "2.0.0"
      +          }
      +        },
      +        "lodash": {
      +          "version": "4.11.1",
      +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.11.1.tgz",
      +          "integrity": "sha1-oyEG644uyOgsJBYRQUdzyd8V+Lw="
      +        },
      +        "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"
      +          }
      +        },
      +        "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.11",
      +            "pify": "2.3.0",
      +            "pinkie-promise": "2.0.1"
      +          }
      +        },
      +        "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.1.0",
      +            "normalize-package-data": "2.4.0",
      +            "path-type": "1.1.0"
      +          }
      +        },
      +        "read-pkg-up": {
      +          "version": "1.0.1",
      +          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
      +          "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
      +          "requires": {
      +            "find-up": "1.1.2",
      +            "read-pkg": "1.1.0"
      +          }
      +        },
      +        "set-blocking": {
      +          "version": "1.0.0",
      +          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-1.0.0.tgz",
      +          "integrity": "sha1-zV5dk4BI3xrJLf6S4fFq3WVvXsU="
      +        },
      +        "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.1.0",
      +            "is-fullwidth-code-point": "1.0.0",
      +            "strip-ansi": "3.0.1"
      +          }
      +        },
      +        "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.1"
      +          }
      +        },
      +        "window-size": {
      +          "version": "0.2.0",
      +          "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz",
      +          "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU="
      +        },
      +        "yargs": {
      +          "version": "4.7.1",
      +          "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.7.1.tgz",
      +          "integrity": "sha1-5gQyZYozh/8mnAKOrN5KUS5Djf8=",
      +          "requires": {
      +            "camelcase": "3.0.0",
      +            "cliui": "3.2.0",
      +            "decamelize": "1.2.0",
      +            "lodash.assign": "4.2.0",
      +            "os-locale": "1.4.0",
      +            "pkg-conf": "1.1.3",
      +            "read-pkg-up": "1.0.1",
      +            "require-main-filename": "1.0.1",
      +            "set-blocking": "1.0.0",
      +            "string-width": "1.0.2",
      +            "window-size": "0.2.0",
      +            "y18n": "3.2.1",
      +            "yargs-parser": "2.4.1"
      +          }
      +        },
      +        "yargs-parser": {
      +          "version": "2.4.1",
      +          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz",
      +          "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=",
      +          "requires": {
      +            "camelcase": "3.0.0",
      +            "lodash.assign": "4.2.0"
      +          }
      +        }
      +      }
      +    },
      +    "websocket-driver": {
      +      "version": "0.7.0",
      +      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
      +      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
      +      "requires": {
      +        "http-parser-js": "0.4.9",
      +        "websocket-extensions": "0.1.3"
      +      }
      +    },
      +    "websocket-extensions": {
      +      "version": "0.1.3",
      +      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
      +      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
      +    },
      +    "whatwg-fetch": {
      +      "version": "2.0.3",
      +      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
      +      "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
      +    },
      +    "when": {
      +      "version": "3.7.8",
      +      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
      +      "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
      +      "optional": true
      +    },
      +    "whet.extend": {
      +      "version": "0.9.9",
      +      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
      +      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE="
      +    },
      +    "which": {
      +      "version": "1.3.0",
      +      "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
      +      "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
      +      "requires": {
      +        "isexe": "2.0.0"
      +      }
      +    },
      +    "which-module": {
      +      "version": "2.0.0",
      +      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
      +      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
      +    },
      +    "widest-line": {
      +      "version": "1.0.0",
      +      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
      +      "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=",
      +      "requires": {
      +        "string-width": "1.0.2"
      +      },
      +      "dependencies": {
      +        "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.1.0",
      +            "is-fullwidth-code-point": "1.0.0",
      +            "strip-ansi": "3.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "window-size": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
      +      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
      +    },
      +    "wordwrap": {
      +      "version": "0.0.2",
      +      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
      +      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
      +    },
      +    "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.2",
      +        "strip-ansi": "3.0.1"
      +      },
      +      "dependencies": {
      +        "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.1.0",
      +            "is-fullwidth-code-point": "1.0.0",
      +            "strip-ansi": "3.0.1"
      +          }
      +        }
      +      }
      +    },
      +    "wrappy": {
      +      "version": "1.0.2",
      +      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
      +      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
      +    },
      +    "write-file-atomic": {
      +      "version": "2.3.0",
      +      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
      +      "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
      +      "requires": {
      +        "graceful-fs": "4.1.11",
      +        "imurmurhash": "0.1.4",
      +        "signal-exit": "3.0.2"
      +      }
      +    },
      +    "ws": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/ws/-/ws-3.0.0.tgz",
      +      "integrity": "sha1-mN2wAFbIOQy3Ued4h4hJf5kQO2w=",
      +      "requires": {
      +        "safe-buffer": "5.0.1",
      +        "ultron": "1.1.1"
      +      },
      +      "dependencies": {
      +        "safe-buffer": {
      +          "version": "5.0.1",
      +          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
      +          "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
      +        }
      +      }
      +    },
      +    "x-is-function": {
      +      "version": "1.0.4",
      +      "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz",
      +      "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4="
      +    },
      +    "x-is-string": {
      +      "version": "0.1.0",
      +      "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
      +      "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI="
      +    },
      +    "xdg-basedir": {
      +      "version": "3.0.0",
      +      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
      +      "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
      +    },
      +    "xmlhttprequest-ssl": {
      +      "version": "1.5.4",
      +      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz",
      +      "integrity": "sha1-BPVgkVcks4kIhxXMDteBPpZ3v1c="
      +    },
      +    "xtend": {
      +      "version": "4.0.1",
      +      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
      +      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
      +    },
      +    "y18n": {
      +      "version": "3.2.1",
      +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
      +      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
      +    },
      +    "yallist": {
      +      "version": "2.1.2",
      +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
      +      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
      +    },
      +    "yaml-loader": {
      +      "version": "0.4.0",
      +      "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.4.0.tgz",
      +      "integrity": "sha1-Sq5EfRPBqnOpidiipTCbCxo8o1M=",
      +      "requires": {
      +        "js-yaml": "3.7.0"
      +      }
      +    },
      +    "yargs": {
      +      "version": "8.0.2",
      +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
      +      "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
      +      "requires": {
      +        "camelcase": "4.1.0",
      +        "cliui": "3.2.0",
      +        "decamelize": "1.2.0",
      +        "get-caller-file": "1.0.2",
      +        "os-locale": "2.1.0",
      +        "read-pkg-up": "2.0.0",
      +        "require-directory": "2.1.1",
      +        "require-main-filename": "1.0.1",
      +        "set-blocking": "2.0.0",
      +        "string-width": "2.1.1",
      +        "which-module": "2.0.0",
      +        "y18n": "3.2.1",
      +        "yargs-parser": "7.0.0"
      +      }
      +    },
      +    "yargs-parser": {
      +      "version": "7.0.0",
      +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
      +      "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
      +      "requires": {
      +        "camelcase": "4.1.0"
      +      }
      +    },
      +    "yeast": {
      +      "version": "0.1.2",
      +      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
      +      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
      +    },
      +    "yurnalist": {
      +      "version": "0.2.1",
      +      "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-0.2.1.tgz",
      +      "integrity": "sha1-LTK5YYq2SRiRwTG9kKUpXhn9S60=",
      +      "requires": {
      +        "chalk": "1.1.3",
      +        "death": "1.1.0",
      +        "debug": "2.6.9",
      +        "detect-indent": "5.0.0",
      +        "inquirer": "3.3.0",
      +        "invariant": "2.2.2",
      +        "is-builtin-module": "1.0.0",
      +        "is-ci": "1.0.10",
      +        "leven": "2.1.0",
      +        "loud-rejection": "1.6.0",
      +        "node-emoji": "1.8.1",
      +        "object-path": "0.11.4",
      +        "read": "1.0.7",
      +        "rimraf": "2.6.2",
      +        "semver": "5.4.1",
      +        "strip-bom": "3.0.0"
      +      },
      +      "dependencies": {
      +        "detect-indent": {
      +          "version": "5.0.0",
      +          "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
      +          "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50="
      +        }
      +      }
      +    }
      +  }
      +}
      diff --git a/www/package.json b/www/package.json
      new file mode 100644
      index 000000000..7bdc9c1e2
      --- /dev/null
      +++ b/www/package.json
      @@ -0,0 +1,27 @@
      +{
      +  "name": "html2canvas-website",
      +  "description": "https://html2canvas.hertzen.com",
      +  "version": "1.0.0",
      +  "private": true,
      +  "author": "Niklas von Hertzen",
      +  "dependencies": {
      +    "gatsby": "^1.9.127",
      +    "gatsby-link": "^1.6.30",
      +    "gatsby-plugin-catch-links": "^1.0.13",
      +    "gatsby-plugin-glamor": "^1.6.9",
      +    "gatsby-plugin-react-helmet": "^1.0.8",
      +    "gatsby-plugin-typography": "^1.7.10",
      +    "gatsby-remark-prismjs": "^1.2.10",
      +    "gatsby-source-filesystem": "^1.5.9",
      +    "gatsby-transformer-remark": "^1.7.23",
      +    "typography": "^0.16.6",
      +    "typography-theme-github": "^0.15.10"
      +  },
      +  "license": "MIT",
      +  "main": "n/a",
      +  "scripts": {
      +    "build": "gatsby build",
      +    "develop": "gatsby develop",
      +    "test": "echo \"Error: no test specified\" && exit 1"
      +  }
      +}
      diff --git a/www/src/components/navigation.js b/www/src/components/navigation.js
      new file mode 100644
      index 000000000..d96b39606
      --- /dev/null
      +++ b/www/src/components/navigation.js
      @@ -0,0 +1,52 @@
      +import React from 'react';
      +import Link from 'gatsby-link';
      +
      +const lineLinkStyle = {
      +    lineHeight: '44px',
      +    height: '44px',
      +    padding: '0 30px',
      +    display: 'block',
      +    '&:hover': {
      +        backgroundColor: 'rgba(0,0,0,0.05)'
      +    },
      +    transition: '.3s ease-out'
      +};
      +
      +const navStyle = {
      +    height: '100%',
      +    width: '300px',
      +    position: 'fixed',
      +    top: 0,
      +    left: 0,
      +    backgroundColor: '#fff',
      +    boxShadow:
      +        '0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2)'
      +};
      +
      +const links = [
      +    {href: '/about', text: 'About'},
      +    {href: '/getting-started', text: 'Getting started'},
      +    {href: '/configuration', text: 'Configuration'},
      +    {href: '/features', text: 'Features'},
      +    {href: '/proxy', text: 'Proxy'},
      +    {href: '/faq', text: 'FAQ'}
      +];
      +
      +export default () =>
      +    
      +
        + {links.map(({href, text}, i) => +
      • + + {text} + +
      • + )} +
      +
      ; diff --git a/www/src/layouts/index.css b/www/src/layouts/index.css new file mode 100644 index 000000000..e485487be --- /dev/null +++ b/www/src/layouts/index.css @@ -0,0 +1,624 @@ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +progress { + vertical-align: baseline; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: .67em 0; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -.25em; +} +sup { + top: -.5em; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +button, +input, +optgroup, +select, +textarea { + font: inherit; + margin: 0; +} +optgroup { + font-weight: 700; +} +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 { + border-style: none; + padding: 0; +} +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +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] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +html { + font: 112.5%/1.45em georgia, serif; + box-sizing: border-box; + overflow-y: scroll; +} +* { + box-sizing: inherit; +} +*:before { + box-sizing: inherit; +} +*:after { + box-sizing: inherit; +} +body { + color: hsla(0, 0%, 0%, 0.8); + font-family: georgia, serif; + font-weight: normal; + word-wrap: break-word; + font-kerning: normal; + -moz-font-feature-settings: "kern", "liga", "clig", "calt"; + -ms-font-feature-settings: "kern", "liga", "clig", "calt"; + -webkit-font-feature-settings: "kern", "liga", "clig", "calt"; + font-feature-settings: "kern", "liga", "clig", "calt"; +} +img { + max-width: 100%; + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +h1 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 2.25rem; + line-height: 1.1; +} +h2 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.62671rem; + line-height: 1.1; +} +h3 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1.38316rem; + line-height: 1.1; +} +h4 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 1rem; + line-height: 1.1; +} +h5 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.85028rem; + line-height: 1.1; +} +h6 { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + color: inherit; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + font-weight: bold; + text-rendering: optimizeLegibility; + font-size: 0.78405rem; + line-height: 1.1; +} +hgroup { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +ul { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +ol { + margin-left: 1.45rem; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + list-style-position: outside; + list-style-image: none; +} +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +dd { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +p { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +figure { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +pre { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 0.85rem; + line-height: 1.42; + background: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + overflow: auto; + word-wrap: normal; + padding: 1.45rem; +} +table { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; + font-size: 1rem; + line-height: 1.45rem; + border-collapse: collapse; + width: 100%; +} +fieldset { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +blockquote { + margin-left: 1.45rem; + margin-right: 1.45rem; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +form { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +noscript { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +iframe { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +hr { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: calc(1.45rem - 1px); + background: hsla(0, 0%, 0%, 0.2); + border: none; + height: 1px; +} +address { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + padding-top: 0; + margin-bottom: 1.45rem; +} +b { + font-weight: bold; +} +strong { + font-weight: bold; +} +dt { + font-weight: bold; +} +th { + font-weight: bold; +} +li { + margin-bottom: calc(1.45rem / 2); +} +ol li { + padding-left: 0; +} +ul li { + padding-left: 0; +} +li > ol { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +li > ul { + margin-left: 1.45rem; + margin-bottom: calc(1.45rem / 2); + margin-top: calc(1.45rem / 2); +} +blockquote *:last-child { + margin-bottom: 0; +} +li *:last-child { + margin-bottom: 0; +} +p *:last-child { + margin-bottom: 0; +} +li > p { + margin-bottom: calc(1.45rem / 2); +} +code { + font-size: 0.85rem; + line-height: 1.45rem; +} +kbd { + font-size: 0.85rem; + line-height: 1.45rem; +} +samp { + font-size: 0.85rem; + line-height: 1.45rem; +} +abbr { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +acronym { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; +} +abbr[title] { + border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); + cursor: help; + text-decoration: none; +} +thead { + text-align: left; +} +td, +th { + text-align: left; + border-bottom: 1px solid hsla(0, 0%, 0%, 0.12); + font-feature-settings: "tnum"; + -moz-font-feature-settings: "tnum"; + -ms-font-feature-settings: "tnum"; + -webkit-font-feature-settings: "tnum"; + padding-left: 0.96667rem; + padding-right: 0.96667rem; + padding-top: 0.725rem; + padding-bottom: calc(0.725rem - 1px); +} +th:first-child, +td:first-child { + padding-left: 0; +} +th:last-child, +td:last-child { + padding-right: 0; +} +tt, +code { + background-color: hsla(0, 0%, 0%, 0.04); + border-radius: 3px; + font-family: "SFMono-Regular", Consolas, "Roboto Mono", "Droid Sans Mono", + "Liberation Mono", Menlo, Courier, monospace; + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; +} +pre code { + background: none; + line-height: 1.42; +} +code:before, +code:after, +tt:before, +tt:after { + letter-spacing: -0.2em; + content: " "; +} +pre code:before, +pre code:after, +pre tt:before, +pre tt:after { + content: ""; +} +@media only screen and (max-width: 480px) { + html { + font-size: 100%; + } +} diff --git a/www/src/layouts/index.js b/www/src/layouts/index.js new file mode 100644 index 000000000..d2dee3e38 --- /dev/null +++ b/www/src/layouts/index.js @@ -0,0 +1,25 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import Helmet from 'react-helmet'; +import Navigation from '../components/navigation'; +require('prismjs/themes/prism-solarizedlight.css'); +import './index.css'; + +const TemplateWrapper = ({children}) => +
      + + + {children()} +
      ; + +TemplateWrapper.propTypes = { + children: PropTypes.func +}; + +export default TemplateWrapper; diff --git a/www/src/pages/404.js b/www/src/pages/404.js new file mode 100644 index 000000000..4870b2b87 --- /dev/null +++ b/www/src/pages/404.js @@ -0,0 +1,9 @@ +import React from 'react'; + +const NotFoundPage = () => +
      +

      NOT FOUND

      +

      You just hit a route that doesn't exist... the sadness.

      +
      ; + +export default NotFoundPage; diff --git a/www/src/pages/index.js b/www/src/pages/index.js new file mode 100644 index 000000000..4971ec9d0 --- /dev/null +++ b/www/src/pages/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import Link from 'gatsby-link'; + +const IndexPage = () => +
      +

      Hi people

      +

      Welcome to your new Gatsby site.

      +

      Now go build something great.

      + Go to page 2 +
      ; + +export default IndexPage; diff --git a/www/src/templates/docs.js b/www/src/templates/docs.js new file mode 100644 index 000000000..a80c9602c --- /dev/null +++ b/www/src/templates/docs.js @@ -0,0 +1,47 @@ +import React from 'react'; + +export default ({data}) => { + const post = data.markdownRemark; + return ( +
      +
      + {' '}
      +

      + {post.frontmatter.title} +

      +
      +
      +
      +
      +
      +
      + ); +}; + +export const query = graphql` + query DocsQuery($slug: String!) { + markdownRemark(fields: {slug: {eq: $slug}}) { + html + frontmatter { + title + } + } + } +`; diff --git a/www/src/utils/typography.js b/www/src/utils/typography.js new file mode 100644 index 000000000..3428a5b8d --- /dev/null +++ b/www/src/utils/typography.js @@ -0,0 +1,6 @@ +import Typography from 'typography'; +import githubTheme from 'typography-theme-github'; + +const typography = new Typography(githubTheme); + +export default typography; From d83bc0247a90ffc2bcf6e77f6d6ef2c302b3592b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 17:51:28 +0800 Subject: [PATCH 126/377] Disable `foreignObjectRendering` by default (#1295) --- CHANGELOG.md | 1 + src/index.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9cb15e0d..5452be9f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### Changelog ### #### v1.0.0-alpha3 - TBD #### + * Disable `foreignObjectRendering` by default (#1295) * Fix background-size when using background-origin and background-size: cover/contain (#1299) * Added support for background-origin: content-box (#1299) diff --git a/src/index.js b/src/index.js index 01e016e7c..3dc302791 100644 --- a/src/index.js +++ b/src/index.js @@ -66,7 +66,7 @@ const html2canvas = (element: HTMLElement, conf: ?Options): Promise<*> => { imageTimeout: 15000, proxy: null, removeContainer: true, - foreignObjectRendering: true, + foreignObjectRendering: false, scale: defaultView.devicePixelRatio || 1, target: new CanvasRenderer(config.canvas), x: left, From 9bc0fb0bd126a4063f7d94c14ac8781b50eeb9c8 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 9 Dec 2017 18:00:45 +0800 Subject: [PATCH 127/377] Fix __DEV__ value for minified build --- webpack.config.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index f971c25bc..f80773ed4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -44,7 +44,14 @@ module.exports = [ libraryTarget: 'umd' }, module: modules, - plugins: plugins.concat([new UglifyJSPlugin(), new webpack.BannerPlugin(banner)]) + plugins: [ + new webpack.DefinePlugin({ + '__DEV__': false, + '__VERSION__': JSON.stringify(pkg.version) + }), + new UglifyJSPlugin(), + new webpack.BannerPlugin(banner) + ] }, { entry: './src/renderer/RefTestRenderer.js', From d1e870de88b98ad1dcaf1d1f449bb79cb301e008 Mon Sep 17 00:00:00 2001 From: Matthias Christen Date: Sat, 9 Dec 2017 23:07:27 +0100 Subject: [PATCH 128/377] added support for gradient background size and fixed linear gradient angle when vendor prefix is used --- src/Gradient.js | 13 ++++-- src/Renderer.js | 40 ++++++++++++++---- src/parsing/background.js | 13 ++++++ .../reftests/background/linear-gradient2.html | 42 +++++++++++++++++++ 4 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 tests/reftests/background/linear-gradient2.html diff --git a/src/Gradient.js b/src/Gradient.js index b15c56824..d542b84f4 100644 --- a/src/Gradient.js +++ b/src/Gradient.js @@ -34,7 +34,7 @@ export const parseGradient = ( bounds: Bounds ): ?Gradient => { if (method === 'linear-gradient') { - return parseLinearGradient(args, bounds); + return parseLinearGradient(args, bounds, !!prefix); } else if (method === 'gradient' && args[0] === 'linear') { // TODO handle correct angle return parseLinearGradient( @@ -46,18 +46,23 @@ export const parseGradient = ( // $FlowFixMe .map(v => v[2]) ), - bounds + bounds, + !!prefix ); } }; -const parseLinearGradient = (args: Array, bounds: Bounds): Gradient => { +const parseLinearGradient = (args: Array, bounds: Bounds, hasPrefix: boolean): Gradient => { const angle = parseAngle(args[0]); const HAS_SIDE_OR_CORNER = SIDE_OR_CORNER.test(args[0]); const HAS_DIRECTION = HAS_SIDE_OR_CORNER || angle !== null || PERCENTAGE_ANGLES.test(args[0]); const direction = HAS_DIRECTION ? angle !== null - ? calculateGradientDirection(angle, bounds) + ? calculateGradientDirection( + // if there is a prefix, the 0° angle points due East (instead of North per W3C) + hasPrefix ? angle - Math.PI * 0.5 : angle, + bounds + ) : HAS_SIDE_OR_CORNER ? parseSideOrCorner(args[0], bounds) : parsePercentageAngle(args[0], bounds) diff --git a/src/Renderer.js b/src/Renderer.js index ccc48f0b0..0cdfe7c61 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -30,7 +30,8 @@ import { calculateBackgroungPaintingArea, calculateBackgroundPosition, calculateBackgroundRepeatPath, - calculateBackgroundSize + calculateBackgroundSize, + calculateGradientBackgroundSize } from './parsing/background'; import {BORDER_STYLE} from './parsing/border'; @@ -202,12 +203,8 @@ export default class Renderer { container.style.background.backgroundImage.slice(0).reverse().forEach(backgroundImage => { if (backgroundImage.source.method === 'url' && backgroundImage.source.args.length) { this.renderBackgroundRepeat(container, backgroundImage); - } else { - const gradient = parseGradient(backgroundImage.source, container.bounds); - if (gradient) { - const bounds = container.bounds; - this.target.renderLinearGradient(bounds, gradient); - } + } else if (/gradient/i.test(backgroundImage.source.method)) { + this.renderBackgroundGradient(container, backgroundImage); } }); } @@ -245,6 +242,35 @@ export default class Renderer { } } + renderBackgroundGradient(container: NodeContainer, background: BackgroundImage) { + const backgroundPositioningArea = calculateBackgroungPositioningArea( + container.style.background.backgroundOrigin, + container.bounds, + container.style.padding, + container.style.border + ); + const backgroundImageSize = calculateGradientBackgroundSize( + background, + backgroundPositioningArea + ); + const position = calculateBackgroundPosition( + background.position, + backgroundImageSize, + backgroundPositioningArea + ); + const gradientBounds = new Bounds( + Math.round(backgroundPositioningArea.left + position.x), + Math.round(backgroundPositioningArea.top + position.y), + backgroundImageSize.width, + backgroundImageSize.height + ); + + const gradient = parseGradient(background.source, gradientBounds); + if (gradient) { + this.target.renderLinearGradient(gradientBounds, gradient); + } + } + renderBorder(border: Border, side: BorderSide, curvePoints: BoundCurves) { this.target.drawShape(parsePathForBorder(curvePoints, side), border.borderColor); } diff --git a/src/parsing/background.js b/src/parsing/background.js index bc12be225..32149758b 100644 --- a/src/parsing/background.js +++ b/src/parsing/background.js @@ -123,6 +123,19 @@ export const calculateBackgroundSize = ( return new Size(width, height); }; +export const calculateGradientBackgroundSize = ( + backgroundImage: BackgroundImage, + bounds: Bounds +): Size => { + const size = backgroundImage.size; + const width = size[0].value ? size[0].value.getAbsoluteValue(bounds.width) : bounds.width; + const height = size[1].value + ? size[1].value.getAbsoluteValue(bounds.height) + : size[0].value ? width : bounds.height; + + return new Size(width, height); +}; + const AUTO_SIZE = new BackgroundSize(AUTO); export const calculateBackgroungPaintingArea = ( diff --git a/tests/reftests/background/linear-gradient2.html b/tests/reftests/background/linear-gradient2.html new file mode 100644 index 000000000..badadc6b2 --- /dev/null +++ b/tests/reftests/background/linear-gradient2.html @@ -0,0 +1,42 @@ + + + + Background attribute tests + + + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + \ No newline at end of file From 8fd616aed23a8578675b3536aa42bb1303ee12a5 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 10 Dec 2017 16:43:34 +0800 Subject: [PATCH 129/377] Update wip website --- .travis.yml | 11 + CHANGELOG.md | 4 +- docs/about.md | 14 +- docs/configuration.md | 43 +- docs/faq.md | 42 + docs/features.md | 1 + docs/getting-started.md | 9 +- docs/proxy.md | 3 +- package-lock.json | 7326 +++++++++++++++++ package.json | 2 +- www/gatsby-config.js | 6 + www/package-lock.json | 8 + www/package.json | 1 + www/src/components/carbon.css | 30 + www/src/components/carbon.js | 27 + www/src/components/navigation.js | 18 +- www/src/images/ic_arrow_back_black_24px.svg | 4 + .../images/ic_arrow_forward_black_24px.svg | 4 + www/src/images/logo.svg | 14 + www/src/layouts/index.css | 671 +- www/src/layouts/index.js | 26 +- www/src/templates/docs.js | 126 +- www/src/utils/typography.js | 16 +- 23 files changed, 7747 insertions(+), 659 deletions(-) create mode 100644 docs/faq.md create mode 100644 package-lock.json create mode 100644 www/src/components/carbon.css create mode 100644 www/src/components/carbon.js create mode 100644 www/src/images/ic_arrow_back_black_24px.svg create mode 100644 www/src/images/ic_arrow_forward_black_24px.svg create mode 100644 www/src/images/logo.svg diff --git a/.travis.yml b/.travis.yml index e5a40d251..517b50038 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,7 @@ notifications: on_start: false script: - npm run build + - cd www && npm install && npm run build && cd .. - npm test deploy: - provider: npm @@ -44,3 +45,13 @@ deploy: tags: true branch: master repo: niklasvh/html2canvas + - provider: pages + skip_cleanup: true + local_dir: www/public + target_branch: gh-pages-test + fqdn: html2canvas.hertzen.com + github_token: + secure: "PowO/Jat660k3gHcjgI6DlJz15RM7pLUu11UPsLCtYJ8ZwodppE6Keg0DfVkSFSIZttZor+UssDwP/WOEqfZNLqmXbcj3Gec4xolohet/GOe0KJKKuF/HgggbcxumopxMX6sMVePlMBpkLpHh7tgEAEHBWTlzC1c1a7Xa48fZ7k=" + on: + branch: master + repo: niklasvh/html2canvas diff --git a/CHANGELOG.md b/CHANGELOG.md index 5452be9f1..3c405ef3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ### Changelog ### -#### v1.0.0-alpha3 - TBD #### +#### v1.0.0-alpha4 - TBD #### + +#### v1.0.0-alpha3 - 9.12.2017 #### * Disable `foreignObjectRendering` by default (#1295) * Fix background-size when using background-origin and background-size: cover/contain (#1299) * Added support for background-origin: content-box (#1299) diff --git a/docs/about.md b/docs/about.md index e6794ebc9..4cbcf2c55 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1,33 +1,37 @@ --- title: "About" +description: "Learn about html2canvas, how it works and some of its limitations" +nextUrl: "/getting-started" +nextTitle: "Getting Started" --- Before you get started with the script, there are a few things that are good to know regarding the script and some of its limitations. -# Introduction +## Introduction The script allows you to take "screenshots" of webpages or parts of it, directly on the users browser. The screenshot is based on the DOM and as such may not be 100% accurate to the real representation as it does not make an actual screenshot, but builds the screenshot based on the information available on the page. -# How it works +## How it works The script traverses through the DOM of the page it is loaded on. It gathers information on all the elements there, which it then uses to build a representation of the page. In other words, it does not actually take a screenshot of the page, but builds a representation of it based on the properties it reads from the DOM. + As a result, it is only able to render correctly properties that it understands, meaning there are many CSS properties which do not work. For a full list of supported CSS properties, check out the -[support features](/features/) page. +[supported features](/features/) page. -# Limitations +## Limitations All the images that the script uses need to reside under the [same origin](http://en.wikipedia.org/wiki/Same_origin_policy) for it to be able to read them without the assistance of a [proxy](/proxy/). Similarly, if you have other `canvas` elements on the page, which have been tainted with cross-origin content, they will become dirty and no longer readable by html2canvas. The script doesn't render plugin content such as Flash or Java applets. -# Browser compatibility +## Browser compatibility The library should work fine on the following browsers (with `Promise` polyfill): - Firefox 3.5+ diff --git a/docs/configuration.md b/docs/configuration.md index ec9ce81aa..be39b7598 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,25 +1,30 @@ --- title: "Configuration" +description: "Explore the different configuration options available for html2canvas" +previousUrl: "/getting-started" +previousTitle: "Getting Started" +nextUrl: "/features" +nextTitle: "Features" --- These are all of the available configuration options. -| Name | Type | Default | Description | -| ------------- |:-------------:| :------: | ----------- | -| async | Boolean | `true` | Whether to parse and render the element asynchronously -| allowTaint | Boolean | `false` | Whether to allow cross-origin images to taint the canvas -| backgroundColor | String | `#ffffff` | Canvas background color, if none is specified in DOM. Set undefined for transparent -| canvas | `HTMLCanvasElement` | `null` | Existing `canvas` element to use as a base for drawing on -| foreignObjectRendering | Boolean | `false` | Whether to use ForeignObject rendering if the browser supports it -| imageTimeout | Number | `15000` | Timeout for loading an image (in milliseconds). Set to `0` to disable timeout. -| proxy | String | `null` | Url to the [proxy](/proxy/) which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded. -| removeContainer | Boolean | `true` | Whether to cleanup the cloned DOM elements html2canvas creates temporarily -| scale | Number | `window.devicePixelRatio` | The scale to use for rendering. Defaults to the browsers device pixel ratio. -| width | Number | `Element` width | The width of the `canvas` -| height | Number | `Element` height | The height of the `canvas` -| x | Number | `Element` x-offset | Crop canvas x-coordinate -| y | Number | `Element` y-offset| Crop canvas y-coordinate -| scrollX | Number | `Element` scrollX | The x-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) -| scrollY | Number | `Element` scrollY | The y-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) -| windowWidth | Number | `Window.innerWidth` | Window width to use when rendering `Element`, which may affect things like Media queries -| windowHeight | Number | `Window.innerHeight` | Window height to use when rendering `Element`, which may affect things like Media queries +| Name | Default | Description | +| ------------- | :------: | ----------- | +| async | `true` | Whether to parse and render the element asynchronously +| allowTaint | `false` | Whether to allow cross-origin images to taint the canvas +| backgroundColor | `#ffffff` | Canvas background color, if none is specified in DOM. Set undefined for transparent +| canvas | `null` | Existing `canvas` element to use as a base for drawing on +| foreignObjectRendering | `false` | Whether to use ForeignObject rendering if the browser supports it +| imageTimeout | `15000` | Timeout for loading an image (in milliseconds). Set to `0` to disable timeout. +| proxy | `null` | Url to the [proxy](/proxy/) which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded. +| removeContainer | `true` | Whether to cleanup the cloned DOM elements html2canvas creates temporarily +| scale | `window.devicePixelRatio` | The scale to use for rendering. Defaults to the browsers device pixel ratio. +| width | `Element` width | The width of the `canvas` +| height | `Element` height | The height of the `canvas` +| x | `Element` x-offset | Crop canvas x-coordinate +| y | `Element` y-offset| Crop canvas y-coordinate +| scrollX | `Element` scrollX | The x-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) +| scrollY | `Element` scrollY | The y-scroll position to used when rendering element, (for example if the Element uses `position: fixed`) +| windowWidth | `Window.innerWidth` | Window width to use when rendering `Element`, which may affect things like Media queries +| windowHeight | `Window.innerHeight` | Window height to use when rendering `Element`, which may affect things like Media queries diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 000000000..3f6336a74 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,42 @@ +--- +title: "FAQ" +description: "Explore Frequently Asked Questions regarding html2canvas" +--- + +## Why aren't my images rendered? +html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of +the [origin](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) of the current page [taint the +canvas](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas) that they are drawn upon. If the canvas gets tainted, it cannot be read anymore. As such, html2canvas implements +methods to check whether an image would taint the canvas before applying it. If you have set the `allowTaint` +[option](/configuration) to `false`, it will not draw the image. + +If you wish to load images that reside outside of your pages origin, you can use a [proxy](/proxy) to load the images. + +## Why is the produced canvas empty or cuts off half way through? +Make sure that `canvas` element doesn't hit [browser limitations](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element) for the `canvas` size. +The limitations vary by browser, operating system and system hardware. + +### Chrome +> Maximum height/width: 32,767 pixels +> Maximum area: 268,435,456 pixels (e.g., 16,384 x 16,384) + +### Firefox +> Maximum height/width: 32,767 pixels +> Maximum area: 472,907,776 pixels (e.g., 22,528 x 20,992) + +### Internet Explorer +> Maximum height/width: 8,192 pixels +> Maximum area: N/A + +### iOS +> The maximum size for a canvas element is 3 megapixels for devices with less than 256 MB RAM and 5 megapixels for devices with greater or equal than 256 MB RAM + +## Why doesn't CSS property X render correctly or only partially? +As each CSS property needs to be manually coded to render correctly, html2canvas will *never* have full CSS support. +The library tries to support the most [commonly used CSS properties](/features) to the extent that it can. If some CSS property +is missing or incomplete and you feel that it should be part of the library, create test cases for it and a new issue for it. + +## How do I get html2canvas to work in a browser extension? +You shouldn't use html2canvas in a browser extension. Most browsers have native support for capturing screenshots from +tabs within extensions. Relevant information for [Chrome](https://developer.chrome.com/extensions/tabs#method-captureVisibleTab) and +[Firefox](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D#drawWindow()). diff --git a/docs/features.md b/docs/features.md index 794aee2c7..5ed0ffadd 100644 --- a/docs/features.md +++ b/docs/features.md @@ -1,5 +1,6 @@ --- title: "Features" +description: "Discover the different features supported by html2canvas" --- Below is a list of all the supported CSS properties and values. diff --git a/docs/getting-started.md b/docs/getting-started.md index 3fd5300b6..a2bacc384 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,8 +1,13 @@ --- title: "Getting Started" +description: "Learn how to start using html2canvas" +previousUrl: "/about" +previousTitle: "About" +nextUrl: "/configuration" +nextTitle: "Configuration" --- -# Installing +## Installing You can install `html2canvas` through npm or [download a built release](https://github.com/niklasvh/html2canvas/releases). @@ -14,7 +19,7 @@ You can install `html2canvas` through npm or [download a built release](https:// import html2canvas from 'html2canvas'; ``` -# Usage +## Usage To render an `element` with html2canvas with some (optional) [options](/configuration/), simply call `html2canvas(element, options);` diff --git a/docs/proxy.md b/docs/proxy.md index 455becb5f..1de3d3c70 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -1,11 +1,12 @@ --- title: "Proxy" +description: "Browse different proxies available for supporting CORS content" --- html2canvas does not get around content policy restrictions set by your browser. Drawing images that reside outside of the origin of the current page taint the canvas that they are drawn upon. If the canvas gets tainted, it cannot be read anymore. If you wish to load images that reside outside of your pages origin, you can use a proxy to load the images. -# Available proxies +## Available proxies - [node.js](https://github.com/niklasvh/html2canvas-proxy-nodejs) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..231ba2a0e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7326 @@ +{ + "name": "html2canvas", + "version": "1.0.0-alpha.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/core-js": { + "version": "0.9.43", + "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.43.tgz", + "integrity": "sha512-Y11dktBJ5YwKXX8DfHSb9V6shXKSHN5P2URPZLHTRjX3OsO/u8u1kZnSJvsuSH74aTg8f5ZKcpEeCdIJOcBkHg==", + "dev": true + }, + "@types/mkdirp": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", + "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", + "dev": true + }, + "@types/node": { + "version": "6.0.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.66.tgz", + "integrity": "sha1-VoC3SmE10z1MAER+fD3GkaRgFiU=", + "dev": true + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.16", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "adm-zip": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.5.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.4", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + }, + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + } + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.4", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz", + "integrity": "sha1-Nfhvg8WeBCHQmc2akdgnj7V4wA0=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sdk": { + "version": "2.104.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.104.0.tgz", + "integrity": "sha1-M14FUzgMCujdQ9Ebdtc9+5JvYzM=", + "dev": true, + "requires": { + "buffer": "4.9.1", + "crypto-browserify": "1.0.9", + "events": "1.1.1", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.0.1", + "xml2js": "0.4.17", + "xmlbuilder": "4.2.1" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-cli": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", + "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "commander": "2.11.0", + "convert-source-map": "1.5.0", + "fs-readdir-recursive": "1.0.0", + "glob": "7.1.2", + "lodash": "4.17.4", + "output-file-sync": "1.1.2", + "path-is-absolute": "1.0.1", + "slash": "1.0.0", + "source-map": "0.5.7", + "v8flags": "2.1.1" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-loader": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.1.tgz", + "integrity": "sha1-uHE0yLEuPkwqlOBUYIW8aAorhIg=", + "dev": true, + "requires": { + "find-cache-dir": "1.0.0", + "loader-utils": "1.1.0", + "mkdirp": "0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-dev-expression": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz", + "integrity": "sha1-1Ke+7++7UOPyc0mQqCokhs+eue4=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.16" + }, + "dependencies": { + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "dev": true + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-fingerprint": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz", + "integrity": "sha1-jfPNyiW/fVs1QtYVRdcwBT/OYEo=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.2", + "inherits": "2.0.3" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.0.6", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.2" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "cacache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", + "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.1", + "ssri": "5.0.0", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + } + } + }, + "callback-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", + "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", + "integrity": "sha1-ZuISeebzxkFf+CMYeCJ5AOIXGzk=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "2.0.2", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-launcher": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.4.0.tgz", + "integrity": "sha512-Uq34nQ2peVRwyjsyoLs01mL9aEQDbc5RCZWNyYjGPt5ZFPL2B4OazSc98hO6HZOvMUILLL4MyAEVMzA5OvwWug==", + "dev": true, + "requires": { + "@types/core-js": "0.9.43", + "@types/mkdirp": "0.3.29", + "@types/node": "6.0.66", + "lighthouse-logger": "1.0.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "chrome-remote-interface": { + "version": "0.24.4", + "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.24.4.tgz", + "integrity": "sha512-vSBy/FI93B6sTfaRaSl4Dmx6mGvSwT1rpZevPFvQmVSiuNpS/9NGE/3NPl3MkVSXM6JDx9yWKZNkOJ9iMd/hBw==", + "dev": true, + "requires": { + "commander": "2.1.0", + "ws": "2.0.3" + }, + "dependencies": { + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + } + } + }, + "chromeless": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/chromeless/-/chromeless-1.2.0.tgz", + "integrity": "sha1-0ncOIE8+k/1Abda/n7fv2B+z3Bs=", + "dev": true, + "requires": { + "aws-sdk": "2.104.0", + "bluebird": "3.5.0", + "chrome-launcher": "0.4.0", + "chrome-remote-interface": "0.24.4", + "cuid": "1.3.8", + "form-data": "2.3.1", + "got": "7.1.0", + "mqtt": "2.12.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "commist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.0.0.tgz", + "integrity": "sha1-wMNSUBz29S6RJOPvicmAbiAi6+8=", + "dev": true, + "requires": { + "leven": "1.0.2", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compress-commons": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", + "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.3" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.3.tgz", + "integrity": "sha512-GLSZqgjVxPvGYVD/2vz//gS201MEXk4b7t3nHV6OVnTdDNWi/Gm7Rpxs/ybvljPWvULys/wrzIV3jB3YvEc3nQ==", + "dev": true, + "requires": { + "debug": "2.6.8", + "finalhandler": "1.0.4", + "parseurl": "1.3.1", + "utils-merge": "1.0.0" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + } + }, + "core-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", + "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", + "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=", + "dev": true + }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "vary": "1.1.1" + } + }, + "crc": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", + "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=", + "dev": true + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "3.4.4", + "readable-stream": "2.3.3" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + } + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "crypto-browserify": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", + "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=", + "dev": true + }, + "cuid": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz", + "integrity": "sha1-S4deCWm612T37AcGz0T1+wgx9rc=", + "dev": true, + "requires": { + "browser-fingerprint": "0.0.1", + "core-js": "1.2.7", + "node-fingerprint": "0.0.2" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.30" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-eql": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", + "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", + "dev": true, + "requires": { + "type-detect": "3.0.0" + }, + "dependencies": { + "type-detect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", + "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", + "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=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "1.0.1", + "ent": "2.2.0", + "extend": "3.0.1", + "void-elements": "2.0.1" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "edge-launcher": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/edge-launcher/-/edge-launcher-1.2.2.tgz", + "integrity": "sha1-60Cq+9Bnpup27/+rBke81VCbN7I=", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "2.1.16", + "negotiator": "0.6.1" + } + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + } + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.30", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", + "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.2.0.tgz", + "integrity": "sha1-orMYQRGxmOAunH88ymJaXgHFaz0=", + "dev": true, + "requires": { + "ajv": "5.2.2", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.5.0", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.4", + "imurmurhash": "0.1.4", + "inquirer": "3.2.2", + "is-resolvable": "1.0.0", + "js-yaml": "3.9.1", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "4.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "strip-json-comments": "2.0.1", + "table": "4.0.1", + "text-table": "0.2.0" + } + }, + "eslint-plugin-flowtype": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.35.0.tgz", + "integrity": "sha512-zjXGjOsHds8b84C0Ad3VViKh+sUA9PeXKHwPRlSLwwSX0v1iUJf/6IX7wxc+w2T2tnDH8PT6B/YgtcEuNI3ssA==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "eslint-plugin-prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.1.2.tgz", + "integrity": "sha1-S5D07n+Sv74ukmAX4cpA62KJZeo=", + "dev": true, + "requires": { + "fast-diff": "1.1.1", + "jest-docblock": "20.0.3" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", + "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "dev": true, + "requires": { + "acorn": "5.1.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz", + "integrity": "sha512-ni0r0lrm7AOzsh2qC5mi9sj8S0gmj5fLNjfFpxN05FB4tAVZEKotbkjOtLPqTCX/CXT7NsUr6juZb4IFJeNNdA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "0.2.3", + "array-unique": "0.2.1", + "braces": "0.1.5" + }, + "dependencies": { + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "0.1.1" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "0.1.1", + "repeat-string": "0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.4.tgz", + "integrity": "sha1-Ay4iU0ic+PzgJma+yj0R7XotrtE=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.8", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.4", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.5.0", + "range-parser": "1.2.0", + "send": "0.15.4", + "serve-static": "1.12.4", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + }, + "dependencies": { + "qs": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", + "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "dev": true, + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.5.1", + "tmp": "0.0.31" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", + "dev": true + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-diff": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", + "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "requires": { + "filename-reserved-regex": "1.0.0", + "strip-outer": "1.0.0", + "trim-repeated": "1.0.0" + } + }, + "filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A=", + "dev": true, + "requires": { + "filenamify": "1.2.1", + "humanize-url": "1.0.1" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz", + "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==", + "dev": true, + "requires": { + "debug": "2.6.8", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.0.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "flow-bin": { + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.56.0.tgz", + "integrity": "sha1-zkMJIgOjRLqb9jwMq+ldlRRfbK0=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.16" + } + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "1.0.0" + } + }, + "fs-readdir-recursive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", + "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "3.0.1", + "glob": "7.1.2", + "glob-parent": "3.1.0", + "is-negated-glob": "1.0.0", + "ordered-read-streams": "1.0.1", + "pumpify": "1.3.5", + "readable-stream": "2.3.3", + "remove-trailing-separator": "1.1.0", + "to-absolute-glob": "2.0.1", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.0", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.11.0", + "is-my-json-valid": "2.16.1", + "pinkie-promise": "2.0.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.0.tgz", + "integrity": "sha512-F1NtLDtW9NyUrS3faUcI1yVFHCTXyzPb1jfrZBQi5NHxFPlXxZnFLFGzfA2DsdmgCxv2MZ0+bfcgC4EZTmk4SQ==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.0.tgz", + "integrity": "sha512-R3OdOP9j6AH5hS1yXeu9wAS+iKSZQx/CC6aMdN6WiaqPlBoA2S+47MtoMsZgKr2m0eAJ+73WWGX0RaFFE5XWKA==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.0" + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "help-me": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-1.1.0.tgz", + "integrity": "sha1-jy1QjQYAtKRW2i8IZVbn5cBWo8Y=", + "dev": true, + "requires": { + "callback-stream": "1.1.0", + "glob-stream": "6.1.0", + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html2canvas-proxy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/html2canvas-proxy/-/html2canvas-proxy-1.0.0.tgz", + "integrity": "sha1-DF+vxjz1plQ5xklvhQs3Bios7UQ=", + "dev": true, + "requires": { + "cors": "2.8.4", + "request": "2.81.0" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.16" + } + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.16", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "http-proxy": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "1.2.0", + "requires-port": "1.0.0" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.8", + "extend": "3.0.1" + } + }, + "humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", + "dev": true, + "requires": { + "normalize-url": "1.9.1", + "strip-url-auth": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.4.tgz", + "integrity": "sha512-KjHyHxUgicfgFiTJaIA9DoeY3TIQz5thaKqm35re7RTVVB7zjF1fTMIDMXM4GUUBipR4FW8BvGnA115pZ/AxQQ==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.2.tgz", + "integrity": "sha512-bTKLzEHJVATimZO/YFdLrom0lRx1BHfRYskFHfIMVkGdp8+dIZaxuU+4yrsS1lcu6YWywVQVVsfvdwESzbeqHw==", + "dev": true, + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.1.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA=", + "dev": true + }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true, + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "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=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true, + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.0", + "is-object": "1.0.1" + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "dev": true + }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", + "dev": true + }, + "jquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", + "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jschardet": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", + "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", + "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "body-parser": "1.17.2", + "chokidar": "1.7.0", + "colors": "1.1.2", + "combine-lists": "1.0.1", + "connect": "3.6.3", + "core-js": "2.5.0", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "http-proxy": "1.16.2", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.3.4", + "minimatch": "3.0.4", + "optimist": "0.6.1", + "qjobs": "1.1.5", + "range-parser": "1.2.0", + "rimraf": "2.6.1", + "safe-buffer": "5.1.1", + "socket.io": "1.7.3", + "source-map": "0.5.7", + "tmp": "0.0.31", + "useragent": "2.2.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "1.0.1", + "which": "1.3.0" + } + }, + "karma-edge-launcher": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.1.tgz", + "integrity": "sha1-sE65a4z2AE66Cw/tKUtR2pNg4kQ=", + "dev": true, + "requires": { + "edge-launcher": "1.2.2" + } + }, + "karma-firefox-launcher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.1.tgz", + "integrity": "sha1-zlj0fCATqIFW1VpdYTN8CZz1u1E=", + "dev": true + }, + "karma-ie-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", + "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "karma-mocha": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", + "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "karma-sauce-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-1.1.0.tgz", + "integrity": "sha1-PQg89WWdZzarl7zuXYrNhq1SIhI=", + "dev": true, + "requires": { + "q": "1.5.0", + "sauce-connect-launcher": "0.17.0", + "saucelabs": "1.4.0", + "wd": "1.4.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lighthouse-logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.0.1.tgz", + "integrity": "sha1-8HPYP3rLyWcpvxAKEhyPAGmRrmE=", + "dev": true, + "requires": { + "debug": "2.6.8" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "semver": "4.3.6" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "lru-cache": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + }, + "make-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", + "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=", + "dev": true + }, + "mime-types": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "dev": true, + "requires": { + "mime-db": "1.29.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.1", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.2", + "pumpify": "1.3.5", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", + "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + } + }, + "mqtt": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.12.0.tgz", + "integrity": "sha512-Ti7NxJkF7YScJC0XGi5OAQqJElx/QL2/g/5razfyEa3pxlWj+PWwvkXQWd5trcglW6D9V8IwPLtfn6SARxcCww==", + "dev": true, + "requires": { + "commist": "1.0.0", + "concat-stream": "1.6.0", + "end-of-stream": "1.4.0", + "help-me": "1.1.0", + "inherits": "2.0.3", + "minimist": "1.2.0", + "mqtt-packet": "5.4.0", + "pump": "1.0.2", + "readable-stream": "2.3.3", + "reinterval": "1.1.0", + "split2": "2.1.1", + "websocket-stream": "5.0.1", + "xtend": "4.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "mqtt-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-5.4.0.tgz", + "integrity": "sha512-ziN7uVysLdn7fYbOhEaKOhcZC3yIRTTakY4TFd2w+UvZIx9dPr8NCqbBYoC4WYDlzWHTn5EqR5x20pC+K24Ymg==", + "dev": true, + "requires": { + "bl": "1.2.1", + "inherits": "2.0.3", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "node-fingerprint": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/node-fingerprint/-/node-fingerprint-0.0.2.tgz", + "integrity": "sha1-Mcur63GmeufdWn3AQuUcPHWGhQE=", + "dev": true + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.13", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "4.3.6", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "prepend-http": "1.0.4", + "query-string": "4.3.4", + "sort-keys": "1.1.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "p-timeout": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.0.tgz", + "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.6", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.2", + "pbkdf2": "3.0.13" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "1.0.2" + } + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.13.tgz", + "integrity": "sha512-+dCHxDH+djNtjgWmvVC/my3SYBAKpKNqKSjLkp+GtWWYe4XPE+e/PSD2aCanlEZZnqPk2uekTKNC/ccbwd2X2Q==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "dev": true + }, + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.5.3.tgz", + "integrity": "sha1-WdrcaDNF7GuI+IuU7Urn4do5S/4=", + "dev": true + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz", + "integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI=", + "dev": true + }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "dev": true, + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.4.0" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "pump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "pump": "1.0.2" + } + }, + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + }, + "q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, + "qjobs": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", + "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.7" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-in-file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.0.0.tgz", + "integrity": "sha512-/0oRts4OCzjA3AkUB/jy4RiH8AeWVkvjh75PIRaNFRl2I+OLl4GCxH07TYhZG7gjffTy44kRJftuiIRCxBeQQw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "yargs": "10.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "yargs": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.0.0" + } + }, + "yargs-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.16", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3", + "uuid": "3.0.1" + }, + "dependencies": { + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.16" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sauce-connect-launcher": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-0.17.0.tgz", + "integrity": "sha1-kI2TEeyvF92bRkehQ1/UogcugM4=", + "dev": true, + "requires": { + "adm-zip": "0.4.7", + "async": "1.4.0", + "https-proxy-agent": "1.0.0", + "lodash": "3.10.1", + "rimraf": "2.4.3" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "rimraf": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", + "integrity": "sha1-5bUclDekxYKtuVXp8oz42UXicq8=", + "dev": true, + "requires": { + "glob": "5.0.15" + } + } + } + }, + "saucelabs": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.4.0.tgz", + "integrity": "sha1-uTSpr52ih0s/QKrh/N5QpEZvXzg=", + "dev": true, + "requires": { + "https-proxy-agent": "1.0.0" + } + }, + "sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.2.2" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "send": { + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz", + "integrity": "sha1-mF+qPihLAnPHkzZKNcZze9k5Bbk=", + "dev": true, + "requires": { + "debug": "2.6.8", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.2", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serve-index": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", + "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.8", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.16", + "parseurl": "1.3.1" + } + }, + "serve-static": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.4.tgz", + "integrity": "sha1-m2qpjutyU8Tu3Ewfb9vKYJkBqWE=", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.4" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", + "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split2": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.1.1.tgz", + "integrity": "sha1-eh9VHhdqkOzTNF9yRqDP4XXvT9A=", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "ssri": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", + "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "tar-stream": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "xtend": "4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.1.tgz", + "integrity": "sha1-cMN1gFueMQXome6NvdapqhCPQHs=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-absolute": "0.2.6", + "is-negated-glob": "1.0.0" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "requires": { + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.16" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-es": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.1.tgz", + "integrity": "sha512-c+Fy4VuGvPmT7mj7vEPjRR/iNFuXuOAkufhCtCvTGX0Hr4gCM9YwCnLgHkxr1ngqSODQaDObU3g8SF8uE/tY1w==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-k07cmJTj+8vZMSc3BaQ9uW7qVl2MqDts4ti4KaNACXEcXSw2vQM2S8olSk/CODxvcSFGvUHzNSqA8JQlhgUJPw==", + "dev": true, + "requires": { + "cacache": "10.0.1", + "find-cache-dir": "1.0.0", + "schema-utils": "0.3.0", + "source-map": "0.6.1", + "uglify-es": "3.2.1", + "webpack-sources": "1.0.1", + "worker-farm": "1.5.2" + }, + "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 + } + } + }, + "ultron": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", + "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", + "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=", + "dev": true + }, + "underscore.string": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", + "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "useragent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, + "requires": { + "lru-cache": "2.2.4", + "tmp": "0.0.31" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vargs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz", + "integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=", + "dev": true + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + }, + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + } + } + }, + "wd": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/wd/-/wd-1.4.0.tgz", + "integrity": "sha512-VHii2f+jck5fgEcTQYCR3z99B99tPz0HlLCGsNowI2qsI21xMnKwd9O3SnJQnEBq0Erx9FPFfiZno+OYtXDXyw==", + "dev": true, + "requires": { + "archiver": "1.3.0", + "async": "2.0.1", + "lodash": "4.16.2", + "mkdirp": "0.5.1", + "q": "1.4.1", + "request": "2.79.0", + "underscore.string": "3.3.4", + "vargs": "0.1.0" + }, + "dependencies": { + "async": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", + "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=", + "dev": true, + "requires": { + "lodash": "4.16.2" + } + }, + "lodash": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz", + "integrity": "sha1-PmJtuCcEimmSgaihJSJjJs/A5lI=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + } + } + }, + "webpack": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.4.1.tgz", + "integrity": "sha1-TD9PP7MYFVpNsMtqNv8FxWl0GPQ=", + "dev": true, + "requires": { + "acorn": "5.1.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.2.2", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.3", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.7", + "supports-color": "4.2.1", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" + }, + "dependencies": { + "ajv-keywords": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "dev": true + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + } + } + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.7" + } + }, + "websocket-stream": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.0.1.tgz", + "integrity": "sha512-N3X0rs/ucnccDdyn5GkwD7HVjtvcE3scSmYzdndzma/3ovQpjUxDRP71nTliph9EpXYt9fXbdCVL+e6JuguC+A==", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "safe-buffer": "5.1.1", + "ws": "3.1.0", + "xtend": "4.0.1" + }, + "dependencies": { + "ws": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.1.0.tgz", + "integrity": "sha512-TU4/qKFlyQFqNITNWiqPCUY9GqlAhEotlzfcZcve6VT1YEngQl1dDMqwQQS3eMYruJ5r/UD3lcsWib6iVMDGDw==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1", + "ultron": "1.1.0" + } + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "ws": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.0.3.tgz", + "integrity": "sha1-Uy/UmcP319cg5UPx+AcQbPxX2cs=", + "dev": true, + "requires": { + "ultron": "1.1.0" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml2js": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", + "dev": true, + "requires": { + "sax": "1.2.1", + "xmlbuilder": "4.2.1" + } + }, + "xmlbuilder": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "compress-commons": "1.2.0", + "lodash": "4.17.4", + "readable-stream": "2.3.3" + } + } + } +} diff --git a/package.json b/package.json index 9b499b6e2..d6a464eef 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "html2canvas", "description": "Screenshots with JavaScript", "main": "dist/npm/index.js", - "version": "1.0.0-alpha.3", + "version": "1.0.0-alpha.4", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", diff --git a/www/gatsby-config.js b/www/gatsby-config.js index 8918ee556..12196ca94 100644 --- a/www/gatsby-config.js +++ b/www/gatsby-config.js @@ -37,6 +37,12 @@ module.exports = { } ] } + }, + { + resolve: `gatsby-plugin-google-analytics`, + options: { + trackingId: 'UA-188600-10' + } } ] }; diff --git a/www/package-lock.json b/www/package-lock.json index 893958806..e53161d40 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -4130,6 +4130,14 @@ "glamor": "2.20.40" } }, + "gatsby-plugin-google-analytics": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-1.0.14.tgz", + "integrity": "sha512-iwibBcUW4PDFvu0He387xOsRcB3Fclwnf3zPecTCQ2pwG1xYVFgPIf+cVhKkWsw68KpiMzK3JoSmK1P0kHq5eg==", + "requires": { + "babel-runtime": "6.26.0" + } + }, "gatsby-plugin-react-helmet": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-1.0.8.tgz", diff --git a/www/package.json b/www/package.json index 7bdc9c1e2..d3d1ff69d 100644 --- a/www/package.json +++ b/www/package.json @@ -9,6 +9,7 @@ "gatsby-link": "^1.6.30", "gatsby-plugin-catch-links": "^1.0.13", "gatsby-plugin-glamor": "^1.6.9", + "gatsby-plugin-google-analytics": "^1.0.14", "gatsby-plugin-react-helmet": "^1.0.8", "gatsby-plugin-typography": "^1.7.10", "gatsby-remark-prismjs": "^1.2.10", diff --git a/www/src/components/carbon.css b/www/src/components/carbon.css new file mode 100644 index 000000000..4064887c9 --- /dev/null +++ b/www/src/components/carbon.css @@ -0,0 +1,30 @@ + +#carbonads { + display: block; + overflow: hidden; + text-align: center; + font-size: 14px; + line-height: 1.5; +} +#carbonads span { + display: block; + overflow: hidden; +} +.carbon-img { + display: block; +} +.carbon-text { + display: block; + margin-bottom: .5em; +} +.carbon-poweredby { + display: block; + color: rgba(255, 255, 255, 0.6); + font-size: 9px; +} + +#carbonads a { + color: #fff; +} + + diff --git a/www/src/components/carbon.js b/www/src/components/carbon.js new file mode 100644 index 000000000..1b8bbd625 --- /dev/null +++ b/www/src/components/carbon.js @@ -0,0 +1,27 @@ +import React, {Component} from 'react'; +import './carbon.css'; + +export default class Carbon extends Component { + componentDidMount() { + if (this.container) { + const script = document.createElement('script'); + + script.src = + '//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=html2canvashertzencom'; + script.async = true; + script.id = '_carbonads_js'; + this.container.appendChild(script); + } + } + + render() { + return ( +
      { + this.container = container; + }} + /> + ); + } +} diff --git a/www/src/components/navigation.js b/www/src/components/navigation.js index d96b39606..12e2a49a1 100644 --- a/www/src/components/navigation.js +++ b/www/src/components/navigation.js @@ -1,11 +1,14 @@ import React from 'react'; import Link from 'gatsby-link'; +import logo from '../images/logo.svg'; const lineLinkStyle = { lineHeight: '44px', height: '44px', padding: '0 30px', display: 'block', + color: 'rgba(0,0,0,0.87)', + fontWeight: '500', '&:hover': { backgroundColor: 'rgba(0,0,0,0.05)' }, @@ -18,6 +21,7 @@ const navStyle = { position: 'fixed', top: 0, left: 0, + fontSize: '13px', backgroundColor: '#fff', boxShadow: '0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2)' @@ -33,7 +37,10 @@ const links = [ ]; export default () => -
      +
      +
      + +
        > {links.map(({href, text}, i) =>
      • - + {text}
      • diff --git a/www/src/images/ic_arrow_back_black_24px.svg b/www/src/images/ic_arrow_back_black_24px.svg new file mode 100644 index 000000000..95c4fcc7c --- /dev/null +++ b/www/src/images/ic_arrow_back_black_24px.svg @@ -0,0 +1,4 @@ + + + + diff --git a/www/src/images/ic_arrow_forward_black_24px.svg b/www/src/images/ic_arrow_forward_black_24px.svg new file mode 100644 index 000000000..78a60e195 --- /dev/null +++ b/www/src/images/ic_arrow_forward_black_24px.svg @@ -0,0 +1,4 @@ + + + + diff --git a/www/src/images/logo.svg b/www/src/images/logo.svg new file mode 100644 index 000000000..4c8ac2d16 --- /dev/null +++ b/www/src/images/logo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/www/src/layouts/index.css b/www/src/layouts/index.css index e485487be..1f27d5fe7 100644 --- a/www/src/layouts/index.css +++ b/www/src/layouts/index.css @@ -1,624 +1,67 @@ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; -} -audio:not([controls]) { - display: none; - height: 0; -} -progress { - vertical-align: baseline; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} -a:active, -a:hover { - outline-width: 0; -} -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; -} -b, -strong { - font-weight: inherit; - font-weight: bolder; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: .67em 0; -} -mark { - background-color: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sub { - bottom: -.25em; -} -sup { - top: -.5em; -} -img { - border-style: none; -} -svg:not(:root) { - overflow: hidden; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} -button, -input, -optgroup, -select, -textarea { - font: inherit; - margin: 0; -} -optgroup { - font-weight: 700; -} -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 { - border-style: none; - padding: 0; -} -[type=button]:-moz-focusring, -[type=reset]:-moz-focusring, -[type=submit]:-moz-focusring, -button:-moz-focusring { - outline: 1px dotted ButtonText; -} -fieldset { - border: 1px solid silver; - margin: 0 2px; - padding: .35em .625em .75em; -} -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; -} -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] { - -webkit-appearance: textfield; - outline-offset: -2px; -} -[type=search]::-webkit-search-cancel-button, -[type=search]::-webkit-search-decoration { - -webkit-appearance: none; -} -::-webkit-input-placeholder { - color: inherit; - opacity: .54; -} -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} -html { - font: 112.5%/1.45em georgia, serif; - box-sizing: border-box; - overflow-y: scroll; -} -* { - box-sizing: inherit; -} -*:before { - box-sizing: inherit; -} -*:after { - box-sizing: inherit; -} -body { - color: hsla(0, 0%, 0%, 0.8); - font-family: georgia, serif; - font-weight: normal; - word-wrap: break-word; - font-kerning: normal; - -moz-font-feature-settings: "kern", "liga", "clig", "calt"; - -ms-font-feature-settings: "kern", "liga", "clig", "calt"; - -webkit-font-feature-settings: "kern", "liga", "clig", "calt"; - font-feature-settings: "kern", "liga", "clig", "calt"; -} -img { - max-width: 100%; - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; +p { + color: rgba(0,0,0,0.71); + padding: 0; + -webkit-font-smoothing: antialiased; } + h1 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 2.25rem; - line-height: 1.1; -} -h2 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 1.62671rem; - line-height: 1.1; -} -h3 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 1.38316rem; - line-height: 1.1; + font-weight: 300; + font-size: 4.2rem; + padding: 0; } + h4 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 1rem; - line-height: 1.1; + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 .912rem 0; } -h5 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 0.85028rem; - line-height: 1.1; -} -h6 { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - color: inherit; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - font-weight: bold; - text-rendering: optimizeLegibility; - font-size: 0.78405rem; - line-height: 1.1; -} -hgroup { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -ul { - margin-left: 1.45rem; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - list-style-position: outside; - list-style-image: none; -} -ol { - margin-left: 1.45rem; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - list-style-position: outside; - list-style-image: none; -} -dl { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -dd { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -p { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -figure { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -pre { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - font-size: 0.85rem; - line-height: 1.42; - background: hsla(0, 0%, 0%, 0.04); - border-radius: 3px; - overflow: auto; - word-wrap: normal; - padding: 1.45rem; + +a { + color: #7cb342; + text-decoration: none; } + table { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; - font-size: 1rem; - line-height: 1.45rem; - border-collapse: collapse; - width: 100%; -} -fieldset { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -blockquote { - margin-left: 1.45rem; - margin-right: 1.45rem; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -form { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -noscript { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -iframe { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -hr { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: calc(1.45rem - 1px); - background: hsla(0, 0%, 0%, 0.2); - border: none; - height: 1px; -} -address { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding-bottom: 0; - padding-left: 0; - padding-right: 0; - padding-top: 0; - margin-bottom: 1.45rem; -} -b { - font-weight: bold; -} -strong { - font-weight: bold; -} -dt { - font-weight: bold; + border: 1px solid #ddd; } + th { - font-weight: bold; -} -li { - margin-bottom: calc(1.45rem / 2); -} -ol li { - padding-left: 0; -} -ul li { - padding-left: 0; -} -li > ol { - margin-left: 1.45rem; - margin-bottom: calc(1.45rem / 2); - margin-top: calc(1.45rem / 2); -} -li > ul { - margin-left: 1.45rem; - margin-bottom: calc(1.45rem / 2); - margin-top: calc(1.45rem / 2); -} -blockquote *:last-child { - margin-bottom: 0; -} -li *:last-child { - margin-bottom: 0; -} -p *:last-child { - margin-bottom: 0; -} -li > p { - margin-bottom: calc(1.45rem / 2); -} -code { - font-size: 0.85rem; - line-height: 1.45rem; -} -kbd { - font-size: 0.85rem; - line-height: 1.45rem; -} -samp { - font-size: 0.85rem; - line-height: 1.45rem; -} -abbr { - border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); - cursor: help; -} -acronym { - border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); - cursor: help; -} -abbr[title] { - border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5); - cursor: help; - text-decoration: none; -} -thead { - text-align: left; -} -td, -th { - text-align: left; - border-bottom: 1px solid hsla(0, 0%, 0%, 0.12); - font-feature-settings: "tnum"; - -moz-font-feature-settings: "tnum"; - -ms-font-feature-settings: "tnum"; - -webkit-font-feature-settings: "tnum"; - padding-left: 0.96667rem; - padding-right: 0.96667rem; - padding-top: 0.725rem; - padding-bottom: calc(0.725rem - 1px); -} -th:first-child, -td:first-child { - padding-left: 0; -} -th:last-child, -td:last-child { - padding-right: 0; -} -tt, -code { - background-color: hsla(0, 0%, 0%, 0.04); - border-radius: 3px; - font-family: "SFMono-Regular", Consolas, "Roboto Mono", "Droid Sans Mono", - "Liberation Mono", Menlo, Courier, monospace; - padding: 0; - padding-top: 0.2em; - padding-bottom: 0.2em; -} -pre code { - background: none; - line-height: 1.42; -} -code:before, -code:after, -tt:before, -tt:after { - letter-spacing: -0.2em; - content: " "; -} -pre code:before, -pre code:after, -pre tt:before, -pre tt:after { - content: ""; -} -@media only screen and (max-width: 480px) { - html { - font-size: 100%; - } + padding: 8px; + border: 1px solid #ddd; +} + +:not(pre) > code { + padding: .1em .25em; + border: solid 1px rgba(51,51,51,0.12); + background: #f5f2f0; + border-radius: .3em; + color: black; + font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.4; + +} + +blockquote { + white-space: pre-wrap; + padding: 0 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-radius: 3px; + border-left-color: #558b2f; + +} + +blockquote p { + padding: 0; + +} + +* { + box-sizing: border-box; } diff --git a/www/src/layouts/index.js b/www/src/layouts/index.js index d2dee3e38..37b5a8e18 100644 --- a/www/src/layouts/index.js +++ b/www/src/layouts/index.js @@ -7,15 +7,27 @@ import './index.css'; const TemplateWrapper = ({children}) =>
        - + {children()} +
        ; TemplateWrapper.propTypes = { diff --git a/www/src/templates/docs.js b/www/src/templates/docs.js index a80c9602c..d1d35b4fd 100644 --- a/www/src/templates/docs.js +++ b/www/src/templates/docs.js @@ -1,21 +1,41 @@ import React from 'react'; +import Link from 'gatsby-link'; +import back from '../images/ic_arrow_back_black_24px.svg'; +import next from '../images/ic_arrow_forward_black_24px.svg'; +import Carbon from '../components/carbon'; +import Helmet from 'react-helmet'; export default ({data}) => { const post = data.markdownRemark; + return (
        +
        - {' '}
        -

        - {post.frontmatter.title} -

        +
        +
        +
        +

        + {post.frontmatter.title} +

        +

        + {post.frontmatter.description} +

        +
        + +
        { dangerouslySetInnerHTML={{__html: post.html}} />
        + {(post.frontmatter.previousUrl && post.frontmatter.previousTitle) || + (post.frontmatter.nextUrl && post.frontmatter.nextTitle) + ?
        +
        + {post.frontmatter.previousUrl && post.frontmatter.previousTitle + ? +
        + +
        +
        + + Previous + +
        + {post.frontmatter.previousTitle} +
        +
        + + : null} + {post.frontmatter.nextUrl && post.frontmatter.nextTitle + ? +
        + + Next + +
        + {post.frontmatter.nextTitle} +
        +
        + +
        + +
        + + : null} +
        +
        + : null}
        ); }; @@ -41,6 +150,11 @@ export const query = graphql` html frontmatter { title + description + previousUrl + previousTitle + nextUrl + nextTitle } } } diff --git a/www/src/utils/typography.js b/www/src/utils/typography.js index 3428a5b8d..a824465e7 100644 --- a/www/src/utils/typography.js +++ b/www/src/utils/typography.js @@ -1,6 +1,20 @@ import Typography from 'typography'; import githubTheme from 'typography-theme-github'; -const typography = new Typography(githubTheme); +const theme = { + googleFonts: [ + { + name: 'Roboto', + styles: ['100', '300', '400', '500', '700'] + } + ], + scale: 4.2, + baseFontSize: '14.5px', + baseLineHeight: 1.5, + headerFontFamily: ['Roboto', 'sans-serif'], + bodyFontFamily: ['Roboto', 'sans-serif'] +}; + +const typography = new Typography(theme); export default typography; From 2237e8e230da2a4bf807484529c5d46223913f8c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 10 Dec 2017 22:28:34 +0800 Subject: [PATCH 130/377] Update wip website --- docs/{about.md => documentation.md} | 0 docs/features.md | 2 + docs/getting-started.md | 2 +- www/gatsby-config.js | 1 + www/package-lock.json | 230 +++++++++++++++++++++++++++ www/package.json | 6 +- www/src/components/footer.js | 20 +++ www/src/components/navigation.js | 8 +- www/src/images/logo_icon.svg | 13 ++ www/src/layouts/index.css | 11 ++ www/src/layouts/index.js | 22 +-- www/src/pages/index.js | 170 +++++++++++++++++++- www/src/templates/docs.js | 238 +++++++++++++++------------- 13 files changed, 581 insertions(+), 142 deletions(-) rename docs/{about.md => documentation.md} (100%) create mode 100644 www/src/components/footer.js create mode 100644 www/src/images/logo_icon.svg diff --git a/docs/about.md b/docs/documentation.md similarity index 100% rename from docs/about.md rename to docs/documentation.md diff --git a/docs/features.md b/docs/features.md index 5ed0ffadd..b6af7e1ce 100644 --- a/docs/features.md +++ b/docs/features.md @@ -68,6 +68,8 @@ These CSS properties are **NOT** currently supported - [filter](https://github.com/niklasvh/html2canvas/issues/493) - [font-variant-ligatures](https://github.com/niklasvh/html2canvas/pull/1085) - [list-style](https://github.com/niklasvh/html2canvas/issues/177) + - radial-gradient() + - [repeating-linear-gradient()](https://github.com/niklasvh/html2canvas/issues/1162) - word-break - [writing-mode](https://github.com/niklasvh/html2canvas/issues/1258) diff --git a/docs/getting-started.md b/docs/getting-started.md index a2bacc384..190539751 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,7 +1,7 @@ --- title: "Getting Started" description: "Learn how to start using html2canvas" -previousUrl: "/about" +previousUrl: "/documentation" previousTitle: "About" nextUrl: "/configuration" nextTitle: "Configuration" diff --git a/www/gatsby-config.js b/www/gatsby-config.js index 12196ca94..c0522f54c 100644 --- a/www/gatsby-config.js +++ b/www/gatsby-config.js @@ -10,6 +10,7 @@ module.exports = { } }, `gatsby-plugin-catch-links`, + `gatsby-plugin-twitter`, `gatsby-plugin-react-helmet`, `gatsby-plugin-glamor`, { diff --git a/www/package-lock.json b/www/package-lock.json index e53161d40..5112c95f4 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -264,6 +264,11 @@ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -1827,6 +1832,22 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, + "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.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", @@ -2426,6 +2447,81 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cp-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-3.2.0.tgz", + "integrity": "sha1-b4NhYlRiTwrViqSqjQdvAmvn4Yg=", + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "cpy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-4.0.1.tgz", + "integrity": "sha1-tnJn66LzlgugalphrJQDNCKDNCQ=", + "requires": { + "cp-file": "3.2.0", + "globby": "4.1.0", + "meow": "3.7.0", + "nested-error-stacks": "1.0.2", + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "6.0.4", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "cpy-cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-1.0.1.tgz", + "integrity": "sha1-Z/taSi3sKMqKv/N13kuecfanVhw=", + "requires": { + "cpy": "4.0.1", + "meow": "3.7.0" + } + }, "create-ecdh": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", @@ -4147,6 +4243,14 @@ "react-helmet": "5.2.0" } }, + "gatsby-plugin-twitter": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-1.0.14.tgz", + "integrity": "sha512-jqjdEVDcCrzpnP0g/55O6l9PZafu/3iJ20Xu4xCCico1YqQrecdfj+vyX64Lc/M/oLXB+e6I8tiQ0L0iRYpyPA==", + "requires": { + "babel-runtime": "6.26.0" + } + }, "gatsby-plugin-typography": { "version": "1.7.10", "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-1.7.10.tgz", @@ -4265,6 +4369,11 @@ "resolved": "https://registry.npmjs.org/get-params/-/get-params-0.1.2.tgz", "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4=" }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -4934,6 +5043,14 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "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.1" + } + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -6052,6 +6169,11 @@ "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", @@ -6201,6 +6323,84 @@ "readable-stream": "2.3.3" } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "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.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.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.1" + } + } + } + }, "merge": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", @@ -6419,6 +6619,14 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "nested-error-stacks": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", + "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", + "requires": { + "inherits": "2.0.3" + } + }, "netrc": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", @@ -8770,6 +8978,15 @@ } } }, + "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" + } + }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -10302,6 +10519,14 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "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" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -10668,6 +10893,11 @@ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.0.tgz", "integrity": "sha1-mSbQPt4Tuhj31CIiYx+wTHn/Jv4=" }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", diff --git a/www/package.json b/www/package.json index d3d1ff69d..a38f6e089 100644 --- a/www/package.json +++ b/www/package.json @@ -5,23 +5,27 @@ "private": true, "author": "Niklas von Hertzen", "dependencies": { + "cpy-cli": "^1.0.1", "gatsby": "^1.9.127", "gatsby-link": "^1.6.30", "gatsby-plugin-catch-links": "^1.0.13", "gatsby-plugin-glamor": "^1.6.9", "gatsby-plugin-google-analytics": "^1.0.14", "gatsby-plugin-react-helmet": "^1.0.8", + "gatsby-plugin-twitter": "^1.0.14", "gatsby-plugin-typography": "^1.7.10", "gatsby-remark-prismjs": "^1.2.10", "gatsby-source-filesystem": "^1.5.9", "gatsby-transformer-remark": "^1.7.23", + "mkdirp": "^0.5.1", "typography": "^0.16.6", "typography-theme-github": "^0.15.10" }, "license": "MIT", "main": "n/a", "scripts": { - "build": "gatsby build", + "copybuild": "mkdirp public/dist && cpy ../dist/*.js public/dist", + "build": "npm run copybuild && gatsby build", "develop": "gatsby develop", "test": "echo \"Error: no test specified\" && exit 1" } diff --git a/www/src/components/footer.js b/www/src/components/footer.js new file mode 100644 index 000000000..ad2b25a59 --- /dev/null +++ b/www/src/components/footer.js @@ -0,0 +1,20 @@ +import React from 'react'; + +export default () => + ; diff --git a/www/src/components/navigation.js b/www/src/components/navigation.js index 12e2a49a1..38eb8472c 100644 --- a/www/src/components/navigation.js +++ b/www/src/components/navigation.js @@ -28,7 +28,7 @@ const navStyle = { }; const links = [ - {href: '/about', text: 'About'}, + {href: '/documentation', text: 'About'}, {href: '/getting-started', text: 'Getting started'}, {href: '/configuration', text: 'Configuration'}, {href: '/features', text: 'Features'}, @@ -38,9 +38,9 @@ const links = [ export default () =>
        -
        - -
        + + +
          + + + + + + + + + + + + diff --git a/www/src/layouts/index.css b/www/src/layouts/index.css index 1f27d5fe7..1c962771a 100644 --- a/www/src/layouts/index.css +++ b/www/src/layouts/index.css @@ -16,6 +16,17 @@ h4 { margin: 1.14rem 0 .912rem 0; } +h5 { + font-size: 1.28rem; + line-height: 110%; + margin: 1.14rem 0 .912rem 0; +} + +h6 { + line-height: 110%; + margin: 1.14rem 0 .912rem 0; +} + a { color: #7cb342; text-decoration: none; diff --git a/www/src/layouts/index.js b/www/src/layouts/index.js index 37b5a8e18..7977bfa61 100644 --- a/www/src/layouts/index.js +++ b/www/src/layouts/index.js @@ -1,33 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import Helmet from 'react-helmet'; -import Navigation from '../components/navigation'; require('prismjs/themes/prism-solarizedlight.css'); import './index.css'; const TemplateWrapper = ({children}) =>
          - - + {children()} -
          ; TemplateWrapper.propTypes = { diff --git a/www/src/pages/index.js b/www/src/pages/index.js index 4971ec9d0..07c17117c 100644 --- a/www/src/pages/index.js +++ b/www/src/pages/index.js @@ -1,12 +1,174 @@ import React from 'react'; import Link from 'gatsby-link'; +import logo from '../images/logo_icon.svg'; +import Footer from '../components/footer'; +import Carbon from '../components/carbon'; + +const codeStyle = { + backgroundColor: '#7cb342', + textShadow: '0 1px 0 rgba(23, 31, 35, 0.5)', + color: '#fff', + padding: '8px 16px', + borderRadius: '3px', + width: '100%', + whiteSpace: 'pre-wrap' +}; + +const linkStyle = { + padding: '4px 8px', + margin: '10px', + border: '2px solid #fff', + color: '#fff' +}; const IndexPage = () =>
          -

          Hi people

          -

          Welcome to your new Gatsby site.

          -

          Now go build something great.

          - Go to page 2 +
          +
          +
          + +

          html2canvas

          +
          +

          + Screenshots with JavaScript +

          + +
          +
          +

          HTML

          +
          +
          <div id="capture" style="padding: 10px; background: #f5da55">
          +    <h4 style="color: #000; ">Hello world!</h4>
          +</div>
          +
          +
          ` + }} + /> +
          +
          +

          JavaScript

          +
          +
          html2canvas(document.querySelector("#capture")).then(canvas => {
          +    document.body.appendChild(canvas)
          +});
          +
          +
          ` + }} + /> +
          +
          + +
          + + Try it out + + + Documentation + +
          +
          +
          + +
          +
          +
          Install NPM
          + npm install --save html2canvas +
          Install Yarn
          + yarn add html2canvas + +
          +
          +
          Connect
          +
          + - -
          - - - diff --git a/tests/mocha/css.js b/tests/mocha/css.js deleted file mode 100644 index f049c9cc1..000000000 --- a/tests/mocha/css.js +++ /dev/null @@ -1,241 +0,0 @@ -var NodeContainer = html2canvas.NodeContainer; - -describe('Borders', function() { - $('#borders div').each(function(i, node) { - it($(this).attr('style'), function() { - [ - 'borderTopWidth', - 'borderRightWidth', - 'borderBottomWidth', - 'borderLeftWidth' - ].forEach(function(prop) { - var result = $(node).css(prop); - // older IE's don't necessarily return px even with jQuery - if (result === 'thin') { - result = '1px'; - } else if (result === 'medium') { - result = '3px'; - } else if (result === 'thick') { - result = '5px'; - } - var container = new NodeContainer(node, null); - expect(container.css(prop)).to.be(result); - }); - }); - }); -}); - -describe('Padding', function() { - $('#padding div').each(function(i, node) { - it($(this).attr('style'), function() { - ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'].forEach(function(prop) { - var container = new NodeContainer(node, null); - var result = container.css(prop); - expect(result).to.contain('px'); - expect(result, $(node).css(prop)); - }); - }); - }); -}); - -describe('Background-position', function() { - $('#backgroundPosition div').each(function(i, node) { - it($(this).attr('style'), function() { - var prop = 'backgroundPosition'; - var img = new Image(); - img.width = 50; - img.height = 50; - - var container = new NodeContainer(node, null); - var item = container.css(prop), - backgroundPosition = container.parseBackgroundPosition( - html2canvas.utils.getBounds(node), - img - ), - split = window.getComputedStyle - ? $(node).css(prop).split(' ') - : [$(node).css(prop + 'X'), $(node).css(prop + 'Y')]; - - var testEl = $('
          ').css({ - position: 'absolute', - left: split[0], - top: split[1] - }); - - testEl.appendTo(node); - - expect(backgroundPosition.left).to.equal(Math.floor(parseFloat(testEl.css('left')))); - expect(backgroundPosition.top).to.equal(Math.floor(parseFloat(testEl.css('top')))); - - testEl.remove(); - }); - }); -}); - -describe('Text-shadow', function() { - $('#textShadows div').each(function(i, node) { - var index = i + 1; - var container = new NodeContainer(node, null); - var shadows = container.parseTextShadows(); - it(node.style.textShadow, function() { - if (i === 0) { - expect(shadows.length).to.equal(0); - } else { - expect(shadows.length).to.equal(i >= 6 ? 2 : 1); - expect(shadows[0].offsetX).to.equal(i); - expect(shadows[0].offsetY).to.equal(i); - if (i < 2) { - expect(shadows[0].color.toString()).to.equal('rgba(0,0,0,0)'); - } else if (i % 2 === 0) { - expect(shadows[0].color.toString()).to.equal('rgb(2,2,2)'); - } else { - var opacity = '0.2'; - expect(shadows[0].color.toString()).to.match(/rgba\(2,2,2,(0.2|0\.199219)\)/); - } - - // only testing blur once - if (i === 1) { - expect(shadows[0].blur).to.equal('1'); - } - } - }); - }); -}); - -describe('Background-image', function() { - test_parse_background_image( - 'url("te)st")', - { - prefix: '', - method: 'url', - value: 'url("te)st")', - args: ['te)st'], - image: null - }, - 'test quoted' - ); - - test_parse_background_image( - 'url("te,st")', - { - prefix: '', - method: 'url', - value: 'url("te,st")', - args: ['te,st'], - image: null - }, - 'test quoted' - ); - - test_parse_background_image( - 'url(te,st)', - { - prefix: '', - method: 'url', - value: 'url(te,st)', - args: ['te,st'], - image: null - }, - 'test quoted' - ); - - test_parse_background_image( - 'url(test)', - { - prefix: '', - method: 'url', - value: 'url(test)', - args: ['test'], - image: null - }, - 'basic url' - ); - - test_parse_background_image( - 'url("test")', - { - prefix: '', - method: 'url', - value: 'url("test")', - args: ['test'], - image: null - }, - 'quoted url' - ); - - test_parse_background_image( - 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', - { - prefix: '', - method: 'url', - value: - 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)', - args: [ - 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' - ], - image: null - }, - 'data url' - ); - - test_parse_background_image( - 'linear-gradient(red,black)', - { - prefix: '', - method: 'linear-gradient', - value: 'linear-gradient(red,black)', - args: ['red', 'black'], - image: null - }, - 'linear-gradient' - ); - - test_parse_background_image( - 'linear-gradient(top,rgb(255,0,0),rgb(0,0,0))', - { - prefix: '', - method: 'linear-gradient', - value: 'linear-gradient(top,rgb(255,0,0),rgb(0,0,0))', - args: ['top', 'rgb(255,0,0)', 'rgb(0,0,0)'], - image: null - }, - 'linear-gradient w/ rgb()' - ); - - test_parse_background_image( - '-webkit-linear-gradient(red,black)', - { - prefix: '-webkit-', - method: 'linear-gradient', - value: '-webkit-linear-gradient(red,black)', - args: ['red', 'black'], - image: null - }, - 'prefixed linear-gradient' - ); - - test_parse_background_image( - 'linear-gradient(red,black), url(test), url("test"),\n none, ', - [ - { - prefix: '', - method: 'linear-gradient', - value: 'linear-gradient(red,black)', - args: ['red', 'black'], - image: null - }, - {prefix: '', method: 'url', value: 'url(test)', args: ['test'], image: null}, - {prefix: '', method: 'url', value: 'url("test")', args: ['test'], image: null}, - {prefix: '', method: 'none', value: 'none', args: [], image: null} - ], - 'multiple backgrounds' - ); - - function test_parse_background_image(value, expected, name) { - it(name, function() { - expect(html2canvas.utils.parseBackgrounds(value)).to.eql( - Array.isArray(expected) ? expected : [expected] - ); - }); - } -}); diff --git a/tests/mocha/form-rendering.html b/tests/mocha/form-rendering.html deleted file mode 100644 index 363b8362d..000000000 --- a/tests/mocha/form-rendering.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - Mocha Tests - - - - - - - - - -
          - -
          - -
          -
          - -
          -
          - -
          - -
          - -
          - -
          - -
          - -
          - - - diff --git a/tests/mocha/gradients.js b/tests/mocha/gradients.js deleted file mode 100644 index 2e30f3123..000000000 --- a/tests/mocha/gradients.js +++ /dev/null @@ -1,145 +0,0 @@ -describe('Gradients', function() { - var expected = [ - { - method: 'linear-gradient', - args: ['left', ' rgb(255, 0, 0)', ' rgb(255, 255, 0)', ' rgb(0, 255, 0)'] - }, - { - method: 'linear-gradient', - args: ['left', ' red', ' rgb(255, 255, 0)', ' rgb(0, 255, 0)'] - }, - { - method: 'linear-gradient', - args: [ - 'left', - ' rgb(206, 219, 233) 0%', - ' rgb(170, 197, 222) 17%', - ' rgb(97, 153, 199) 50%', - ' rgb(58, 132, 195) 51%', - ' rgb(65, 154, 214) 59%', - ' rgb(75, 184, 240) 71%', - ' rgb(58, 139, 194) 84%', - ' rgb(38, 85, 139) 100%' - ] - }, - { - method: 'linear-gradient', - args: [ - 'left', - ' rgb(206, 219, 233) 0%', - ' rgb(170, 197, 222) 17px', - ' rgb(97, 153, 199) 50%', - ' rgb(58, 132, 195) 51px', - ' rgb(65, 154, 214) 59%', - ' rgb(75, 184, 240) 71px', - ' rgb(58, 139, 194) 84%', - ' rgb(38, 85, 139) 100px' - ] - }, - { - method: 'gradient', - args: [ - 'linear', - ' 50% 0%', - ' 50% 100%', - ' from(rgb(240, 183, 161))', - ' color-stop(0.5, rgb(140, 51, 16))', - ' color-stop(0.51, rgb(117, 34, 1))', - ' to(rgb(191, 110, 78))' - ] - }, - { - method: 'gradient', - args: [ - 'linear', - ' 50% 0%', - ' 50% 100%', - ' from(rgb(255, 0, 0))', - ' color-stop(0.314159, green)', - ' color-stop(0.51, rgb(0, 0, 255))', - // temporary workaround for Blink/WebKit bug: crbug.com/453414 - //" to(rgba(0, 0, 0, 0.5))" - ' to(rgba(0, 0, 0, 0))' - ] - }, - { - method: 'linear-gradient', - args: ['0deg', ' rgb(221, 221, 221)', ' rgb(221, 221, 221) 50%', ' transparent 50%'] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse closest-side', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse closest-corner', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse farthest-side', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse farthest-corner', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse contain', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - }, - { - method: 'radial-gradient', - args: [ - '75% 19%', - ' ellipse cover', - ' rgb(171, 171, 171)', - ' rgb(0, 0, 255) 33%', - ' rgb(153, 31, 31) 100%' - ] - } - ]; - - [].slice - .call(document.querySelectorAll('#backgroundGradients div'), 0) - .forEach(function(node, i) { - var container = new html2canvas.NodeContainer(node, null); - var value = container.css('backgroundImage'); - it(value, function() { - var parsedBackground = html2canvas.utils.parseBackgrounds(value); - if (parsedBackground[0].args[0] === '0% 50%') { - parsedBackground[0].args[0] = 'left'; - } - expect(parsedBackground[0].args).to.eql(expected[i].args); - expect(parsedBackground[0].method).to.eql(expected[i].method); - }); - }); -}); diff --git a/tests/mocha/ie9-clonenode-bug.html b/tests/mocha/ie9-clonenode-bug.html deleted file mode 100644 index 79490185e..000000000 --- a/tests/mocha/ie9-clonenode-bug.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Proxy tests - - - - - - - - -
          - - -
          - - - - diff --git a/tests/mocha/iframe1.htm b/tests/mocha/iframe1.htm deleted file mode 100644 index c45bc8f3d..000000000 --- a/tests/mocha/iframe1.htm +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - 
           
          - - diff --git a/tests/mocha/iframe2.htm b/tests/mocha/iframe2.htm deleted file mode 100644 index 5655a37c5..000000000 --- a/tests/mocha/iframe2.htm +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
           
          - diff --git a/tests/mocha/iframe3.htm b/tests/mocha/iframe3.htm deleted file mode 100644 index 3eda83f1e..000000000 --- a/tests/mocha/iframe3.htm +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - -
           
          - diff --git a/tests/mocha/lib/expect.js b/tests/mocha/lib/expect.js deleted file mode 100644 index 808721c49..000000000 --- a/tests/mocha/lib/expect.js +++ /dev/null @@ -1,1415 +0,0 @@ -(function(global, module) { - var exports = module.exports; - - /** - * Exports. - */ - - module.exports = expect; - expect.Assertion = Assertion; - - /** - * Exports version. - */ - - expect.version = '0.3.1'; - - /** - * Possible assertion flags. - */ - - var flags = { - not: ['to', 'be', 'have', 'include', 'only'], - to: ['be', 'have', 'include', 'only', 'not'], - only: ['have'], - have: ['own'], - be: ['an'] - }; - - function expect(obj) { - return new Assertion(obj); - } - - /** - * Constructor - * - * @api private - */ - - function Assertion(obj, flag, parent) { - this.obj = obj; - this.flags = {}; - - if (undefined != parent) { - this.flags[flag] = true; - - for (var i in parent.flags) { - if (parent.flags.hasOwnProperty(i)) { - this.flags[i] = true; - } - } - } - - var $flags = flag ? flags[flag] : keys(flags), - self = this; - - if ($flags) { - for (var i = 0, l = $flags.length; i < l; i++) { - // avoid recursion - if (this.flags[$flags[i]]) continue; - - var name = $flags[i], - assertion = new Assertion(this.obj, name, this); - - if ('function' == typeof Assertion.prototype[name]) { - // clone the function, make sure we dont touch the prot reference - var old = this[name]; - this[name] = function() { - return old.apply(self, arguments); - }; - - for (var fn in Assertion.prototype) { - if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { - this[name][fn] = bind(assertion[fn], assertion); - } - } - } else { - this[name] = assertion; - } - } - } - } - - /** - * Performs an assertion - * - * @api private - */ - - Assertion.prototype.assert = function(truth, msg, error, expected) { - var msg = this.flags.not ? error : msg, - ok = this.flags.not ? !truth : truth, - err; - - if (!ok) { - err = new Error(msg.call(this)); - if (arguments.length > 3) { - err.actual = this.obj; - err.expected = expected; - err.showDiff = true; - } - throw err; - } - - this.and = new Assertion(this.obj); - }; - - /** - * Check if the value is truthy - * - * @api public - */ - - Assertion.prototype.ok = function() { - this.assert( - !!this.obj, - function() { - return 'expected ' + i(this.obj) + ' to be truthy'; - }, - function() { - return 'expected ' + i(this.obj) + ' to be falsy'; - } - ); - }; - - /** - * Creates an anonymous function which calls fn with arguments. - * - * @api public - */ - - Assertion.prototype.withArgs = function() { - expect(this.obj).to.be.a('function'); - var fn = this.obj; - var args = Array.prototype.slice.call(arguments); - return expect(function() { - fn.apply(null, args); - }); - }; - - /** - * Assert that the function throws. - * - * @param {Function|RegExp} callback, or regexp to match error string against - * @api public - */ - - Assertion.prototype.throwError = Assertion.prototype.throwException = function(fn) { - expect(this.obj).to.be.a('function'); - - var thrown = false, - not = this.flags.not; - - try { - this.obj(); - } catch (e) { - if (isRegExp(fn)) { - var subject = 'string' == typeof e ? e : e.message; - if (not) { - expect(subject).to.not.match(fn); - } else { - expect(subject).to.match(fn); - } - } else if ('function' == typeof fn) { - fn(e); - } - thrown = true; - } - - if (isRegExp(fn) && not) { - // in the presence of a matcher, ensure the `not` only applies to - // the matching. - this.flags.not = false; - } - - var name = this.obj.name || 'fn'; - this.assert( - thrown, - function() { - return 'expected ' + name + ' to throw an exception'; - }, - function() { - return 'expected ' + name + ' not to throw an exception'; - } - ); - }; - - /** - * Checks if the array is empty. - * - * @api public - */ - - Assertion.prototype.empty = function() { - var expectation; - - if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { - if ('number' == typeof this.obj.length) { - expectation = !this.obj.length; - } else { - expectation = !keys(this.obj).length; - } - } else { - if ('string' != typeof this.obj) { - expect(this.obj).to.be.an('object'); - } - - expect(this.obj).to.have.property('length'); - expectation = !this.obj.length; - } - - this.assert( - expectation, - function() { - return 'expected ' + i(this.obj) + ' to be empty'; - }, - function() { - return 'expected ' + i(this.obj) + ' to not be empty'; - } - ); - return this; - }; - - /** - * Checks if the obj exactly equals another. - * - * @api public - */ - - Assertion.prototype.be = Assertion.prototype.equal = function(obj) { - this.assert( - obj === this.obj, - function() { - return 'expected ' + i(this.obj) + ' to equal ' + i(obj); - }, - function() { - return 'expected ' + i(this.obj) + ' to not equal ' + i(obj); - } - ); - return this; - }; - - /** - * Checks if the obj sortof equals another. - * - * @api public - */ - - Assertion.prototype.eql = function(obj) { - this.assert( - expect.eql(this.obj, obj), - function() { - return 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj); - }, - function() { - return 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj); - }, - obj - ); - return this; - }; - - /** - * Assert within start to finish (inclusive). - * - * @param {Number} start - * @param {Number} finish - * @api public - */ - - Assertion.prototype.within = function(start, finish) { - var range = start + '..' + finish; - this.assert( - this.obj >= start && this.obj <= finish, - function() { - return 'expected ' + i(this.obj) + ' to be within ' + range; - }, - function() { - return 'expected ' + i(this.obj) + ' to not be within ' + range; - } - ); - return this; - }; - - /** - * Assert typeof / instance of - * - * @api public - */ - - Assertion.prototype.a = Assertion.prototype.an = function(type) { - if ('string' == typeof type) { - // proper english in error msg - var n = /^[aeiou]/.test(type) ? 'n' : ''; - - // typeof with support for 'array' - this.assert( - 'array' == type - ? isArray(this.obj) - : 'regexp' == type - ? isRegExp(this.obj) - : 'object' == type - ? 'object' == typeof this.obj && null !== this.obj - : type == typeof this.obj, - function() { - return 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type; - }, - function() { - return 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type; - } - ); - } else { - // instanceof - var name = type.name || 'supplied constructor'; - this.assert( - this.obj instanceof type, - function() { - return 'expected ' + i(this.obj) + ' to be an instance of ' + name; - }, - function() { - return 'expected ' + i(this.obj) + ' not to be an instance of ' + name; - } - ); - } - - return this; - }; - - /** - * Assert numeric value above _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.greaterThan = Assertion.prototype.above = function(n) { - this.assert( - this.obj > n, - function() { - return 'expected ' + i(this.obj) + ' to be above ' + n; - }, - function() { - return 'expected ' + i(this.obj) + ' to be below ' + n; - } - ); - return this; - }; - - /** - * Assert numeric value below _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.lessThan = Assertion.prototype.below = function(n) { - this.assert( - this.obj < n, - function() { - return 'expected ' + i(this.obj) + ' to be below ' + n; - }, - function() { - return 'expected ' + i(this.obj) + ' to be above ' + n; - } - ); - return this; - }; - - /** - * Assert string value matches _regexp_. - * - * @param {RegExp} regexp - * @api public - */ - - Assertion.prototype.match = function(regexp) { - this.assert( - regexp.exec(this.obj), - function() { - return 'expected ' + i(this.obj) + ' to match ' + regexp; - }, - function() { - return 'expected ' + i(this.obj) + ' not to match ' + regexp; - } - ); - return this; - }; - - /** - * Assert property "length" exists and has value of _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.length = function(n) { - expect(this.obj).to.have.property('length'); - var len = this.obj.length; - this.assert( - n == len, - function() { - return 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len; - }, - function() { - return 'expected ' + i(this.obj) + ' to not have a length of ' + len; - } - ); - return this; - }; - - /** - * Assert property _name_ exists, with optional _val_. - * - * @param {String} name - * @param {Mixed} val - * @api public - */ - - Assertion.prototype.property = function(name, val) { - if (this.flags.own) { - this.assert( - Object.prototype.hasOwnProperty.call(this.obj, name), - function() { - return 'expected ' + i(this.obj) + ' to have own property ' + i(name); - }, - function() { - return 'expected ' + i(this.obj) + ' to not have own property ' + i(name); - } - ); - return this; - } - - if (this.flags.not && undefined !== val) { - if (undefined === this.obj[name]) { - throw new Error(i(this.obj) + ' has no property ' + i(name)); - } - } else { - var hasProp; - try { - hasProp = name in this.obj; - } catch (e) { - hasProp = undefined !== this.obj[name]; - } - - this.assert( - hasProp, - function() { - return 'expected ' + i(this.obj) + ' to have a property ' + i(name); - }, - function() { - return 'expected ' + i(this.obj) + ' to not have a property ' + i(name); - } - ); - } - - if (undefined !== val) { - this.assert( - val === this.obj[name], - function() { - return ( - 'expected ' + - i(this.obj) + - ' to have a property ' + - i(name) + - ' of ' + - i(val) + - ', but got ' + - i(this.obj[name]) - ); - }, - function() { - return ( - 'expected ' + - i(this.obj) + - ' to not have a property ' + - i(name) + - ' of ' + - i(val) - ); - } - ); - } - - this.obj = this.obj[name]; - return this; - }; - - /** - * Assert that the array contains _obj_ or string contains _obj_. - * - * @param {Mixed} obj|string - * @api public - */ - - Assertion.prototype.string = Assertion.prototype.contain = function(obj) { - if ('string' == typeof this.obj) { - this.assert( - ~this.obj.indexOf(obj), - function() { - return 'expected ' + i(this.obj) + ' to contain ' + i(obj); - }, - function() { - return 'expected ' + i(this.obj) + ' to not contain ' + i(obj); - } - ); - } else { - this.assert( - ~indexOf(this.obj, obj), - function() { - return 'expected ' + i(this.obj) + ' to contain ' + i(obj); - }, - function() { - return 'expected ' + i(this.obj) + ' to not contain ' + i(obj); - } - ); - } - return this; - }; - - /** - * Assert exact keys or inclusion of keys by using - * the `.own` modifier. - * - * @param {Array|String ...} keys - * @api public - */ - - Assertion.prototype.key = Assertion.prototype.keys = function($keys) { - var str, - ok = true; - - $keys = isArray($keys) ? $keys : Array.prototype.slice.call(arguments); - - if (!$keys.length) throw new Error('keys required'); - - var actual = keys(this.obj), - len = $keys.length; - - // Inclusion - ok = every($keys, function(key) { - return ~indexOf(actual, key); - }); - - // Strict - if (!this.flags.not && this.flags.only) { - ok = ok && $keys.length == actual.length; - } - - // Key string - if (len > 1) { - $keys = map($keys, function(key) { - return i(key); - }); - var last = $keys.pop(); - str = $keys.join(', ') + ', and ' + last; - } else { - str = i($keys[0]); - } - - // Form - str = (len > 1 ? 'keys ' : 'key ') + str; - - // Have / include - str = (!this.flags.only ? 'include ' : 'only have ') + str; - - // Assertion - this.assert( - ok, - function() { - return 'expected ' + i(this.obj) + ' to ' + str; - }, - function() { - return 'expected ' + i(this.obj) + ' to not ' + str; - } - ); - - return this; - }; - - /** - * Assert a failure. - * - * @param {String ...} custom message - * @api public - */ - Assertion.prototype.fail = function(msg) { - var error = function() { - return msg || 'explicit failure'; - }; - this.assert(false, error, error); - return this; - }; - - /** - * Function bind implementation. - */ - - function bind(fn, scope) { - return function() { - return fn.apply(scope, arguments); - }; - } - - /** - * Array every compatibility - * - * @see bit.ly/5Fq1N2 - * @api public - */ - - function every(arr, fn, thisObj) { - var scope = thisObj || global; - for (var i = 0, j = arr.length; i < j; ++i) { - if (!fn.call(scope, arr[i], i, arr)) { - return false; - } - } - return true; - } - - /** - * Array indexOf compatibility. - * - * @see bit.ly/a5Dxa2 - * @api public - */ - - function indexOf(arr, o, i) { - if (Array.prototype.indexOf) { - return Array.prototype.indexOf.call(arr, o, i); - } - - if (arr.length === undefined) { - return -1; - } - - for ( - var j = arr.length, i = i < 0 ? (i + j < 0 ? 0 : i + j) : i || 0; - i < j && arr[i] !== o; - i++ - ); - - return j <= i ? -1 : i; - } - - // https://gist.github.com/1044128/ - var getOuterHTML = function(element) { - if ('outerHTML' in element) return element.outerHTML; - var ns = 'http://www.w3.org/1999/xhtml'; - var container = document.createElementNS(ns, '_'); - var xmlSerializer = new XMLSerializer(); - var html; - if (document.xmlVersion) { - return xmlSerializer.serializeToString(element); - } else { - container.appendChild(element.cloneNode(false)); - html = container.innerHTML.replace('><', '>' + element.innerHTML + '<'); - container.innerHTML = ''; - return html; - } - }; - - // Returns true if object is a DOM element. - var isDOMElement = function(object) { - if (typeof HTMLElement === 'object') { - return object instanceof HTMLElement; - } else { - return ( - object && - typeof object === 'object' && - object.nodeType === 1 && - typeof object.nodeName === 'string' - ); - } - }; - - /** - * Inspects an object. - * - * @see taken from node.js `util` module (copyright Joyent, MIT license) - * @api private - */ - - function i(obj, showHidden, depth) { - var seen = []; - - function stylize(str) { - return str; - } - - function format(value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if ( - value && - typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value !== exports && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value) - ) { - return value.inspect(recurseTimes); - } - - // Primitive types cannot have properties - switch (typeof value) { - case 'undefined': - return stylize('undefined', 'undefined'); - - case 'string': - var simple = - "'" + - json - .stringify(value) - .replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + - "'"; - return stylize(simple, 'string'); - - case 'number': - return stylize('' + value, 'number'); - - case 'boolean': - return stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return stylize('null', 'null'); - } - - if (isDOMElement(value)) { - return getOuterHTML(value); - } - - // Look up the keys of the object. - var visible_keys = keys(value); - var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; - - // Functions without properties can be shortcutted. - if (typeof value === 'function' && $keys.length === 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - var name = value.name ? ': ' + value.name : ''; - return stylize('[Function' + name + ']', 'special'); - } - } - - // Dates without properties can be shortcutted - if (isDate(value) && $keys.length === 0) { - return stylize(value.toUTCString(), 'date'); - } - - // Error objects can be shortcutted - if (value instanceof Error) { - return stylize('[' + value.toString() + ']', 'Error'); - } - - var base, type, braces; - // Determine the object type - if (isArray(value)) { - type = 'Array'; - braces = ['[', ']']; - } else { - type = 'Object'; - braces = ['{', '}']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var n = value.name ? ': ' + value.name : ''; - base = isRegExp(value) ? ' ' + value : ' [Function' + n + ']'; - } else { - base = ''; - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + value.toUTCString(); - } - - if ($keys.length === 0) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - return stylize('[Object]', 'special'); - } - } - - seen.push(value); - - var output = map($keys, function(key) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = stylize('[Getter/Setter]', 'special'); - } else { - str = stylize('[Getter]', 'special'); - } - } else { - if (value.__lookupSetter__(key)) { - str = stylize('[Setter]', 'special'); - } - } - } - if (indexOf(visible_keys, key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (indexOf(seen, value[key]) < 0) { - if (recurseTimes === null) { - str = format(value[key]); - } else { - str = format(value[key], recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (isArray(value)) { - str = map(str.split('\n'), function(line) { - return ' ' + line; - }) - .join('\n') - .substr(2); - } else { - str = - '\n' + - map(str.split('\n'), function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (type === 'Array' && key.match(/^\d+$/)) { - return str; - } - name = json.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = stylize(name, 'name'); - } else { - name = name - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = stylize(name, 'string'); - } - } - - return name + ': ' + str; - }); - - seen.pop(); - - var numLinesEst = 0; - var length = reduce( - output, - function(prev, cur) { - numLinesEst++; - if (indexOf(cur, '\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, - 0 - ); - - if (length > 50) { - output = - braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } else { - output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } - - return output; - } - return format(obj, typeof depth === 'undefined' ? 2 : depth); - } - - expect.stringify = i; - - function isArray(ar) { - return Object.prototype.toString.call(ar) === '[object Array]'; - } - - function isRegExp(re) { - var s; - try { - s = '' + re; - } catch (e) { - return false; - } - - return ( - re instanceof RegExp || // easy case - // duck-type for context-switching evalcx case - (typeof re === 'function' && - re.constructor.name === 'RegExp' && - re.compile && - re.test && - re.exec && - s.match(/^\/.*\/[gim]{0,3}$/)) - ); - } - - function isDate(d) { - return d instanceof Date; - } - - function keys(obj) { - if (Object.keys) { - return Object.keys(obj); - } - - var keys = []; - - for (var i in obj) { - if (Object.prototype.hasOwnProperty.call(obj, i)) { - keys.push(i); - } - } - - return keys; - } - - function map(arr, mapper, that) { - if (Array.prototype.map) { - return Array.prototype.map.call(arr, mapper, that); - } - - var other = new Array(arr.length); - - for (var i = 0, n = arr.length; i < n; i++) - if (i in arr) other[i] = mapper.call(that, arr[i], i, arr); - - return other; - } - - function reduce(arr, fun) { - if (Array.prototype.reduce) { - return Array.prototype.reduce.apply(arr, Array.prototype.slice.call(arguments, 1)); - } - - var len = +this.length; - - if (typeof fun !== 'function') throw new TypeError(); - - // no value to return if no initial value and an empty array - if (len === 0 && arguments.length === 1) throw new TypeError(); - - var i = 0; - if (arguments.length >= 2) { - var rv = arguments[1]; - } else { - do { - if (i in this) { - rv = this[i++]; - break; - } - - // if array contains no values, no initial value to return - if (++i >= len) throw new TypeError(); - } while (true); - } - - for (; i < len; i++) { - if (i in this) rv = fun.call(null, rv, this[i], i, this); - } - - return rv; - } - - /** - * Asserts deep equality - * - * @see taken from node.js `assert` module (copyright Joyent, MIT license) - * @api private - */ - - expect.eql = function eql(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if ( - 'undefined' != typeof Buffer && - Buffer.isBuffer(actual) && - Buffer.isBuffer(expected) - ) { - if (actual.length != expected.length) return false; - - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } - - return true; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == "object", - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - // If both are regular expression use the special `regExpEquiv` method - // to determine equivalence. - } else if (isRegExp(actual) && isRegExp(expected)) { - return regExpEquiv(actual, expected); - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical "prototype" property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } - }; - - function isUndefinedOrNull(value) { - return value === null || value === undefined; - } - - function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; - } - - function regExpEquiv(a, b) { - return ( - a.source === b.source && - a.global === b.global && - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline - ); - } - - function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) return false; - // an identical "prototype" property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return expect.eql(a, b); - } - try { - var ka = keys(a), - kb = keys(b), - key, - i; - } catch (e) { - //happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates hasOwnProperty) - if (ka.length != kb.length) return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!expect.eql(a[key], b[key])) return false; - } - return true; - } - - var json = (function() { - 'use strict'; - - if ('object' == typeof JSON && JSON.parse && JSON.stringify) { - return { - parse: nativeJSON.parse, - stringify: nativeJSON.stringify - }; - } - - var JSON = {}; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - function date(d, key) { - return isFinite(d.valueOf()) - ? d.getUTCFullYear() + - '-' + - f(d.getUTCMonth() + 1) + - '-' + - f(d.getUTCDate()) + - 'T' + - f(d.getUTCHours()) + - ':' + - f(d.getUTCMinutes()) + - ':' + - f(d.getUTCSeconds()) + - 'Z' - : null; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { - // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"': '\\"', - '\\': '\\\\' - }, - rep; - - function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) - ? '"' + - string.replace(escapable, function(a) { - var c = meta[a]; - return typeof c === 'string' - ? c - : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + - '"' - : '"' + string + '"'; - } - - function str(key, holder) { - // Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - - if (value instanceof Date) { - value = date(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - - return String(value); - - // If the type is 'object', we might be dealing with an object or an array or - // null. - - case 'object': - // Due to a specification blunder in ECMAScript, typeof null is 'object', - // so watch out for that case. - - if (!value) { - return 'null'; - } - - // Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - - // Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - // The value is an array. Stringify every element. Use null as a placeholder - // for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and wrap them in - // brackets. - - v = - partial.length === 0 - ? '[]' - : gap - ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' - : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - // Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = - partial.length === 0 - ? '{}' - : gap - ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' - : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - - // If the JSON object does not yet have a stringify method, give it one. - - JSON.stringify = function(value, replacer, space) { - // The stringify method takes a value and an optional replacer, and an optional - // space parameter, and returns a JSON text. The replacer can be a function - // that can replace values, or an array of strings that will select the keys. - // A default replacer method can be provided. Use of the space parameter can - // produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - - // If the space parameter is a string, it will be used as the indent string. - } else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - - rep = replacer; - if ( - replacer && - typeof replacer !== 'function' && - (typeof replacer !== 'object' || typeof replacer.length !== 'number') - ) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - - return str('', {'': value}); - }; - - // If the JSON object does not yet have a parse method, give it one. - - JSON.parse = function(text, reviver) { - // The parse method takes a text and an optional reviver function, and returns - // a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - // The walk method is used to recursively walk the resulting structure so - // that modifications can be made. - - var k, - v, - value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - // Parsing happens in four stages. In the first stage, we replace certain - // Unicode characters with escape sequences. JavaScript handles many characters - // incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function(a) { - return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - - // In the second stage, we run the text against regular expressions that look - // for non-JSON patterns. We are especially concerned with '()' and 'new' - // because they can cause invocation, and '=' because it can cause mutation. - // But just to be safe, we want to reject all unexpected forms. - - // We split the second stage into 4 regexp operations in order to work around - // crippling inefficiencies in IE's and Safari's regexp engines. First we - // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we - // replace all simple value tokens with ']' characters. Third, we delete all - // open brackets that follow a colon or comma or that begin the text. Finally, - // we look to see that the remaining characters are only whitespace or ']' or - // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if ( - /^[\],:{}\s]*$/.test( - text - .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace( - /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - ']' - ) - .replace(/(?:^|:|,)(?:\s*\[)+/g, '') - ) - ) { - // In the third stage we use the eval function to compile the text into a - // JavaScript structure. The '{' operator is subject to a syntactic ambiguity - // in JavaScript: it can begin a block or an object literal. We wrap the text - // in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - - // In the optional fourth stage, we recursively walk the new structure, passing - // each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? walk({'': j}, '') : j; - } - - // If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - - return JSON; - })(); - - if ('undefined' != typeof window) { - window.expect = module.exports; - } -})(this, 'undefined' != typeof module ? module : {exports: {}}); diff --git a/tests/mocha/lib/mocha.css b/tests/mocha/lib/mocha.css deleted file mode 100644 index 42b9798fa..000000000 --- a/tests/mocha/lib/mocha.css +++ /dev/null @@ -1,270 +0,0 @@ -@charset "utf-8"; - -body { - margin:0; -} - -#mocha { - font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; - margin: 60px 50px; -} - -#mocha ul, -#mocha li { - margin: 0; - padding: 0; -} - -#mocha ul { - list-style: none; -} - -#mocha h1, -#mocha h2 { - margin: 0; -} - -#mocha h1 { - margin-top: 15px; - font-size: 1em; - font-weight: 200; -} - -#mocha h1 a { - text-decoration: none; - color: inherit; -} - -#mocha h1 a:hover { - text-decoration: underline; -} - -#mocha .suite .suite h1 { - margin-top: 0; - font-size: .8em; -} - -#mocha .hidden { - display: none; -} - -#mocha h2 { - font-size: 12px; - font-weight: normal; - cursor: pointer; -} - -#mocha .suite { - margin-left: 15px; -} - -#mocha .test { - margin-left: 15px; - overflow: hidden; -} - -#mocha .test.pending:hover h2::after { - content: '(pending)'; - font-family: arial, sans-serif; -} - -#mocha .test.pass.medium .duration { - background: #c09853; -} - -#mocha .test.pass.slow .duration { - background: #b94a48; -} - -#mocha .test.pass::before { - content: '✓'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #00d6b2; -} - -#mocha .test.pass .duration { - font-size: 9px; - margin-left: 5px; - padding: 2px 5px; - color: #fff; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; -} - -#mocha .test.pass.fast .duration { - display: none; -} - -#mocha .test.pending { - color: #0b97c4; -} - -#mocha .test.pending::before { - content: '◦'; - color: #0b97c4; -} - -#mocha .test.fail { - color: #c00; -} - -#mocha .test.fail pre { - color: black; -} - -#mocha .test.fail::before { - content: '✖'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #c00; -} - -#mocha .test pre.error { - color: #c00; - max-height: 300px; - overflow: auto; -} - -/** - * (1): approximate for browsers not supporting calc - * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border) - * ^^ seriously - */ -#mocha .test pre { - display: block; - float: left; - clear: left; - font: 12px/1.5 monaco, monospace; - margin: 5px; - padding: 15px; - border: 1px solid #eee; - max-width: 85%; /*(1)*/ - max-width: calc(100% - 42px); /*(2)*/ - word-wrap: break-word; - border-bottom-color: #ddd; - -webkit-border-radius: 3px; - -webkit-box-shadow: 0 1px 3px #eee; - -moz-border-radius: 3px; - -moz-box-shadow: 0 1px 3px #eee; - border-radius: 3px; -} - -#mocha .test h2 { - position: relative; -} - -#mocha .test a.replay { - position: absolute; - top: 3px; - right: 0; - text-decoration: none; - vertical-align: middle; - display: block; - width: 15px; - height: 15px; - line-height: 15px; - text-align: center; - background: #eee; - font-size: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - -webkit-transition: opacity 200ms; - -moz-transition: opacity 200ms; - transition: opacity 200ms; - opacity: 0.3; - color: #888; -} - -#mocha .test:hover a.replay { - opacity: 1; -} - -#mocha-report.pass .test.fail { - display: none; -} - -#mocha-report.fail .test.pass { - display: none; -} - -#mocha-report.pending .test.pass, -#mocha-report.pending .test.fail { - display: none; -} -#mocha-report.pending .test.pass.pending { - display: block; -} - -#mocha-error { - color: #c00; - font-size: 1.5em; - font-weight: 100; - letter-spacing: 1px; -} - -#mocha-stats { - position: fixed; - top: 15px; - right: 10px; - font-size: 12px; - margin: 0; - color: #888; - z-index: 1; -} - -#mocha-stats .progress { - float: right; - padding-top: 0; -} - -#mocha-stats em { - color: black; -} - -#mocha-stats a { - text-decoration: none; - color: inherit; -} - -#mocha-stats a:hover { - border-bottom: 1px solid #eee; -} - -#mocha-stats li { - display: inline-block; - margin: 0 5px; - list-style: none; - padding-top: 11px; -} - -#mocha-stats canvas { - width: 40px; - height: 40px; -} - -#mocha code .comment { color: #ddd; } -#mocha code .init { color: #2f6fad; } -#mocha code .string { color: #5890ad; } -#mocha code .keyword { color: #8a6343; } -#mocha code .number { color: #2f6fad; } - -@media screen and (max-device-width: 480px) { - #mocha { - margin: 60px 0px; - } - - #mocha #stats { - position: absolute; - } -} diff --git a/tests/mocha/lib/mocha.js b/tests/mocha/lib/mocha.js deleted file mode 100644 index 1eb4c32af..000000000 --- a/tests/mocha/lib/mocha.js +++ /dev/null @@ -1,6162 +0,0 @@ -(function() { - // CommonJS require() - - function require(p) { - var path = require.resolve(p), - mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - } - - require.modules = {}; - - require.resolve = function(path) { - var orig = path, - reg = path + '.js', - index = path + '/index.js'; - return (require.modules[reg] && reg) || (require.modules[index] && index) || orig; - }; - - require.register = function(path, fn) { - require.modules[path] = fn; - }; - - require.relative = function(parent) { - return function(p) { - if ('.' != p.charAt(0)) return require(p); - - var path = parent.split('/'), - segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); - }; - }; - - require.register('browser/debug.js', function(module, exports, require) { - module.exports = function(type) { - return function() {}; - }; - }); // module: browser/debug.js - - require.register('browser/diff.js', function(module, exports, require) { - /* See LICENSE file for terms of use */ - - /* - * Text diff implementation. - * - * This library supports the following APIS: - * JsDiff.diffChars: Character by character diff - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace - * JsDiff.diffLines: Line based diff - * - * JsDiff.diffCss: Diff targeted at CSS content - * - * These methods are based on the implementation proposed in - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - */ - var JsDiff = (function() { - /*jshint maxparams: 5*/ - function clonePath(path) { - return {newPos: path.newPos, components: path.components.slice(0)}; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, '&'); - n = n.replace(//g, '>'); - n = n.replace(/"/g, '"'); - - return n; - } - - var Diff = function(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - }; - Diff.prototype = { - diff: function(oldString, newString) { - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString === oldString) { - return [{value: newString}]; - } - if (!newString) { - return [{value: oldString, removed: true}]; - } - if (!oldString) { - return [{value: newString, added: true}]; - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, - oldLen = oldString.length; - var maxEditLength = newLen + oldLen; - var bestPath = [{newPos: -1, components: []}]; - - // Seed editLength = 0 - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return bestPath[0].components; - } - - for (var editLength = 1; editLength <= maxEditLength; editLength++) { - for ( - var diagonalPath = -1 * editLength; - diagonalPath <= editLength; - diagonalPath += 2 - ) { - var basePath; - var addPath = bestPath[diagonalPath - 1], - removePath = bestPath[diagonalPath + 1]; - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath - 1] = undefined; - } - - var canAdd = addPath && addPath.newPos + 1 < newLen; - var canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = undefined; - continue; - } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - this.pushComponent( - basePath.components, - oldString[oldPos], - undefined, - true - ); - } else { - basePath = clonePath(addPath); - basePath.newPos++; - this.pushComponent( - basePath.components, - newString[basePath.newPos], - true, - undefined - ); - } - - var oldPos = this.extractCommon( - basePath, - newString, - oldString, - diagonalPath - ); - - if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return basePath.components; - } else { - bestPath[diagonalPath] = basePath; - } - } - } - }, - - pushComponent: function(components, value, added, removed) { - var last = components[components.length - 1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length - 1] = { - value: this.join(last.value, value), - added: added, - removed: removed - }; - } else { - components.push({value: value, added: added, removed: removed}); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath; - while ( - newPos + 1 < newLen && - oldPos + 1 < oldLen && - this.equals(newString[newPos + 1], oldString[oldPos + 1]) - ) { - newPos++; - oldPos++; - - this.pushComponent( - basePath.components, - newString[newPos], - undefined, - undefined - ); - } - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - if ( - this.ignoreWhitespace && - !reWhitespace.test(left) && - !reWhitespace.test(right) - ) { - return true; - } else { - return left === right; - } - }, - join: function(left, right) { - return left + right; - }, - tokenize: function(value) { - return value; - } - }; - - var CharDiff = new Diff(); - - var WordDiff = new Diff(true); - var WordWithSpaceDiff = new Diff(); - WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/)); - }; - - var CssDiff = new Diff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/)); - }; - - var LineDiff = new Diff(); - LineDiff.tokenize = function(value) { - var retLines = [], - lines = value.split(/^/m); - - for (var i = 0; i < lines.length; i++) { - var line = lines[i], - lastLine = lines[i - 1]; - - // Merge lines that may contain windows new lines - if (line == '\n' && lastLine && lastLine[lastLine.length - 1] === '\r') { - retLines[retLines.length - 1] += '\n'; - } else if (line) { - retLines.push(line); - } - } - - return retLines; - }; - - return { - Diff: Diff, - - diffChars: function(oldStr, newStr) { - return CharDiff.diff(oldStr, newStr); - }, - diffWords: function(oldStr, newStr) { - return WordDiff.diff(oldStr, newStr); - }, - diffWordsWithSpace: function(oldStr, newStr) { - return WordWithSpaceDiff.diff(oldStr, newStr); - }, - diffLines: function(oldStr, newStr) { - return LineDiff.diff(oldStr, newStr); - }, - - diffCss: function(oldStr, newStr) { - return CssDiff.diff(oldStr, newStr); - }, - - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; - - ret.push('Index: ' + fileName); - ret.push('==================================================================='); - ret.push( - '--- ' + - fileName + - (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader) - ); - ret.push( - '+++ ' + - fileName + - (typeof newHeader === 'undefined' ? '' : '\t' + newHeader) - ); - - var diff = LineDiff.diff(oldStr, newStr); - if (!diff[diff.length - 1].value) { - diff.pop(); // Remove trailing newline add - } - diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier - - function contextLines(lines) { - return lines.map(function(entry) { - return ' ' + entry; - }); - } - function eofNL(curRange, i, current) { - var last = diff[diff.length - 2], - isLast = i === diff.length - 2, - isLastOfType = - i === diff.length - 3 && - (current.added !== last.added || current.removed !== last.removed); - - // Figure out if this is the last line for the given file and missing NL - if (!/\n$/.test(current.value) && (isLast || isLastOfType)) { - curRange.push('\\ No newline at end of file'); - } - } - - var oldRangeStart = 0, - newRangeStart = 0, - curRange = [], - oldLine = 1, - newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - if (!oldRangeStart) { - var prev = diff[i - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = contextLines(prev.lines.slice(-4)); - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - curRange.push.apply( - curRange, - lines.map(function(entry) { - return (current.added ? '+' : '-') + entry; - }) - ); - eofNL(curRange, i, current); - - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= 8 && i < diff.length - 2) { - // Overlapping - curRange.push.apply(curRange, contextLines(lines)); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - '@@ -' + - oldRangeStart + - ',' + - (oldLine - oldRangeStart + contextSize) + - ' +' + - newRangeStart + - ',' + - (newLine - newRangeStart + contextSize) + - ' @@' - ); - ret.push.apply(ret, curRange); - ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); - if (lines.length <= 4) { - eofNL(ret, i, current); - } - - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - - return ret.join('\n') + '\n'; - }, - - applyPatch: function(oldStr, uniDiff) { - var diffstr = uniDiff.split('\n'); - var diff = []; - var remEOFNL = false, - addEOFNL = false; - - for (var i = diffstr[0][0] === 'I' ? 4 : 0; i < diffstr.length; i++) { - if (diffstr[i][0] === '@') { - var meh = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); - diff.unshift({ - start: meh[3], - oldlength: meh[2], - oldlines: [], - newlength: meh[4], - newlines: [] - }); - } else if (diffstr[i][0] === '+') { - diff[0].newlines.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '-') { - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === ' ') { - diff[0].newlines.push(diffstr[i].substr(1)); - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '\\') { - if (diffstr[i - 1][0] === '+') { - remEOFNL = true; - } else if (diffstr[i - 1][0] === '-') { - addEOFNL = true; - } - } - } - - var str = oldStr.split('\n'); - for (var i = diff.length - 1; i >= 0; i--) { - var d = diff[i]; - for (var j = 0; j < d.oldlength; j++) { - if (str[d.start - 1 + j] !== d.oldlines[j]) { - return false; - } - } - Array.prototype.splice.apply( - str, - [d.start - 1, +d.oldlength].concat(d.newlines) - ); - } - - if (remEOFNL) { - while (!str[str.length - 1]) { - str.pop(); - } - } else if (addEOFNL) { - str.push(''); - } - return str.join('\n'); - }, - - convertChangesToXML: function(changes) { - var ret = []; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - - ret.push(escapeHTML(change.value)); - - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - } - return ret.join(''); - }, - - // See: http://code.google.com/p/google-diff-match-patch/wiki/API - convertChangesToDMP: function(changes) { - var ret = [], - change; - for (var i = 0; i < changes.length; i++) { - change = changes[i]; - ret.push([change.added ? 1 : change.removed ? -1 : 0, change.value]); - } - return ret; - } - }; - })(); - - if (typeof module !== 'undefined') { - module.exports = JsDiff; - } - }); // module: browser/diff.js - - require.register('browser/escape-string-regexp.js', function(module, exports, require) { - 'use strict'; - - var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - - module.exports = function(str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); - }; - }); // module: browser/escape-string-regexp.js - - require.register('browser/events.js', function(module, exports, require) { - /** - * Module exports. - */ - - exports.EventEmitter = EventEmitter; - - /** - * Check if `obj` is an array. - */ - - function isArray(obj) { - return '[object Array]' == {}.toString.call(obj); - } - - /** - * Event emitter constructor. - * - * @api public - */ - - function EventEmitter() {} - - /** - * Adds a listener. - * - * @api public - */ - - EventEmitter.prototype.on = function(name, fn) { - if (!this.$events) { - this.$events = {}; - } - - if (!this.$events[name]) { - this.$events[name] = fn; - } else if (isArray(this.$events[name])) { - this.$events[name].push(fn); - } else { - this.$events[name] = [this.$events[name], fn]; - } - - return this; - }; - - EventEmitter.prototype.addListener = EventEmitter.prototype.on; - - /** - * Adds a volatile listener. - * - * @api public - */ - - EventEmitter.prototype.once = function(name, fn) { - var self = this; - - function on() { - self.removeListener(name, on); - fn.apply(this, arguments); - } - - on.listener = fn; - this.on(name, on); - - return this; - }; - - /** - * Removes a listener. - * - * @api public - */ - - EventEmitter.prototype.removeListener = function(name, fn) { - if (this.$events && this.$events[name]) { - var list = this.$events[name]; - - if (isArray(list)) { - var pos = -1; - - for (var i = 0, l = list.length; i < l; i++) { - if (list[i] === fn || (list[i].listener && list[i].listener === fn)) { - pos = i; - break; - } - } - - if (pos < 0) { - return this; - } - - list.splice(pos, 1); - - if (!list.length) { - delete this.$events[name]; - } - } else if (list === fn || (list.listener && list.listener === fn)) { - delete this.$events[name]; - } - } - - return this; - }; - - /** - * Removes all listeners for an event. - * - * @api public - */ - - EventEmitter.prototype.removeAllListeners = function(name) { - if (name === undefined) { - this.$events = {}; - return this; - } - - if (this.$events && this.$events[name]) { - this.$events[name] = null; - } - - return this; - }; - - /** - * Gets all listeners for a certain event. - * - * @api public - */ - - EventEmitter.prototype.listeners = function(name) { - if (!this.$events) { - this.$events = {}; - } - - if (!this.$events[name]) { - this.$events[name] = []; - } - - if (!isArray(this.$events[name])) { - this.$events[name] = [this.$events[name]]; - } - - return this.$events[name]; - }; - - /** - * Emits an event. - * - * @api public - */ - - EventEmitter.prototype.emit = function(name) { - if (!this.$events) { - return false; - } - - var handler = this.$events[name]; - - if (!handler) { - return false; - } - - var args = [].slice.call(arguments, 1); - - if ('function' == typeof handler) { - handler.apply(this, args); - } else if (isArray(handler)) { - var listeners = handler.slice(); - - for (var i = 0, l = listeners.length; i < l; i++) { - listeners[i].apply(this, args); - } - } else { - return false; - } - - return true; - }; - }); // module: browser/events.js - - require.register('browser/fs.js', function(module, exports, require) {}); // module: browser/fs.js - - require.register('browser/glob.js', function(module, exports, require) {}); // module: browser/glob.js - - require.register('browser/path.js', function(module, exports, require) {}); // module: browser/path.js - - require.register('browser/progress.js', function(module, exports, require) { - /** - * Expose `Progress`. - */ - - module.exports = Progress; - - /** - * Initialize a new `Progress` indicator. - */ - - function Progress() { - this.percent = 0; - this.size(0); - this.fontSize(11); - this.font('helvetica, arial, sans-serif'); - } - - /** - * Set progress size to `n`. - * - * @param {Number} n - * @return {Progress} for chaining - * @api public - */ - - Progress.prototype.size = function(n) { - this._size = n; - return this; - }; - - /** - * Set text to `str`. - * - * @param {String} str - * @return {Progress} for chaining - * @api public - */ - - Progress.prototype.text = function(str) { - this._text = str; - return this; - }; - - /** - * Set font size to `n`. - * - * @param {Number} n - * @return {Progress} for chaining - * @api public - */ - - Progress.prototype.fontSize = function(n) { - this._fontSize = n; - return this; - }; - - /** - * Set font `family`. - * - * @param {String} family - * @return {Progress} for chaining - */ - - Progress.prototype.font = function(family) { - this._font = family; - return this; - }; - - /** - * Update percentage to `n`. - * - * @param {Number} n - * @return {Progress} for chaining - */ - - Progress.prototype.update = function(n) { - this.percent = n; - return this; - }; - - /** - * Draw on `ctx`. - * - * @param {CanvasRenderingContext2d} ctx - * @return {Progress} for chaining - */ - - Progress.prototype.draw = function(ctx) { - try { - var percent = Math.min(this.percent, 100), - size = this._size, - half = size / 2, - x = half, - y = half, - rad = half - 1, - fontSize = this._fontSize; - - ctx.font = fontSize + 'px ' + this._font; - - var angle = Math.PI * 2 * (percent / 100); - ctx.clearRect(0, 0, size, size); - - // outer circle - ctx.strokeStyle = '#9f9f9f'; - ctx.beginPath(); - ctx.arc(x, y, rad, 0, angle, false); - ctx.stroke(); - - // inner circle - ctx.strokeStyle = '#eee'; - ctx.beginPath(); - ctx.arc(x, y, rad - 1, 0, angle, true); - ctx.stroke(); - - // text - var text = this._text || (percent | 0) + '%', - w = ctx.measureText(text).width; - - ctx.fillText(text, x - w / 2 + 1, y + fontSize / 2 - 1); - } catch (ex) {} //don't fail if we can't render progress - return this; - }; - }); // module: browser/progress.js - - require.register('browser/tty.js', function(module, exports, require) { - exports.isatty = function() { - return true; - }; - - exports.getWindowSize = function() { - if ('innerHeight' in global) { - return [global.innerHeight, global.innerWidth]; - } else { - // In a Web Worker, the DOM Window is not available. - return [640, 480]; - } - }; - }); // module: browser/tty.js - - require.register('context.js', function(module, exports, require) { - /** - * Expose `Context`. - */ - - module.exports = Context; - - /** - * Initialize a new `Context`. - * - * @api private - */ - - function Context() {} - - /** - * Set or get the context `Runnable` to `runnable`. - * - * @param {Runnable} runnable - * @return {Context} - * @api private - */ - - Context.prototype.runnable = function(runnable) { - if (0 == arguments.length) return this._runnable; - this.test = this._runnable = runnable; - return this; - }; - - /** - * Set test timeout `ms`. - * - * @param {Number} ms - * @return {Context} self - * @api private - */ - - Context.prototype.timeout = function(ms) { - if (arguments.length === 0) return this.runnable().timeout(); - this.runnable().timeout(ms); - return this; - }; - - /** - * Set test timeout `enabled`. - * - * @param {Boolean} enabled - * @return {Context} self - * @api private - */ - - Context.prototype.enableTimeouts = function(enabled) { - this.runnable().enableTimeouts(enabled); - return this; - }; - - /** - * Set test slowness threshold `ms`. - * - * @param {Number} ms - * @return {Context} self - * @api private - */ - - Context.prototype.slow = function(ms) { - this.runnable().slow(ms); - return this; - }; - - /** - * Inspect the context void of `._runnable`. - * - * @return {String} - * @api private - */ - - Context.prototype.inspect = function() { - return JSON.stringify( - this, - function(key, val) { - if ('_runnable' == key) return; - if ('test' == key) return; - return val; - }, - 2 - ); - }; - }); // module: context.js - - require.register('hook.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Runnable = require('./runnable'); - - /** - * Expose `Hook`. - */ - - module.exports = Hook; - - /** - * Initialize a new `Hook` with the given `title` and callback `fn`. - * - * @param {String} title - * @param {Function} fn - * @api private - */ - - function Hook(title, fn) { - Runnable.call(this, title, fn); - this.type = 'hook'; - } - - /** - * Inherit from `Runnable.prototype`. - */ - - function F() {} - F.prototype = Runnable.prototype; - Hook.prototype = new F(); - Hook.prototype.constructor = Hook; - - /** - * Get or set the test `err`. - * - * @param {Error} err - * @return {Error} - * @api public - */ - - Hook.prototype.error = function(err) { - if (0 == arguments.length) { - var err = this._error; - this._error = null; - return err; - } - - this._error = err; - }; - }); // module: hook.js - - require.register('interfaces/bdd.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Suite = require('../suite'), - Test = require('../test'), - utils = require('../utils'), - escapeRe = require('browser/escape-string-regexp'); - - /** - * BDD-style interface: - * - * describe('Array', function(){ - * describe('#indexOf()', function(){ - * it('should return -1 when not present', function(){ - * - * }); - * - * it('should return the index when present', function(){ - * - * }); - * }); - * }); - * - */ - - module.exports = function(suite) { - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha) { - /** - * Execute before running tests. - */ - - context.before = function(name, fn) { - suites[0].beforeAll(name, fn); - }; - - /** - * Execute after running tests. - */ - - context.after = function(name, fn) { - suites[0].afterAll(name, fn); - }; - - /** - * Execute before each test case. - */ - - context.beforeEach = function(name, fn) { - suites[0].beforeEach(name, fn); - }; - - /** - * Execute after each test case. - */ - - context.afterEach = function(name, fn) { - suites[0].afterEach(name, fn); - }; - - /** - * Describe a "suite" with the given `title` - * and callback `fn` containing nested suites - * and/or tests. - */ - - context.describe = context.context = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - return suite; - }; - - /** - * Pending describe. - */ - - context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.pending = true; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - }; - - /** - * Exclusive suite. - */ - - context.describe.only = function(title, fn) { - var suite = context.describe(title, fn); - mocha.grep(suite.fullTitle()); - return suite; - }; - - /** - * Describe a specification or test-case - * with the given `title` and callback `fn` - * acting as a thunk. - */ - - context.it = context.specify = function(title, fn) { - var suite = suites[0]; - if (suite.pending) fn = null; - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.it.only = function(title, fn) { - var test = context.it(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - return test; - }; - - /** - * Pending test case. - */ - - context.xit = context.xspecify = context.it.skip = function(title) { - context.it(title); - }; - }); - }; - }); // module: interfaces/bdd.js - - require.register('interfaces/exports.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Suite = require('../suite'), - Test = require('../test'); - - /** - * TDD-style interface: - * - * exports.Array = { - * '#indexOf()': { - * 'should return -1 when the value is not present': function(){ - * - * }, - * - * 'should return the correct index when the value is present': function(){ - * - * } - * } - * }; - * - */ - - module.exports = function(suite) { - var suites = [suite]; - - suite.on('require', visit); - - function visit(obj, file) { - var suite; - for (var key in obj) { - if ('function' == typeof obj[key]) { - var fn = obj[key]; - switch (key) { - case 'before': - suites[0].beforeAll(fn); - break; - case 'after': - suites[0].afterAll(fn); - break; - case 'beforeEach': - suites[0].beforeEach(fn); - break; - case 'afterEach': - suites[0].afterEach(fn); - break; - default: - var test = new Test(key, fn); - test.file = file; - suites[0].addTest(test); - } - } else { - suite = Suite.create(suites[0], key); - suites.unshift(suite); - visit(obj[key]); - suites.shift(); - } - } - } - }; - }); // module: interfaces/exports.js - - require.register('interfaces/index.js', function(module, exports, require) { - exports.bdd = require('./bdd'); - exports.tdd = require('./tdd'); - exports.qunit = require('./qunit'); - exports.exports = require('./exports'); - }); // module: interfaces/index.js - - require.register('interfaces/qunit.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Suite = require('../suite'), - Test = require('../test'), - escapeRe = require('browser/escape-string-regexp'), - utils = require('../utils'); - - /** - * QUnit-style interface: - * - * suite('Array'); - * - * test('#length', function(){ - * var arr = [1,2,3]; - * ok(arr.length == 3); - * }); - * - * test('#indexOf()', function(){ - * var arr = [1,2,3]; - * ok(arr.indexOf(1) == 0); - * ok(arr.indexOf(2) == 1); - * ok(arr.indexOf(3) == 2); - * }); - * - * suite('String'); - * - * test('#length', function(){ - * ok('foo'.length == 3); - * }); - * - */ - - module.exports = function(suite) { - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha) { - /** - * Execute before running tests. - */ - - context.before = function(name, fn) { - suites[0].beforeAll(name, fn); - }; - - /** - * Execute after running tests. - */ - - context.after = function(name, fn) { - suites[0].afterAll(name, fn); - }; - - /** - * Execute before each test case. - */ - - context.beforeEach = function(name, fn) { - suites[0].beforeEach(name, fn); - }; - - /** - * Execute after each test case. - */ - - context.afterEach = function(name, fn) { - suites[0].afterEach(name, fn); - }; - - /** - * Describe a "suite" with the given `title`. - */ - - context.suite = function(title) { - if (suites.length > 1) suites.shift(); - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - return suite; - }; - - /** - * Exclusive test-case. - */ - - context.suite.only = function(title, fn) { - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; - - /** - * Describe a specification or test-case - * with the given `title` and callback `fn` - * acting as a thunk. - */ - - context.test = function(title, fn) { - var test = new Test(title, fn); - test.file = file; - suites[0].addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; - - /** - * Pending test case. - */ - - context.test.skip = function(title) { - context.test(title); - }; - }); - }; - }); // module: interfaces/qunit.js - - require.register('interfaces/tdd.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Suite = require('../suite'), - Test = require('../test'), - escapeRe = require('browser/escape-string-regexp'), - utils = require('../utils'); - - /** - * TDD-style interface: - * - * suite('Array', function(){ - * suite('#indexOf()', function(){ - * suiteSetup(function(){ - * - * }); - * - * test('should return -1 when not present', function(){ - * - * }); - * - * test('should return the index when present', function(){ - * - * }); - * - * suiteTeardown(function(){ - * - * }); - * }); - * }); - * - */ - - module.exports = function(suite) { - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha) { - /** - * Execute before each test case. - */ - - context.setup = function(name, fn) { - suites[0].beforeEach(name, fn); - }; - - /** - * Execute after each test case. - */ - - context.teardown = function(name, fn) { - suites[0].afterEach(name, fn); - }; - - /** - * Execute before the suite. - */ - - context.suiteSetup = function(name, fn) { - suites[0].beforeAll(name, fn); - }; - - /** - * Execute after the suite. - */ - - context.suiteTeardown = function(name, fn) { - suites[0].afterAll(name, fn); - }; - - /** - * Describe a "suite" with the given `title` - * and callback `fn` containing nested suites - * and/or tests. - */ - - context.suite = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - return suite; - }; - - /** - * Pending suite. - */ - context.suite.skip = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.pending = true; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - }; - - /** - * Exclusive test-case. - */ - - context.suite.only = function(title, fn) { - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; - - /** - * Describe a specification or test-case - * with the given `title` and callback `fn` - * acting as a thunk. - */ - - context.test = function(title, fn) { - var suite = suites[0]; - if (suite.pending) fn = null; - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; - - /** - * Pending test case. - */ - - context.test.skip = function(title) { - context.test(title); - }; - }); - }; - }); // module: interfaces/tdd.js - - require.register('mocha.js', function(module, exports, require) { - /*! - * mocha - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - - /** - * Module dependencies. - */ - - var path = require('browser/path'), - escapeRe = require('browser/escape-string-regexp'), - utils = require('./utils'); - - /** - * Expose `Mocha`. - */ - - exports = module.exports = Mocha; - - /** - * To require local UIs and reporters when running in node. - */ - - if (typeof process !== 'undefined' && typeof process.cwd === 'function') { - var join = path.join, - cwd = process.cwd(); - module.paths.push(cwd, join(cwd, 'node_modules')); - } - - /** - * Expose internals. - */ - - exports.utils = utils; - exports.interfaces = require('./interfaces'); - exports.reporters = require('./reporters'); - exports.Runnable = require('./runnable'); - exports.Context = require('./context'); - exports.Runner = require('./runner'); - exports.Suite = require('./suite'); - exports.Hook = require('./hook'); - exports.Test = require('./test'); - - /** - * Return image `name` path. - * - * @param {String} name - * @return {String} - * @api private - */ - - function image(name) { - return __dirname + '/../images/' + name + '.png'; - } - - /** - * Setup mocha with `options`. - * - * Options: - * - * - `ui` name "bdd", "tdd", "exports" etc - * - `reporter` reporter instance, defaults to `mocha.reporters.spec` - * - `globals` array of accepted globals - * - `timeout` timeout in milliseconds - * - `bail` bail on the first test failure - * - `slow` milliseconds to wait before considering a test slow - * - `ignoreLeaks` ignore global leaks - * - `grep` string or regexp to filter tests with - * - * @param {Object} options - * @api public - */ - - function Mocha(options) { - options = options || {}; - this.files = []; - this.options = options; - this.grep(options.grep); - this.suite = new exports.Suite('', new exports.Context()); - this.ui(options.ui); - this.bail(options.bail); - this.reporter(options.reporter); - if (null != options.timeout) this.timeout(options.timeout); - this.useColors(options.useColors); - if (options.enableTimeouts !== null) this.enableTimeouts(options.enableTimeouts); - if (options.slow) this.slow(options.slow); - - this.suite.on('pre-require', function(context) { - exports.afterEach = context.afterEach || context.teardown; - exports.after = context.after || context.suiteTeardown; - exports.beforeEach = context.beforeEach || context.setup; - exports.before = context.before || context.suiteSetup; - exports.describe = context.describe || context.suite; - exports.it = context.it || context.test; - exports.setup = context.setup || context.beforeEach; - exports.suiteSetup = context.suiteSetup || context.before; - exports.suiteTeardown = context.suiteTeardown || context.after; - exports.suite = context.suite || context.describe; - exports.teardown = context.teardown || context.afterEach; - exports.test = context.test || context.it; - }); - } - - /** - * Enable or disable bailing on the first failure. - * - * @param {Boolean} [bail] - * @api public - */ - - Mocha.prototype.bail = function(bail) { - if (0 == arguments.length) bail = true; - this.suite.bail(bail); - return this; - }; - - /** - * Add test `file`. - * - * @param {String} file - * @api public - */ - - Mocha.prototype.addFile = function(file) { - this.files.push(file); - return this; - }; - - /** - * Set reporter to `reporter`, defaults to "spec". - * - * @param {String|Function} reporter name or constructor - * @api public - */ - - Mocha.prototype.reporter = function(reporter) { - if ('function' == typeof reporter) { - this._reporter = reporter; - } else { - reporter = reporter || 'spec'; - var _reporter; - try { - _reporter = require('./reporters/' + reporter); - } catch (err) {} - if (!_reporter) - try { - _reporter = require(reporter); - } catch (err) {} - if (!_reporter && reporter === 'teamcity') - console.warn( - 'The Teamcity reporter was moved to a package named ' + - 'mocha-teamcity-reporter ' + - '(https://npmjs.org/package/mocha-teamcity-reporter).' - ); - if (!_reporter) throw new Error('invalid reporter "' + reporter + '"'); - this._reporter = _reporter; - } - return this; - }; - - /** - * Set test UI `name`, defaults to "bdd". - * - * @param {String} bdd - * @api public - */ - - Mocha.prototype.ui = function(name) { - name = name || 'bdd'; - this._ui = exports.interfaces[name]; - if (!this._ui) - try { - this._ui = require(name); - } catch (err) {} - if (!this._ui) throw new Error('invalid interface "' + name + '"'); - this._ui = this._ui(this.suite); - return this; - }; - - /** - * Load registered files. - * - * @api private - */ - - Mocha.prototype.loadFiles = function(fn) { - var self = this; - var suite = this.suite; - var pending = this.files.length; - this.files.forEach(function(file) { - file = path.resolve(file); - suite.emit('pre-require', global, file, self); - suite.emit('require', require(file), file, self); - suite.emit('post-require', global, file, self); - --pending || (fn && fn()); - }); - }; - - /** - * Enable growl support. - * - * @api private - */ - - Mocha.prototype._growl = function(runner, reporter) { - var notify = require('growl'); - - runner.on('end', function() { - var stats = reporter.stats; - if (stats.failures) { - var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, {name: 'mocha', title: 'Failed', image: image('error')}); - } else { - notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { - name: 'mocha', - title: 'Passed', - image: image('ok') - }); - } - }); - }; - - /** - * Add regexp to grep, if `re` is a string it is escaped. - * - * @param {RegExp|String} re - * @return {Mocha} - * @api public - */ - - Mocha.prototype.grep = function(re) { - this.options.grep = 'string' == typeof re ? new RegExp(escapeRe(re)) : re; - return this; - }; - - /** - * Invert `.grep()` matches. - * - * @return {Mocha} - * @api public - */ - - Mocha.prototype.invert = function() { - this.options.invert = true; - return this; - }; - - /** - * Ignore global leaks. - * - * @param {Boolean} ignore - * @return {Mocha} - * @api public - */ - - Mocha.prototype.ignoreLeaks = function(ignore) { - this.options.ignoreLeaks = !!ignore; - return this; - }; - - /** - * Enable global leak checking. - * - * @return {Mocha} - * @api public - */ - - Mocha.prototype.checkLeaks = function() { - this.options.ignoreLeaks = false; - return this; - }; - - /** - * Enable growl support. - * - * @return {Mocha} - * @api public - */ - - Mocha.prototype.growl = function() { - this.options.growl = true; - return this; - }; - - /** - * Ignore `globals` array or string. - * - * @param {Array|String} globals - * @return {Mocha} - * @api public - */ - - Mocha.prototype.globals = function(globals) { - this.options.globals = (this.options.globals || []).concat(globals); - return this; - }; - - /** - * Emit color output. - * - * @param {Boolean} colors - * @return {Mocha} - * @api public - */ - - Mocha.prototype.useColors = function(colors) { - this.options.useColors = arguments.length && colors != undefined ? colors : true; - return this; - }; - - /** - * Use inline diffs rather than +/-. - * - * @param {Boolean} inlineDiffs - * @return {Mocha} - * @api public - */ - - Mocha.prototype.useInlineDiffs = function(inlineDiffs) { - this.options.useInlineDiffs = - arguments.length && inlineDiffs != undefined ? inlineDiffs : false; - return this; - }; - - /** - * Set the timeout in milliseconds. - * - * @param {Number} timeout - * @return {Mocha} - * @api public - */ - - Mocha.prototype.timeout = function(timeout) { - this.suite.timeout(timeout); - return this; - }; - - /** - * Set slowness threshold in milliseconds. - * - * @param {Number} slow - * @return {Mocha} - * @api public - */ - - Mocha.prototype.slow = function(slow) { - this.suite.slow(slow); - return this; - }; - - /** - * Enable timeouts. - * - * @param {Boolean} enabled - * @return {Mocha} - * @api public - */ - - Mocha.prototype.enableTimeouts = function(enabled) { - this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); - return this; - }; - - /** - * Makes all tests async (accepting a callback) - * - * @return {Mocha} - * @api public - */ - - Mocha.prototype.asyncOnly = function() { - this.options.asyncOnly = true; - return this; - }; - - /** - * Disable syntax highlighting (in browser). - * @returns {Mocha} - * @api public - */ - Mocha.prototype.noHighlighting = function() { - this.options.noHighlighting = true; - return this; - }; - - /** - * Run tests and invoke `fn()` when complete. - * - * @param {Function} fn - * @return {Runner} - * @api public - */ - - Mocha.prototype.run = function(fn) { - if (this.files.length) this.loadFiles(); - var suite = this.suite; - var options = this.options; - options.files = this.files; - var runner = new exports.Runner(suite); - var reporter = new this._reporter(runner, options); - runner.ignoreLeaks = false !== options.ignoreLeaks; - runner.asyncOnly = options.asyncOnly; - if (options.grep) runner.grep(options.grep, options.invert); - if (options.globals) runner.globals(options.globals); - if (options.growl) this._growl(runner, reporter); - exports.reporters.Base.useColors = options.useColors; - exports.reporters.Base.inlineDiffs = options.useInlineDiffs; - return runner.run(fn); - }; - }); // module: mocha.js - - require.register('ms.js', function(module, exports, require) { - /** - * Helpers. - */ - - var s = 1000; - var m = s * 60; - var h = m * 60; - var d = h * 24; - var y = d * 365.25; - - /** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} options - * @return {String|Number} - * @api public - */ - - module.exports = function(val, options) { - options = options || {}; - if ('string' == typeof val) return parse(val); - return options['long'] ? longFormat(val) : shortFormat(val); - }; - - /** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - - function parse(str) { - var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec( - str - ); - if (!match) return; - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - } - } - - /** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - function shortFormat(ms) { - if (ms >= d) return Math.round(ms / d) + 'd'; - if (ms >= h) return Math.round(ms / h) + 'h'; - if (ms >= m) return Math.round(ms / m) + 'm'; - if (ms >= s) return Math.round(ms / s) + 's'; - return ms + 'ms'; - } - - /** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - - function longFormat(ms) { - return ( - plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms' - ); - } - - /** - * Pluralization helper. - */ - - function plural(ms, n, name) { - if (ms < n) return; - if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; - return Math.ceil(ms / n) + ' ' + name + 's'; - } - }); // module: ms.js - - require.register('reporters/base.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var tty = require('browser/tty'), - diff = require('browser/diff'), - ms = require('../ms'), - utils = require('../utils'); - - /** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - - var Date = global.Date, - setTimeout = global.setTimeout, - setInterval = global.setInterval, - clearTimeout = global.clearTimeout, - clearInterval = global.clearInterval; - - /** - * Check if both stdio streams are associated with a tty. - */ - - var isatty = tty.isatty(1) && tty.isatty(2); - - /** - * Expose `Base`. - */ - - exports = module.exports = Base; - - /** - * Enable coloring by default. - */ - - exports.useColors = isatty || process.env.MOCHA_COLORS !== undefined; - - /** - * Inline diffs instead of +/- - */ - - exports.inlineDiffs = false; - - /** - * Default color map. - */ - - exports.colors = { - pass: 90, - fail: 31, - 'bright pass': 92, - 'bright fail': 91, - 'bright yellow': 93, - pending: 36, - suite: 0, - 'error title': 0, - 'error message': 31, - 'error stack': 90, - checkmark: 32, - fast: 90, - medium: 33, - slow: 31, - green: 32, - light: 90, - 'diff gutter': 90, - 'diff added': 42, - 'diff removed': 41 - }; - - /** - * Default symbol map. - */ - - exports.symbols = { - ok: '✓', - err: '✖', - dot: '․' - }; - - // With node.js on Windows: use symbols available in terminal default fonts - if ('win32' == process.platform) { - exports.symbols.ok = '\u221A'; - exports.symbols.err = '\u00D7'; - exports.symbols.dot = '.'; - } - - /** - * Color `str` with the given `type`, - * allowing colors to be disabled, - * as well as user-defined color - * schemes. - * - * @param {String} type - * @param {String} str - * @return {String} - * @api private - */ - - var color = (exports.color = function(type, str) { - if (!exports.useColors) return str; - return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; - }); - - /** - * Expose term window size, with some - * defaults for when stderr is not a tty. - */ - - exports.window = { - width: isatty - ? process.stdout.getWindowSize - ? process.stdout.getWindowSize(1)[0] - : tty.getWindowSize()[1] - : 75 - }; - - /** - * Expose some basic cursor interactions - * that are common among reporters. - */ - - exports.cursor = { - hide: function() { - isatty && process.stdout.write('\u001b[?25l'); - }, - - show: function() { - isatty && process.stdout.write('\u001b[?25h'); - }, - - deleteLine: function() { - isatty && process.stdout.write('\u001b[2K'); - }, - - beginningOfLine: function() { - isatty && process.stdout.write('\u001b[0G'); - }, - - CR: function() { - if (isatty) { - exports.cursor.deleteLine(); - exports.cursor.beginningOfLine(); - } else { - process.stdout.write('\r'); - } - } - }; - - /** - * Outut the given `failures` as a list. - * - * @param {Array} failures - * @api public - */ - - exports.list = function(failures) { - console.error(); - failures.forEach(function(test, i) { - // format - var fmt = - color('error title', ' %s) %s:\n') + - color('error message', ' %s') + - color('error stack', '\n%s\n'); - - // msg - var err = test.err, - message = err.message || '', - stack = err.stack || message, - index = stack.indexOf(message) + message.length, - msg = stack.slice(0, index), - actual = err.actual, - expected = err.expected, - escape = true; - - // uncaught - if (err.uncaught) { - msg = 'Uncaught ' + msg; - } - - // explicitly show diff - if (err.showDiff && sameType(actual, expected)) { - escape = false; - err.actual = actual = utils.stringify(actual); - err.expected = expected = utils.stringify(expected); - } - - // actual / expected diff - if (err.showDiff && 'string' == typeof actual && 'string' == typeof expected) { - fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); - var match = message.match(/^([^:]+): expected/); - msg = '\n ' + color('error message', match ? match[1] : msg); - - if (exports.inlineDiffs) { - msg += inlineDiff(err, escape); - } else { - msg += unifiedDiff(err, escape); - } - } - - // indent stack trace without msg - stack = stack.slice(index ? index + 1 : index).replace(/^/gm, ' '); - - console.error(fmt, i + 1, test.fullTitle(), msg, stack); - }); - }; - - /** - * Initialize a new `Base` reporter. - * - * All other reporters generally - * inherit from this reporter, providing - * stats such as test duration, number - * of tests passed / failed etc. - * - * @param {Runner} runner - * @api public - */ - - function Base(runner) { - var self = this, - stats = (this.stats = {suites: 0, tests: 0, passes: 0, pending: 0, failures: 0}), - failures = (this.failures = []); - - if (!runner) return; - this.runner = runner; - - runner.stats = stats; - - runner.on('start', function() { - stats.start = new Date(); - }); - - runner.on('suite', function(suite) { - stats.suites = stats.suites || 0; - suite.root || stats.suites++; - }); - - runner.on('test end', function(test) { - stats.tests = stats.tests || 0; - stats.tests++; - }); - - runner.on('pass', function(test) { - stats.passes = stats.passes || 0; - - var medium = test.slow() / 2; - test.speed = - test.duration > test.slow() - ? 'slow' - : test.duration > medium ? 'medium' : 'fast'; - - stats.passes++; - }); - - runner.on('fail', function(test, err) { - stats.failures = stats.failures || 0; - stats.failures++; - test.err = err; - failures.push(test); - }); - - runner.on('end', function() { - stats.end = new Date(); - stats.duration = new Date() - stats.start; - }); - - runner.on('pending', function() { - stats.pending++; - }); - } - - /** - * Output common epilogue used by many of - * the bundled reporters. - * - * @api public - */ - - Base.prototype.epilogue = function() { - var stats = this.stats; - var tests; - var fmt; - - console.log(); - - // passes - fmt = - color('bright pass', ' ') + color('green', ' %d passing') + color('light', ' (%s)'); - - console.log(fmt, stats.passes || 0, ms(stats.duration)); - - // pending - if (stats.pending) { - fmt = color('pending', ' ') + color('pending', ' %d pending'); - - console.log(fmt, stats.pending); - } - - // failures - if (stats.failures) { - fmt = color('fail', ' %d failing'); - - console.error(fmt, stats.failures); - - Base.list(this.failures); - console.error(); - } - - console.log(); - }; - - /** - * Pad the given `str` to `len`. - * - * @param {String} str - * @param {String} len - * @return {String} - * @api private - */ - - function pad(str, len) { - str = String(str); - return Array(len - str.length + 1).join(' ') + str; - } - - /** - * Returns an inline diff between 2 strings with coloured ANSI output - * - * @param {Error} Error with actual/expected - * @return {String} Diff - * @api private - */ - - function inlineDiff(err, escape) { - var msg = errorDiff(err, 'WordsWithSpace', escape); - - // linenos - var lines = msg.split('\n'); - if (lines.length > 4) { - var width = String(lines.length).length; - msg = lines - .map(function(str, i) { - return pad(++i, width) + ' |' + ' ' + str; - }) - .join('\n'); - } - - // legend - msg = - '\n' + - color('diff removed', 'actual') + - ' ' + - color('diff added', 'expected') + - '\n\n' + - msg + - '\n'; - - // indent - msg = msg.replace(/^/gm, ' '); - return msg; - } - - /** - * Returns a unified diff between 2 strings - * - * @param {Error} Error with actual/expected - * @return {String} Diff - * @api private - */ - - function unifiedDiff(err, escape) { - var indent = ' '; - function cleanUp(line) { - if (escape) { - line = escapeInvisibles(line); - } - if (line[0] === '+') return indent + colorLines('diff added', line); - if (line[0] === '-') return indent + colorLines('diff removed', line); - if (line.match(/\@\@/)) return null; - if (line.match(/\\ No newline/)) return null; - else return indent + line; - } - function notBlank(line) { - return line != null; - } - msg = diff.createPatch('string', err.actual, err.expected); - var lines = msg.split('\n').splice(4); - return ( - '\n ' + - colorLines('diff added', '+ expected') + - ' ' + - colorLines('diff removed', '- actual') + - '\n\n' + - lines.map(cleanUp).filter(notBlank).join('\n') - ); - } - - /** - * Return a character diff for `err`. - * - * @param {Error} err - * @return {String} - * @api private - */ - - function errorDiff(err, type, escape) { - var actual = escape ? escapeInvisibles(err.actual) : err.actual; - var expected = escape ? escapeInvisibles(err.expected) : err.expected; - return diff - ['diff' + type](actual, expected) - .map(function(str) { - if (str.added) return colorLines('diff added', str.value); - if (str.removed) return colorLines('diff removed', str.value); - return str.value; - }) - .join(''); - } - - /** - * Returns a string with all invisible characters in plain text - * - * @param {String} line - * @return {String} - * @api private - */ - function escapeInvisibles(line) { - return line.replace(/\t/g, '').replace(/\r/g, '').replace(/\n/g, '\n'); - } - - /** - * Color lines for `str`, using the color `name`. - * - * @param {String} name - * @param {String} str - * @return {String} - * @api private - */ - - function colorLines(name, str) { - return str - .split('\n') - .map(function(str) { - return color(name, str); - }) - .join('\n'); - } - - /** - * Check that a / b have the same type. - * - * @param {Object} a - * @param {Object} b - * @return {Boolean} - * @api private - */ - - function sameType(a, b) { - a = Object.prototype.toString.call(a); - b = Object.prototype.toString.call(b); - return a == b; - } - }); // module: reporters/base.js - - require.register('reporters/doc.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - utils = require('../utils'); - - /** - * Expose `Doc`. - */ - - exports = module.exports = Doc; - - /** - * Initialize a new `Doc` reporter. - * - * @param {Runner} runner - * @api public - */ - - function Doc(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - total = runner.total, - indents = 2; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('suite', function(suite) { - if (suite.root) return; - ++indents; - console.log('%s
          ', indent()); - ++indents; - console.log('%s

          %s

          ', indent(), utils.escape(suite.title)); - console.log('%s
          ', indent()); - }); - - runner.on('suite end', function(suite) { - if (suite.root) return; - console.log('%s
          ', indent()); - --indents; - console.log('%s
          ', indent()); - --indents; - }); - - runner.on('pass', function(test) { - console.log('%s
          %s
          ', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.fn.toString())); - console.log('%s
          %s
          ', indent(), code); - }); - - runner.on('fail', function(test, err) { - console.log('%s
          %s
          ', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.fn.toString())); - console.log( - '%s
          %s
          ', - indent(), - code - ); - console.log('%s
          %s
          ', indent(), utils.escape(err)); - }); - } - }); // module: reporters/doc.js - - require.register('reporters/dot.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - color = Base.color; - - /** - * Expose `Dot`. - */ - - exports = module.exports = Dot; - - /** - * Initialize a new `Dot` matrix test reporter. - * - * @param {Runner} runner - * @api public - */ - - function Dot(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - width = (Base.window.width * 0.75) | 0, - n = -1; - - runner.on('start', function() { - process.stdout.write('\n '); - }); - - runner.on('pending', function(test) { - if (++n % width == 0) process.stdout.write('\n '); - process.stdout.write(color('pending', Base.symbols.dot)); - }); - - runner.on('pass', function(test) { - if (++n % width == 0) process.stdout.write('\n '); - if ('slow' == test.speed) { - process.stdout.write(color('bright yellow', Base.symbols.dot)); - } else { - process.stdout.write(color(test.speed, Base.symbols.dot)); - } - }); - - runner.on('fail', function(test, err) { - if (++n % width == 0) process.stdout.write('\n '); - process.stdout.write(color('fail', Base.symbols.dot)); - }); - - runner.on('end', function() { - console.log(); - self.epilogue(); - }); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - Dot.prototype = new F(); - Dot.prototype.constructor = Dot; - }); // module: reporters/dot.js - - require.register('reporters/html-cov.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var JSONCov = require('./json-cov'), - fs = require('browser/fs'); - - /** - * Expose `HTMLCov`. - */ - - exports = module.exports = HTMLCov; - - /** - * Initialize a new `JsCoverage` reporter. - * - * @param {Runner} runner - * @api public - */ - - function HTMLCov(runner) { - var jade = require('jade'), - file = __dirname + '/templates/coverage.jade', - str = fs.readFileSync(file, 'utf8'), - fn = jade.compile(str, {filename: file}), - self = this; - - JSONCov.call(this, runner, false); - - runner.on('end', function() { - process.stdout.write( - fn({ - cov: self.cov, - coverageClass: coverageClass - }) - ); - }); - } - - /** - * Return coverage class for `n`. - * - * @return {String} - * @api private - */ - - function coverageClass(n) { - if (n >= 75) return 'high'; - if (n >= 50) return 'medium'; - if (n >= 25) return 'low'; - return 'terrible'; - } - }); // module: reporters/html-cov.js - - require.register('reporters/html.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - utils = require('../utils'), - Progress = require('../browser/progress'), - escape = utils.escape; - - /** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - - var Date = global.Date, - setTimeout = global.setTimeout, - setInterval = global.setInterval, - clearTimeout = global.clearTimeout, - clearInterval = global.clearInterval; - - /** - * Expose `HTML`. - */ - - exports = module.exports = HTML; - - /** - * Stats template. - */ - - var statsTemplate = - ''; - - /** - * Initialize a new `HTML` reporter. - * - * @param {Runner} runner - * @api public - */ - - function HTML(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - total = runner.total, - stat = fragment(statsTemplate), - items = stat.getElementsByTagName('li'), - passes = items[1].getElementsByTagName('em')[0], - passesLink = items[1].getElementsByTagName('a')[0], - failures = items[2].getElementsByTagName('em')[0], - failuresLink = items[2].getElementsByTagName('a')[0], - duration = items[3].getElementsByTagName('em')[0], - canvas = stat.getElementsByTagName('canvas')[0], - report = fragment('
            '), - stack = [report], - progress, - ctx, - root = document.getElementById('mocha'); - - if (canvas.getContext) { - var ratio = window.devicePixelRatio || 1; - canvas.style.width = canvas.width; - canvas.style.height = canvas.height; - canvas.width *= ratio; - canvas.height *= ratio; - ctx = canvas.getContext('2d'); - ctx.scale(ratio, ratio); - progress = new Progress(); - } - - if (!root) return error('#mocha div missing, add it to your document'); - - // pass toggle - on(passesLink, 'click', function() { - unhide(); - var name = /pass/.test(report.className) ? '' : ' pass'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) hideSuitesWithout('test pass'); - }); - - // failure toggle - on(failuresLink, 'click', function() { - unhide(); - var name = /fail/.test(report.className) ? '' : ' fail'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) hideSuitesWithout('test fail'); - }); - - root.appendChild(stat); - root.appendChild(report); - - if (progress) progress.size(40); - - runner.on('suite', function(suite) { - if (suite.root) return; - - // suite - var url = self.suiteURL(suite); - var el = fragment( - '
          • %s

          • ', - url, - escape(suite.title) - ); - - // container - stack[0].appendChild(el); - stack.unshift(document.createElement('ul')); - el.appendChild(stack[0]); - }); - - runner.on('suite end', function(suite) { - if (suite.root) return; - stack.shift(); - }); - - runner.on('fail', function(test, err) { - if ('hook' == test.type) runner.emit('test end', test); - }); - - runner.on('test end', function(test) { - // TODO: add to stats - var percent = (stats.tests / this.total * 100) | 0; - if (progress) progress.update(percent).draw(ctx); - - // update stats - var ms = new Date() - stats.start; - text(passes, stats.passes); - text(failures, stats.failures); - text(duration, (ms / 1000).toFixed(2)); - - // test - if ('passed' == test.state) { - var url = self.testURL(test); - var el = fragment( - '
          • %e%ems

          • ', - test.speed, - test.title, - test.duration, - url - ); - } else if (test.pending) { - var el = fragment('
          • %e

          • ', test.title); - } else { - var el = fragment( - '
          • %e

          • ', - test.title, - encodeURIComponent(test.fullTitle()) - ); - var str = test.err.stack || test.err.toString(); - - // FF / Opera do not add the message - if (!~str.indexOf(test.err.message)) { - str = test.err.message + '\n' + str; - } - - // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we - // check for the result of the stringifying. - if ('[object Error]' == str) str = test.err.message; - - // Safari doesn't give you a stack. Let's at least provide a source line. - if (!test.err.stack && test.err.sourceURL && test.err.line !== undefined) { - str += '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; - } - - el.appendChild(fragment('
            %e
            ', str)); - } - - // toggle code - // TODO: defer - if (!test.pending) { - var h2 = el.getElementsByTagName('h2')[0]; - - on(h2, 'click', function() { - pre.style.display = 'none' == pre.style.display ? 'block' : 'none'; - }); - - var pre = fragment( - '
            %e
            ', - utils.clean(test.fn.toString()) - ); - el.appendChild(pre); - pre.style.display = 'none'; - } - - // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. - if (stack[0]) stack[0].appendChild(el); - }); - } - - /** - * Provide suite URL - * - * @param {Object} [suite] - */ - - HTML.prototype.suiteURL = function(suite) { - return '?grep=' + encodeURIComponent(suite.fullTitle()); - }; - - /** - * Provide test URL - * - * @param {Object} [test] - */ - - HTML.prototype.testURL = function(test) { - return '?grep=' + encodeURIComponent(test.fullTitle()); - }; - - /** - * Display error `msg`. - */ - - function error(msg) { - document.body.appendChild(fragment('
            %s
            ', msg)); - } - - /** - * Return a DOM fragment from `html`. - */ - - function fragment(html) { - var args = arguments, - div = document.createElement('div'), - i = 1; - - div.innerHTML = html.replace(/%([se])/g, function(_, type) { - switch (type) { - case 's': - return String(args[i++]); - case 'e': - return escape(args[i++]); - } - }); - - return div.firstChild; - } - - /** - * Check for suites that do not have elements - * with `classname`, and hide them. - */ - - function hideSuitesWithout(classname) { - var suites = document.getElementsByClassName('suite'); - for (var i = 0; i < suites.length; i++) { - var els = suites[i].getElementsByClassName(classname); - if (0 == els.length) suites[i].className += ' hidden'; - } - } - - /** - * Unhide .hidden suites. - */ - - function unhide() { - var els = document.getElementsByClassName('suite hidden'); - for (var i = 0; i < els.length; ++i) { - els[i].className = els[i].className.replace('suite hidden', 'suite'); - } - } - - /** - * Set `el` text to `str`. - */ - - function text(el, str) { - if (el.textContent) { - el.textContent = str; - } else { - el.innerText = str; - } - } - - /** - * Listen on `event` with callback `fn`. - */ - - function on(el, event, fn) { - if (el.addEventListener) { - el.addEventListener(event, fn, false); - } else { - el.attachEvent('on' + event, fn); - } - } - }); // module: reporters/html.js - - require.register('reporters/index.js', function(module, exports, require) { - exports.Base = require('./base'); - exports.Dot = require('./dot'); - exports.Doc = require('./doc'); - exports.TAP = require('./tap'); - exports.JSON = require('./json'); - exports.HTML = require('./html'); - exports.List = require('./list'); - exports.Min = require('./min'); - exports.Spec = require('./spec'); - exports.Nyan = require('./nyan'); - exports.XUnit = require('./xunit'); - exports.Markdown = require('./markdown'); - exports.Progress = require('./progress'); - exports.Landing = require('./landing'); - exports.JSONCov = require('./json-cov'); - exports.HTMLCov = require('./html-cov'); - exports.JSONStream = require('./json-stream'); - }); // module: reporters/index.js - - require.register('reporters/json-cov.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'); - - /** - * Expose `JSONCov`. - */ - - exports = module.exports = JSONCov; - - /** - * Initialize a new `JsCoverage` reporter. - * - * @param {Runner} runner - * @param {Boolean} output - * @api public - */ - - function JSONCov(runner, output) { - var self = this, - output = 1 == arguments.length ? true : output; - - Base.call(this, runner); - - var tests = [], - failures = [], - passes = []; - - runner.on('test end', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - passes.push(test); - }); - - runner.on('fail', function(test) { - failures.push(test); - }); - - runner.on('end', function() { - var cov = global._$jscoverage || {}; - var result = (self.cov = map(cov)); - result.stats = self.stats; - result.tests = tests.map(clean); - result.failures = failures.map(clean); - result.passes = passes.map(clean); - if (!output) return; - process.stdout.write(JSON.stringify(result, null, 2)); - }); - } - - /** - * Map jscoverage data to a JSON structure - * suitable for reporting. - * - * @param {Object} cov - * @return {Object} - * @api private - */ - - function map(cov) { - var ret = { - instrumentation: 'node-jscoverage', - sloc: 0, - hits: 0, - misses: 0, - coverage: 0, - files: [] - }; - - for (var filename in cov) { - var data = coverage(filename, cov[filename]); - ret.files.push(data); - ret.hits += data.hits; - ret.misses += data.misses; - ret.sloc += data.sloc; - } - - ret.files.sort(function(a, b) { - return a.filename.localeCompare(b.filename); - }); - - if (ret.sloc > 0) { - ret.coverage = ret.hits / ret.sloc * 100; - } - - return ret; - } - - /** - * Map jscoverage data for a single source file - * to a JSON structure suitable for reporting. - * - * @param {String} filename name of the source file - * @param {Object} data jscoverage coverage data - * @return {Object} - * @api private - */ - - function coverage(filename, data) { - var ret = { - filename: filename, - coverage: 0, - hits: 0, - misses: 0, - sloc: 0, - source: {} - }; - - data.source.forEach(function(line, num) { - num++; - - if (data[num] === 0) { - ret.misses++; - ret.sloc++; - } else if (data[num] !== undefined) { - ret.hits++; - ret.sloc++; - } - - ret.source[num] = { - source: line, - coverage: data[num] === undefined ? '' : data[num] - }; - }); - - ret.coverage = ret.hits / ret.sloc * 100; - - return ret; - } - - /** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @param {Object} test - * @return {Object} - * @api private - */ - - function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration - }; - } - }); // module: reporters/json-cov.js - - require.register('reporters/json-stream.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - color = Base.color; - - /** - * Expose `List`. - */ - - exports = module.exports = List; - - /** - * Initialize a new `List` test reporter. - * - * @param {Runner} runner - * @api public - */ - - function List(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - total = runner.total; - - runner.on('start', function() { - console.log(JSON.stringify(['start', {total: total}])); - }); - - runner.on('pass', function(test) { - console.log(JSON.stringify(['pass', clean(test)])); - }); - - runner.on('fail', function(test, err) { - console.log(JSON.stringify(['fail', clean(test)])); - }); - - runner.on('end', function() { - process.stdout.write(JSON.stringify(['end', self.stats])); - }); - } - - /** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @param {Object} test - * @return {Object} - * @api private - */ - - function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration - }; - } - }); // module: reporters/json-stream.js - - require.register('reporters/json.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `JSON`. - */ - - exports = module.exports = JSONReporter; - - /** - * Initialize a new `JSON` reporter. - * - * @param {Runner} runner - * @api public - */ - - function JSONReporter(runner) { - var self = this; - Base.call(this, runner); - - var tests = [], - pending = [], - failures = [], - passes = []; - - runner.on('test end', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - passes.push(test); - }); - - runner.on('fail', function(test) { - failures.push(test); - }); - - runner.on('pending', function(test) { - pending.push(test); - }); - - runner.on('end', function() { - var obj = { - stats: self.stats, - tests: tests.map(clean), - pending: pending.map(clean), - failures: failures.map(clean), - passes: passes.map(clean) - }; - - runner.testResults = obj; - - process.stdout.write(JSON.stringify(obj, null, 2)); - }); - } - - /** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @param {Object} test - * @return {Object} - * @api private - */ - - function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - err: errorJSON(test.err || {}) - }; - } - - /** - * Transform `error` into a JSON object. - * @param {Error} err - * @return {Object} - */ - - function errorJSON(err) { - var res = {}; - Object.getOwnPropertyNames(err).forEach(function(key) { - res[key] = err[key]; - }, err); - return res; - } - }); // module: reporters/json.js - - require.register('reporters/landing.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `Landing`. - */ - - exports = module.exports = Landing; - - /** - * Airplane color. - */ - - Base.colors.plane = 0; - - /** - * Airplane crash color. - */ - - Base.colors['plane crash'] = 31; - - /** - * Runway color. - */ - - Base.colors.runway = 90; - - /** - * Initialize a new `Landing` reporter. - * - * @param {Runner} runner - * @api public - */ - - function Landing(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - width = (Base.window.width * 0.75) | 0, - total = runner.total, - stream = process.stdout, - plane = color('plane', '✈'), - crashed = -1, - n = 0; - - function runway() { - var buf = Array(width).join('-'); - return ' ' + color('runway', buf); - } - - runner.on('start', function() { - stream.write('\n '); - cursor.hide(); - }); - - runner.on('test end', function(test) { - // check if the plane crashed - var col = -1 == crashed ? (width * ++n / total) | 0 : crashed; - - // show the crash - if ('failed' == test.state) { - plane = color('plane crash', '✈'); - crashed = col; - } - - // render landing strip - stream.write('\u001b[4F\n\n'); - stream.write(runway()); - stream.write('\n '); - stream.write(color('runway', Array(col).join('⋅'))); - stream.write(plane); - stream.write(color('runway', Array(width - col).join('⋅') + '\n')); - stream.write(runway()); - stream.write('\u001b[0m'); - }); - - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - Landing.prototype = new F(); - Landing.prototype.constructor = Landing; - }); // module: reporters/landing.js - - require.register('reporters/list.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `List`. - */ - - exports = module.exports = List; - - /** - * Initialize a new `List` test reporter. - * - * @param {Runner} runner - * @api public - */ - - function List(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - n = 0; - - runner.on('start', function() { - console.log(); - }); - - runner.on('test', function(test) { - process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); - }); - - runner.on('pending', function(test) { - var fmt = color('checkmark', ' -') + color('pending', ' %s'); - console.log(fmt, test.fullTitle()); - }); - - runner.on('pass', function(test) { - var fmt = - color('checkmark', ' ' + Base.symbols.dot) + - color('pass', ' %s: ') + - color(test.speed, '%dms'); - cursor.CR(); - console.log(fmt, test.fullTitle(), test.duration); - }); - - runner.on('fail', function(test, err) { - cursor.CR(); - console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); - }); - - runner.on('end', self.epilogue.bind(self)); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - List.prototype = new F(); - List.prototype.constructor = List; - }); // module: reporters/list.js - - require.register('reporters/markdown.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - utils = require('../utils'); - - /** - * Expose `Markdown`. - */ - - exports = module.exports = Markdown; - - /** - * Initialize a new `Markdown` reporter. - * - * @param {Runner} runner - * @api public - */ - - function Markdown(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - level = 0, - buf = ''; - - function title(str) { - return Array(level).join('#') + ' ' + str; - } - - function indent() { - return Array(level).join(' '); - } - - function mapTOC(suite, obj) { - var ret = obj; - obj = obj[suite.title] = obj[suite.title] || {suite: suite}; - suite.suites.forEach(function(suite) { - mapTOC(suite, obj); - }); - return ret; - } - - function stringifyTOC(obj, level) { - ++level; - var buf = ''; - var link; - for (var key in obj) { - if ('suite' == key) continue; - if (key) - link = - ' - [' + key + '](#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; - if (key) buf += Array(level).join(' ') + link; - buf += stringifyTOC(obj[key], level); - } - --level; - return buf; - } - - function generateTOC(suite) { - var obj = mapTOC(suite, {}); - return stringifyTOC(obj, 0); - } - - generateTOC(runner.suite); - - runner.on('suite', function(suite) { - ++level; - var slug = utils.slug(suite.fullTitle()); - buf += '' + '\n'; - buf += title(suite.title) + '\n'; - }); - - runner.on('suite end', function(suite) { - --level; - }); - - runner.on('pass', function(test) { - var code = utils.clean(test.fn.toString()); - buf += test.title + '.\n'; - buf += '\n```js\n'; - buf += code + '\n'; - buf += '```\n\n'; - }); - - runner.on('end', function() { - process.stdout.write('# TOC\n'); - process.stdout.write(generateTOC(runner.suite)); - process.stdout.write(buf); - }); - } - }); // module: reporters/markdown.js - - require.register('reporters/min.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'); - - /** - * Expose `Min`. - */ - - exports = module.exports = Min; - - /** - * Initialize a new `Min` minimal test reporter (best used with --watch). - * - * @param {Runner} runner - * @api public - */ - - function Min(runner) { - Base.call(this, runner); - - runner.on('start', function() { - // clear screen - process.stdout.write('\u001b[2J'); - // set cursor position - process.stdout.write('\u001b[1;3H'); - }); - - runner.on('end', this.epilogue.bind(this)); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - Min.prototype = new F(); - Min.prototype.constructor = Min; - }); // module: reporters/min.js - - require.register('reporters/nyan.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - color = Base.color; - - /** - * Expose `Dot`. - */ - - exports = module.exports = NyanCat; - - /** - * Initialize a new `Dot` matrix test reporter. - * - * @param {Runner} runner - * @api public - */ - - function NyanCat(runner) { - Base.call(this, runner); - var self = this, - stats = this.stats, - width = (Base.window.width * 0.75) | 0, - rainbowColors = (this.rainbowColors = self.generateColors()), - colorIndex = (this.colorIndex = 0), - numerOfLines = (this.numberOfLines = 4), - trajectories = (this.trajectories = [[], [], [], []]), - nyanCatWidth = (this.nyanCatWidth = 11), - trajectoryWidthMax = (this.trajectoryWidthMax = width - nyanCatWidth), - scoreboardWidth = (this.scoreboardWidth = 5), - tick = (this.tick = 0), - n = 0; - - runner.on('start', function() { - Base.cursor.hide(); - self.draw(); - }); - - runner.on('pending', function(test) { - self.draw(); - }); - - runner.on('pass', function(test) { - self.draw(); - }); - - runner.on('fail', function(test, err) { - self.draw(); - }); - - runner.on('end', function() { - Base.cursor.show(); - for (var i = 0; i < self.numberOfLines; i++) write('\n'); - self.epilogue(); - }); - } - - /** - * Draw the nyan cat - * - * @api private - */ - - NyanCat.prototype.draw = function() { - this.appendRainbow(); - this.drawScoreboard(); - this.drawRainbow(); - this.drawNyanCat(); - this.tick = !this.tick; - }; - - /** - * Draw the "scoreboard" showing the number - * of passes, failures and pending tests. - * - * @api private - */ - - NyanCat.prototype.drawScoreboard = function() { - var stats = this.stats; - var colors = Base.colors; - - function draw(color, n) { - write(' '); - write('\u001b[' + color + 'm' + n + '\u001b[0m'); - write('\n'); - } - - draw(colors.green, stats.passes); - draw(colors.fail, stats.failures); - draw(colors.pending, stats.pending); - write('\n'); - - this.cursorUp(this.numberOfLines); - }; - - /** - * Append the rainbow. - * - * @api private - */ - - NyanCat.prototype.appendRainbow = function() { - var segment = this.tick ? '_' : '-'; - var rainbowified = this.rainbowify(segment); - - for (var index = 0; index < this.numberOfLines; index++) { - var trajectory = this.trajectories[index]; - if (trajectory.length >= this.trajectoryWidthMax) trajectory.shift(); - trajectory.push(rainbowified); - } - }; - - /** - * Draw the rainbow. - * - * @api private - */ - - NyanCat.prototype.drawRainbow = function() { - var self = this; - - this.trajectories.forEach(function(line, index) { - write('\u001b[' + self.scoreboardWidth + 'C'); - write(line.join('')); - write('\n'); - }); - - this.cursorUp(this.numberOfLines); - }; - - /** - * Draw the nyan cat - * - * @api private - */ - - NyanCat.prototype.drawNyanCat = function() { - var self = this; - var startWidth = this.scoreboardWidth + this.trajectories[0].length; - var color = '\u001b[' + startWidth + 'C'; - var padding = ''; - - write(color); - write('_,------,'); - write('\n'); - - write(color); - padding = self.tick ? ' ' : ' '; - write('_|' + padding + '/\\_/\\ '); - write('\n'); - - write(color); - padding = self.tick ? '_' : '__'; - var tail = self.tick ? '~' : '^'; - var face; - write(tail + '|' + padding + this.face() + ' '); - write('\n'); - - write(color); - padding = self.tick ? ' ' : ' '; - write(padding + '"" "" '); - write('\n'); - - this.cursorUp(this.numberOfLines); - }; - - /** - * Draw nyan cat face. - * - * @return {String} - * @api private - */ - - NyanCat.prototype.face = function() { - var stats = this.stats; - if (stats.failures) { - return '( x .x)'; - } else if (stats.pending) { - return '( o .o)'; - } else if (stats.passes) { - return '( ^ .^)'; - } else { - return '( - .-)'; - } - }; - - /** - * Move cursor up `n`. - * - * @param {Number} n - * @api private - */ - - NyanCat.prototype.cursorUp = function(n) { - write('\u001b[' + n + 'A'); - }; - - /** - * Move cursor down `n`. - * - * @param {Number} n - * @api private - */ - - NyanCat.prototype.cursorDown = function(n) { - write('\u001b[' + n + 'B'); - }; - - /** - * Generate rainbow colors. - * - * @return {Array} - * @api private - */ - - NyanCat.prototype.generateColors = function() { - var colors = []; - - for (var i = 0; i < 6 * 7; i++) { - var pi3 = Math.floor(Math.PI / 3); - var n = i * (1.0 / 6); - var r = Math.floor(3 * Math.sin(n) + 3); - var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); - var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); - colors.push(36 * r + 6 * g + b + 16); - } - - return colors; - }; - - /** - * Apply rainbow to the given `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - - NyanCat.prototype.rainbowify = function(str) { - var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; - this.colorIndex += 1; - return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; - }; - - /** - * Stdout helper. - */ - - function write(string) { - process.stdout.write(string); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - NyanCat.prototype = new F(); - NyanCat.prototype.constructor = NyanCat; - }); // module: reporters/nyan.js - - require.register('reporters/progress.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `Progress`. - */ - - exports = module.exports = Progress; - - /** - * General progress bar color. - */ - - Base.colors.progress = 90; - - /** - * Initialize a new `Progress` bar test reporter. - * - * @param {Runner} runner - * @param {Object} options - * @api public - */ - - function Progress(runner, options) { - Base.call(this, runner); - - var self = this, - options = options || {}, - stats = this.stats, - width = (Base.window.width * 0.5) | 0, - total = runner.total, - complete = 0, - max = Math.max, - lastN = -1; - - // default chars - options.open = options.open || '['; - options.complete = options.complete || '▬'; - options.incomplete = options.incomplete || Base.symbols.dot; - options.close = options.close || ']'; - options.verbose = false; - - // tests started - runner.on('start', function() { - console.log(); - cursor.hide(); - }); - - // tests complete - runner.on('test end', function() { - complete++; - var incomplete = total - complete, - percent = complete / total, - n = (width * percent) | 0, - i = width - n; - - if (lastN === n && !options.verbose) { - // Don't re-render the line if it hasn't changed - return; - } - lastN = n; - - cursor.CR(); - process.stdout.write('\u001b[J'); - process.stdout.write(color('progress', ' ' + options.open)); - process.stdout.write(Array(n).join(options.complete)); - process.stdout.write(Array(i).join(options.incomplete)); - process.stdout.write(color('progress', options.close)); - if (options.verbose) { - process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); - } - }); - - // tests are complete, output some stats - // and the failures if any - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - Progress.prototype = new F(); - Progress.prototype.constructor = Progress; - }); // module: reporters/progress.js - - require.register('reporters/spec.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `Spec`. - */ - - exports = module.exports = Spec; - - /** - * Initialize a new `Spec` test reporter. - * - * @param {Runner} runner - * @api public - */ - - function Spec(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - indents = 0, - n = 0; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('start', function() { - console.log(); - }); - - runner.on('suite', function(suite) { - ++indents; - console.log(color('suite', '%s%s'), indent(), suite.title); - }); - - runner.on('suite end', function(suite) { - --indents; - if (1 == indents) console.log(); - }); - - runner.on('pending', function(test) { - var fmt = indent() + color('pending', ' - %s'); - console.log(fmt, test.title); - }); - - runner.on('pass', function(test) { - if ('fast' == test.speed) { - var fmt = - indent() + - color('checkmark', ' ' + Base.symbols.ok) + - color('pass', ' %s '); - cursor.CR(); - console.log(fmt, test.title); - } else { - var fmt = - indent() + - color('checkmark', ' ' + Base.symbols.ok) + - color('pass', ' %s ') + - color(test.speed, '(%dms)'); - cursor.CR(); - console.log(fmt, test.title, test.duration); - } - }); - - runner.on('fail', function(test, err) { - cursor.CR(); - console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); - }); - - runner.on('end', self.epilogue.bind(self)); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - Spec.prototype = new F(); - Spec.prototype.constructor = Spec; - }); // module: reporters/spec.js - - require.register('reporters/tap.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - cursor = Base.cursor, - color = Base.color; - - /** - * Expose `TAP`. - */ - - exports = module.exports = TAP; - - /** - * Initialize a new `TAP` reporter. - * - * @param {Runner} runner - * @api public - */ - - function TAP(runner) { - Base.call(this, runner); - - var self = this, - stats = this.stats, - n = 1, - passes = 0, - failures = 0; - - runner.on('start', function() { - var total = runner.grepTotal(runner.suite); - console.log('%d..%d', 1, total); - }); - - runner.on('test end', function() { - ++n; - }); - - runner.on('pending', function(test) { - console.log('ok %d %s # SKIP -', n, title(test)); - }); - - runner.on('pass', function(test) { - passes++; - console.log('ok %d %s', n, title(test)); - }); - - runner.on('fail', function(test, err) { - failures++; - console.log('not ok %d %s', n, title(test)); - if (err.stack) console.log(err.stack.replace(/^/gm, ' ')); - }); - - runner.on('end', function() { - console.log('# tests ' + (passes + failures)); - console.log('# pass ' + passes); - console.log('# fail ' + failures); - }); - } - - /** - * Return a TAP-safe title of `test` - * - * @param {Object} test - * @return {String} - * @api private - */ - - function title(test) { - return test.fullTitle().replace(/#/g, ''); - } - }); // module: reporters/tap.js - - require.register('reporters/xunit.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Base = require('./base'), - utils = require('../utils'), - escape = utils.escape; - - /** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - - var Date = global.Date, - setTimeout = global.setTimeout, - setInterval = global.setInterval, - clearTimeout = global.clearTimeout, - clearInterval = global.clearInterval; - - /** - * Expose `XUnit`. - */ - - exports = module.exports = XUnit; - - /** - * Initialize a new `XUnit` reporter. - * - * @param {Runner} runner - * @api public - */ - - function XUnit(runner) { - Base.call(this, runner); - var stats = this.stats, - tests = [], - self = this; - - runner.on('pending', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - tests.push(test); - }); - - runner.on('fail', function(test) { - tests.push(test); - }); - - runner.on('end', function() { - console.log( - tag( - 'testsuite', - { - name: 'Mocha Tests', - tests: stats.tests, - failures: stats.failures, - errors: stats.failures, - skipped: stats.tests - stats.failures - stats.passes, - timestamp: new Date().toUTCString(), - time: stats.duration / 1000 || 0 - }, - false - ) - ); - - tests.forEach(test); - console.log(''); - }); - } - - /** - * Inherit from `Base.prototype`. - */ - - function F() {} - F.prototype = Base.prototype; - XUnit.prototype = new F(); - XUnit.prototype.constructor = XUnit; - - /** - * Output tag for the given `test.` - */ - - function test(test) { - var attrs = { - classname: test.parent.fullTitle(), - name: test.title, - time: test.duration / 1000 || 0 - }; - - if ('failed' == test.state) { - var err = test.err; - console.log( - tag( - 'testcase', - attrs, - false, - tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)) - ) - ); - } else if (test.pending) { - console.log(tag('testcase', attrs, false, tag('skipped', {}, true))); - } else { - console.log(tag('testcase', attrs, true)); - } - } - - /** - * HTML tag helper. - */ - - function tag(name, attrs, close, content) { - var end = close ? '/>' : '>', - pairs = [], - tag; - - for (var key in attrs) { - pairs.push(key + '="' + escape(attrs[key]) + '"'); - } - - tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; - if (content) tag += content + ''; - } - }); // module: reporters/xunit.js - - require.register('runnable.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var EventEmitter = require('browser/events').EventEmitter, - debug = require('browser/debug')('mocha:runnable'), - milliseconds = require('./ms'); - - /** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - - var Date = global.Date, - setTimeout = global.setTimeout, - setInterval = global.setInterval, - clearTimeout = global.clearTimeout, - clearInterval = global.clearInterval; - - /** - * Object#toString(). - */ - - var toString = Object.prototype.toString; - - /** - * Expose `Runnable`. - */ - - module.exports = Runnable; - - /** - * Initialize a new `Runnable` with the given `title` and callback `fn`. - * - * @param {String} title - * @param {Function} fn - * @api private - */ - - function Runnable(title, fn) { - this.title = title; - this.fn = fn; - this.async = fn && fn.length; - this.sync = !this.async; - this._timeout = 2000; - this._slow = 75; - this._enableTimeouts = true; - this.timedOut = false; - } - - /** - * Inherit from `EventEmitter.prototype`. - */ - - function F() {} - F.prototype = EventEmitter.prototype; - Runnable.prototype = new F(); - Runnable.prototype.constructor = Runnable; - - /** - * Set & get timeout `ms`. - * - * @param {Number|String} ms - * @return {Runnable|Number} ms or self - * @api private - */ - - Runnable.prototype.timeout = function(ms) { - if (0 == arguments.length) return this._timeout; - if (ms === 0) this._enableTimeouts = false; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._timeout = ms; - if (this.timer) this.resetTimeout(); - return this; - }; - - /** - * Set & get slow `ms`. - * - * @param {Number|String} ms - * @return {Runnable|Number} ms or self - * @api private - */ - - Runnable.prototype.slow = function(ms) { - if (0 === arguments.length) return this._slow; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._slow = ms; - return this; - }; - - /** - * Set and & get timeout `enabled`. - * - * @param {Boolean} enabled - * @return {Runnable|Boolean} enabled or self - * @api private - */ - - Runnable.prototype.enableTimeouts = function(enabled) { - if (arguments.length === 0) return this._enableTimeouts; - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; - }; - - /** - * Return the full title generated by recursively - * concatenating the parent's full title. - * - * @return {String} - * @api public - */ - - Runnable.prototype.fullTitle = function() { - return this.parent.fullTitle() + ' ' + this.title; - }; - - /** - * Clear the timeout. - * - * @api private - */ - - Runnable.prototype.clearTimeout = function() { - clearTimeout(this.timer); - }; - - /** - * Inspect the runnable void of private properties. - * - * @return {String} - * @api private - */ - - Runnable.prototype.inspect = function() { - return JSON.stringify( - this, - function(key, val) { - if ('_' == key[0]) return; - if ('parent' == key) return '#'; - if ('ctx' == key) return '#'; - return val; - }, - 2 - ); - }; - - /** - * Reset the timeout. - * - * @api private - */ - - Runnable.prototype.resetTimeout = function() { - var self = this; - var ms = this.timeout() || 1e9; - - if (!this._enableTimeouts) return; - this.clearTimeout(); - this.timer = setTimeout(function() { - if (!self._enableTimeouts) return; - self.callback(new Error('timeout of ' + ms + 'ms exceeded')); - self.timedOut = true; - }, ms); - }; - - /** - * Whitelist these globals for this test run - * - * @api private - */ - Runnable.prototype.globals = function(arr) { - var self = this; - this._allowedGlobals = arr; - }; - - /** - * Run the test and invoke `fn(err)`. - * - * @param {Function} fn - * @api private - */ - - Runnable.prototype.run = function(fn) { - var self = this, - start = new Date(), - ctx = this.ctx, - finished, - emitted; - - // Some times the ctx exists but it is not runnable - if (ctx && ctx.runnable) ctx.runnable(this); - - // called multiple times - function multiple(err) { - if (emitted) return; - emitted = true; - self.emit('error', err || new Error('done() called multiple times')); - } - - // finished - function done(err) { - var ms = self.timeout(); - if (self.timedOut) return; - if (finished) return multiple(err); - self.clearTimeout(); - self.duration = new Date() - start; - finished = true; - if (!err && self.duration > ms && self._enableTimeouts) - err = new Error('timeout of ' + ms + 'ms exceeded'); - fn(err); - } - - // for .resetTimeout() - this.callback = done; - - // explicit async with `done` argument - if (this.async) { - this.resetTimeout(); - - try { - this.fn.call(ctx, function(err) { - if (err instanceof Error || toString.call(err) === '[object Error]') - return done(err); - if (null != err) { - if (Object.prototype.toString.call(err) === '[object Object]') { - return done( - new Error( - 'done() invoked with non-Error: ' + JSON.stringify(err) - ) - ); - } else { - return done(new Error('done() invoked with non-Error: ' + err)); - } - } - done(); - }); - } catch (err) { - done(err); - } - return; - } - - if (this.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()`')); - } - - // sync or promise-returning - try { - if (this.pending) { - done(); - } else { - callFn(this.fn); - } - } catch (err) { - done(err); - } - - function callFn(fn) { - var result = fn.call(ctx); - if (result && typeof result.then === 'function') { - self.resetTimeout(); - result.then( - function() { - done(); - }, - function(reason) { - done(reason || new Error('Promise rejected with no or falsy reason')); - } - ); - } else { - done(); - } - } - }; - }); // module: runnable.js - - require.register('runner.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var EventEmitter = require('browser/events').EventEmitter, - debug = require('browser/debug')('mocha:runner'), - Test = require('./test'), - utils = require('./utils'), - filter = utils.filter, - keys = utils.keys; - - /** - * Non-enumerable globals. - */ - - var globals = [ - 'setTimeout', - 'clearTimeout', - 'setInterval', - 'clearInterval', - 'XMLHttpRequest', - 'Date' - ]; - - /** - * Expose `Runner`. - */ - - module.exports = Runner; - - /** - * Initialize a `Runner` for the given `suite`. - * - * Events: - * - * - `start` execution started - * - `end` execution complete - * - `suite` (suite) test suite execution started - * - `suite end` (suite) all tests (and sub-suites) have finished - * - `test` (test) test execution started - * - `test end` (test) test completed - * - `hook` (hook) hook execution started - * - `hook end` (hook) hook complete - * - `pass` (test) test passed - * - `fail` (test, err) test failed - * - `pending` (test) test pending - * - * @api public - */ - - function Runner(suite) { - var self = this; - this._globals = []; - this._abort = false; - this.suite = suite; - this.total = suite.total(); - this.failures = 0; - this.on('test end', function(test) { - self.checkGlobals(test); - }); - this.on('hook end', function(hook) { - self.checkGlobals(hook); - }); - this.grep(/.*/); - this.globals(this.globalProps().concat(extraGlobals())); - } - - /** - * Wrapper for setImmediate, process.nextTick, or browser polyfill. - * - * @param {Function} fn - * @api private - */ - - Runner.immediately = global.setImmediate || process.nextTick; - - /** - * Inherit from `EventEmitter.prototype`. - */ - - function F() {} - F.prototype = EventEmitter.prototype; - Runner.prototype = new F(); - Runner.prototype.constructor = Runner; - - /** - * Run tests with full titles matching `re`. Updates runner.total - * with number of tests matched. - * - * @param {RegExp} re - * @param {Boolean} invert - * @return {Runner} for chaining - * @api public - */ - - Runner.prototype.grep = function(re, invert) { - debug('grep %s', re); - this._grep = re; - this._invert = invert; - this.total = this.grepTotal(this.suite); - return this; - }; - - /** - * Returns the number of tests matching the grep search for the - * given suite. - * - * @param {Suite} suite - * @return {Number} - * @api public - */ - - Runner.prototype.grepTotal = function(suite) { - var self = this; - var total = 0; - - suite.eachTest(function(test) { - var match = self._grep.test(test.fullTitle()); - if (self._invert) match = !match; - if (match) total++; - }); - - return total; - }; - - /** - * Return a list of global properties. - * - * @return {Array} - * @api private - */ - - Runner.prototype.globalProps = function() { - var props = utils.keys(global); - - // non-enumerables - for (var i = 0; i < globals.length; ++i) { - if (~utils.indexOf(props, globals[i])) continue; - props.push(globals[i]); - } - - return props; - }; - - /** - * Allow the given `arr` of globals. - * - * @param {Array} arr - * @return {Runner} for chaining - * @api public - */ - - Runner.prototype.globals = function(arr) { - if (0 == arguments.length) return this._globals; - debug('globals %j', arr); - this._globals = this._globals.concat(arr); - return this; - }; - - /** - * Check for global variable leaks. - * - * @api private - */ - - Runner.prototype.checkGlobals = function(test) { - if (this.ignoreLeaks) return; - var ok = this._globals; - - var globals = this.globalProps(); - var leaks; - - if (test) { - ok = ok.concat(test._allowedGlobals || []); - } - - if (this.prevGlobalsLength == globals.length) return; - this.prevGlobalsLength = globals.length; - - leaks = filterLeaks(ok, globals); - this._globals = this._globals.concat(leaks); - - if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); - } else if (leaks.length) { - this.fail(test, new Error('global leak detected: ' + leaks[0])); - } - }; - - /** - * Fail the given `test`. - * - * @param {Test} test - * @param {Error} err - * @api private - */ - - Runner.prototype.fail = function(test, err) { - ++this.failures; - test.state = 'failed'; - - if ('string' == typeof err) { - err = new Error('the string "' + err + '" was thrown, throw an Error :)'); - } - - this.emit('fail', test, err); - }; - - /** - * Fail the given `hook` with `err`. - * - * Hook failures work in the following pattern: - * - If bail, then exit - * - Failed `before` hook skips all tests in a suite and subsuites, - * but jumps to corresponding `after` hook - * - Failed `before each` hook skips remaining tests in a - * suite and jumps to corresponding `after each` hook, - * which is run only once - * - Failed `after` hook does not alter - * execution order - * - Failed `after each` hook skips remaining tests in a - * suite and subsuites, but executes other `after each` - * hooks - * - * @param {Hook} hook - * @param {Error} err - * @api private - */ - - Runner.prototype.failHook = function(hook, err) { - this.fail(hook, err); - if (this.suite.bail()) { - this.emit('end'); - } - }; - - /** - * Run hook `name` callbacks and then invoke `fn()`. - * - * @param {String} name - * @param {Function} function - * @api private - */ - - Runner.prototype.hook = function(name, fn) { - var suite = this.suite, - hooks = suite['_' + name], - self = this, - timer; - - function next(i) { - var hook = hooks[i]; - if (!hook) return fn(); - if (self.failures && suite.bail()) return fn(); - self.currentRunnable = hook; - - hook.ctx.currentTest = self.test; - - self.emit('hook', hook); - - hook.on('error', function(err) { - self.failHook(hook, err); - }); - - hook.run(function(err) { - hook.removeAllListeners('error'); - var testError = hook.error(); - if (testError) self.fail(self.test, testError); - if (err) { - self.failHook(hook, err); - - // stop executing hooks, notify callee of hook err - return fn(err); - } - self.emit('hook end', hook); - delete hook.ctx.currentTest; - next(++i); - }); - } - - Runner.immediately(function() { - next(0); - }); - }; - - /** - * Run hook `name` for the given array of `suites` - * in order, and callback `fn(err, errSuite)`. - * - * @param {String} name - * @param {Array} suites - * @param {Function} fn - * @api private - */ - - Runner.prototype.hooks = function(name, suites, fn) { - var self = this, - orig = this.suite; - - function next(suite) { - self.suite = suite; - - if (!suite) { - self.suite = orig; - return fn(); - } - - self.hook(name, function(err) { - if (err) { - var errSuite = self.suite; - self.suite = orig; - return fn(err, errSuite); - } - - next(suites.pop()); - }); - } - - next(suites.pop()); - }; - - /** - * Run hooks from the top level down. - * - * @param {String} name - * @param {Function} fn - * @api private - */ - - Runner.prototype.hookUp = function(name, fn) { - var suites = [this.suite].concat(this.parents()).reverse(); - this.hooks(name, suites, fn); - }; - - /** - * Run hooks from the bottom up. - * - * @param {String} name - * @param {Function} fn - * @api private - */ - - Runner.prototype.hookDown = function(name, fn) { - var suites = [this.suite].concat(this.parents()); - this.hooks(name, suites, fn); - }; - - /** - * Return an array of parent Suites from - * closest to furthest. - * - * @return {Array} - * @api private - */ - - Runner.prototype.parents = function() { - var suite = this.suite, - suites = []; - while ((suite = suite.parent)) suites.push(suite); - return suites; - }; - - /** - * Run the current test and callback `fn(err)`. - * - * @param {Function} fn - * @api private - */ - - Runner.prototype.runTest = function(fn) { - var test = this.test, - self = this; - - if (this.asyncOnly) test.asyncOnly = true; - - try { - test.on('error', function(err) { - self.fail(test, err); - }); - test.run(fn); - } catch (err) { - fn(err); - } - }; - - /** - * Run tests in the given `suite` and invoke - * the callback `fn()` when complete. - * - * @param {Suite} suite - * @param {Function} fn - * @api private - */ - - Runner.prototype.runTests = function(suite, fn) { - var self = this, - tests = suite.tests.slice(), - test; - - function hookErr(err, errSuite, after) { - // before/after Each hook for errSuite failed: - var orig = self.suite; - - // for failed 'after each' hook start from errSuite parent, - // otherwise start from errSuite itself - self.suite = after ? errSuite.parent : errSuite; - - if (self.suite) { - // call hookUp afterEach - self.hookUp('afterEach', function(err2, errSuite2) { - self.suite = orig; - // some hooks may fail even now - if (err2) return hookErr(err2, errSuite2, true); - // report error suite - fn(errSuite); - }); - } else { - // there is no need calling other 'after each' hooks - self.suite = orig; - fn(errSuite); - } - } - - function next(err, errSuite) { - // if we bail after first err - if (self.failures && suite._bail) return fn(); - - if (self._abort) return fn(); - - if (err) return hookErr(err, errSuite, true); - - // next test - test = tests.shift(); - - // all done - if (!test) return fn(); - - // grep - var match = self._grep.test(test.fullTitle()); - if (self._invert) match = !match; - if (!match) return next(); - - // pending - if (test.pending) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - - // execute test and hook(s) - self.emit('test', (self.test = test)); - self.hookDown('beforeEach', function(err, errSuite) { - if (err) return hookErr(err, errSuite, false); - - self.currentRunnable = self.test; - self.runTest(function(err) { - test = self.test; - - if (err) { - self.fail(test, err); - self.emit('test end', test); - return self.hookUp('afterEach', next); - } - - test.state = 'passed'; - self.emit('pass', test); - self.emit('test end', test); - self.hookUp('afterEach', next); - }); - }); - } - - this.next = next; - next(); - }; - - /** - * Run the given `suite` and invoke the - * callback `fn()` when complete. - * - * @param {Suite} suite - * @param {Function} fn - * @api private - */ - - Runner.prototype.runSuite = function(suite, fn) { - var total = this.grepTotal(suite), - self = this, - i = 0; - - debug('run suite %s', suite.fullTitle()); - - if (!total) return fn(); - - this.emit('suite', (this.suite = suite)); - - function next(errSuite) { - if (errSuite) { - // current suite failed on a hook from errSuite - if (errSuite == suite) { - // if errSuite is current suite - // continue to the next sibling suite - return done(); - } else { - // errSuite is among the parents of current suite - // stop execution of errSuite and all sub-suites - return done(errSuite); - } - } - - if (self._abort) return done(); - - var curr = suite.suites[i++]; - if (!curr) return done(); - self.runSuite(curr, next); - } - - function done(errSuite) { - self.suite = suite; - self.hook('afterAll', function() { - self.emit('suite end', suite); - fn(errSuite); - }); - } - - this.hook('beforeAll', function(err) { - if (err) return done(); - self.runTests(suite, next); - }); - }; - - /** - * Handle uncaught exceptions. - * - * @param {Error} err - * @api private - */ - - Runner.prototype.uncaught = function(err) { - if (err) { - debug( - 'uncaught exception %s', - err !== - function() { - return this; - }.call(err) - ? err - : err.message || err - ); - } else { - debug('uncaught undefined exception'); - err = new Error('Caught undefined error, did you throw without specifying what?'); - } - err.uncaught = true; - - var runnable = this.currentRunnable; - if (!runnable) return; - - var wasAlreadyDone = runnable.state; - this.fail(runnable, err); - - runnable.clearTimeout(); - - if (wasAlreadyDone) return; - - // recover from test - if ('test' == runnable.type) { - this.emit('test end', runnable); - this.hookUp('afterEach', this.next); - return; - } - - // bail on hooks - this.emit('end'); - }; - - /** - * Run the root suite and invoke `fn(failures)` - * on completion. - * - * @param {Function} fn - * @return {Runner} for chaining - * @api public - */ - - Runner.prototype.run = function(fn) { - var self = this, - fn = fn || function() {}; - - function uncaught(err) { - self.uncaught(err); - } - - debug('start'); - - // callback - this.on('end', function() { - debug('end'); - process.removeListener('uncaughtException', uncaught); - fn(self.failures); - }); - - // run suites - this.emit('start'); - this.runSuite(this.suite, function() { - debug('finished running'); - self.emit('end'); - }); - - // uncaught exception - process.on('uncaughtException', uncaught); - - return this; - }; - - /** - * Cleanly abort execution - * - * @return {Runner} for chaining - * @api public - */ - Runner.prototype.abort = function() { - debug('aborting'); - this._abort = true; - }; - - /** - * Filter leaks with the given globals flagged as `ok`. - * - * @param {Array} ok - * @param {Array} globals - * @return {Array} - * @api private - */ - - function filterLeaks(ok, globals) { - return filter(globals, function(key) { - // Firefox and Chrome exposes iframes as index inside the window object - if (/^d+/.test(key)) return false; - - // in firefox - // if runner runs in an iframe, this iframe's window.getInterface method not init at first - // it is assigned in some seconds - if (global.navigator && /^getInterface/.test(key)) return false; - - // an iframe could be approached by window[iframeIndex] - // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && /^\d+/.test(key)) return false; - - // Opera and IE expose global variables for HTML element IDs (issue #243) - if (/^mocha-/.test(key)) return false; - - var matched = filter(ok, function(ok) { - if (~ok.indexOf('*')) return 0 == key.indexOf(ok.split('*')[0]); - return key == ok; - }); - return matched.length == 0 && (!global.navigator || 'onerror' !== key); - }); - } - - /** - * Array of globals dependent on the environment. - * - * @return {Array} - * @api private - */ - - function extraGlobals() { - if (typeof process === 'object' && typeof process.version === 'string') { - var nodeVersion = process.version.split('.').reduce(function(a, v) { - return (a << 8) | v; - }); - - // 'errno' was renamed to process._errno in v0.9.11. - - if (nodeVersion < 0x00090b) { - return ['errno']; - } - } - - return []; - } - }); // module: runner.js - - require.register('suite.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var EventEmitter = require('browser/events').EventEmitter, - debug = require('browser/debug')('mocha:suite'), - milliseconds = require('./ms'), - utils = require('./utils'), - Hook = require('./hook'); - - /** - * Expose `Suite`. - */ - - exports = module.exports = Suite; - - /** - * Create a new `Suite` with the given `title` - * and parent `Suite`. When a suite with the - * same title is already present, that suite - * is returned to provide nicer reporter - * and more flexible meta-testing. - * - * @param {Suite} parent - * @param {String} title - * @return {Suite} - * @api public - */ - - exports.create = function(parent, title) { - var suite = new Suite(title, parent.ctx); - suite.parent = parent; - if (parent.pending) suite.pending = true; - title = suite.fullTitle(); - parent.addSuite(suite); - return suite; - }; - - /** - * Initialize a new `Suite` with the given - * `title` and `ctx`. - * - * @param {String} title - * @param {Context} ctx - * @api private - */ - - function Suite(title, parentContext) { - this.title = title; - var context = function() {}; - context.prototype = parentContext; - this.ctx = new context(); - this.suites = []; - this.tests = []; - this.pending = false; - this._beforeEach = []; - this._beforeAll = []; - this._afterEach = []; - this._afterAll = []; - this.root = !title; - this._timeout = 2000; - this._enableTimeouts = true; - this._slow = 75; - this._bail = false; - } - - /** - * Inherit from `EventEmitter.prototype`. - */ - - function F() {} - F.prototype = EventEmitter.prototype; - Suite.prototype = new F(); - Suite.prototype.constructor = Suite; - - /** - * Return a clone of this `Suite`. - * - * @return {Suite} - * @api private - */ - - Suite.prototype.clone = function() { - var suite = new Suite(this.title); - debug('clone'); - suite.ctx = this.ctx; - suite.timeout(this.timeout()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - return suite; - }; - - /** - * Set timeout `ms` or short-hand such as "2s". - * - * @param {Number|String} ms - * @return {Suite|Number} for chaining - * @api private - */ - - Suite.prototype.timeout = function(ms) { - if (0 == arguments.length) return this._timeout; - if (ms === 0) this._enableTimeouts = false; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('timeout %d', ms); - this._timeout = parseInt(ms, 10); - return this; - }; - - /** - * Set timeout `enabled`. - * - * @param {Boolean} enabled - * @return {Suite|Boolean} self or enabled - * @api private - */ - - Suite.prototype.enableTimeouts = function(enabled) { - if (arguments.length === 0) return this._enableTimeouts; - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; - }; - - /** - * Set slow `ms` or short-hand such as "2s". - * - * @param {Number|String} ms - * @return {Suite|Number} for chaining - * @api private - */ - - Suite.prototype.slow = function(ms) { - if (0 === arguments.length) return this._slow; - if ('string' == typeof ms) ms = milliseconds(ms); - debug('slow %d', ms); - this._slow = ms; - return this; - }; - - /** - * Sets whether to bail after first error. - * - * @parma {Boolean} bail - * @return {Suite|Number} for chaining - * @api private - */ - - Suite.prototype.bail = function(bail) { - if (0 == arguments.length) return this._bail; - debug('bail %s', bail); - this._bail = bail; - return this; - }; - - /** - * Run `fn(test[, done])` before running tests. - * - * @param {Function} fn - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.beforeAll = function(title, fn) { - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"before all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeAll.push(hook); - this.emit('beforeAll', hook); - return this; - }; - - /** - * Run `fn(test[, done])` after running tests. - * - * @param {Function} fn - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.afterAll = function(title, fn) { - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"after all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterAll.push(hook); - this.emit('afterAll', hook); - return this; - }; - - /** - * Run `fn(test[, done])` before each test case. - * - * @param {Function} fn - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.beforeEach = function(title, fn) { - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"before each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeEach.push(hook); - this.emit('beforeEach', hook); - return this; - }; - - /** - * Run `fn(test[, done])` after each test case. - * - * @param {Function} fn - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.afterEach = function(title, fn) { - if (this.pending) return this; - if ('function' === typeof title) { - fn = title; - title = fn.name; - } - title = '"after each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterEach.push(hook); - this.emit('afterEach', hook); - return this; - }; - - /** - * Add a test `suite`. - * - * @param {Suite} suite - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.addSuite = function(suite) { - suite.parent = this; - suite.timeout(this.timeout()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - this.suites.push(suite); - this.emit('suite', suite); - return this; - }; - - /** - * Add a `test` to this suite. - * - * @param {Test} test - * @return {Suite} for chaining - * @api private - */ - - Suite.prototype.addTest = function(test) { - test.parent = this; - test.timeout(this.timeout()); - test.enableTimeouts(this.enableTimeouts()); - test.slow(this.slow()); - test.ctx = this.ctx; - this.tests.push(test); - this.emit('test', test); - return this; - }; - - /** - * Return the full title generated by recursively - * concatenating the parent's full title. - * - * @return {String} - * @api public - */ - - Suite.prototype.fullTitle = function() { - if (this.parent) { - var full = this.parent.fullTitle(); - if (full) return full + ' ' + this.title; - } - return this.title; - }; - - /** - * Return the total number of tests. - * - * @return {Number} - * @api public - */ - - Suite.prototype.total = function() { - return ( - utils.reduce( - this.suites, - function(sum, suite) { - return sum + suite.total(); - }, - 0 - ) + this.tests.length - ); - }; - - /** - * Iterates through each suite recursively to find - * all tests. Applies a function in the format - * `fn(test)`. - * - * @param {Function} fn - * @return {Suite} - * @api private - */ - - Suite.prototype.eachTest = function(fn) { - utils.forEach(this.tests, fn); - utils.forEach(this.suites, function(suite) { - suite.eachTest(fn); - }); - return this; - }; - }); // module: suite.js - - require.register('test.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var Runnable = require('./runnable'); - - /** - * Expose `Test`. - */ - - module.exports = Test; - - /** - * Initialize a new `Test` with the given `title` and callback `fn`. - * - * @param {String} title - * @param {Function} fn - * @api private - */ - - function Test(title, fn) { - Runnable.call(this, title, fn); - this.pending = !fn; - this.type = 'test'; - } - - /** - * Inherit from `Runnable.prototype`. - */ - - function F() {} - F.prototype = Runnable.prototype; - Test.prototype = new F(); - Test.prototype.constructor = Test; - }); // module: test.js - - require.register('utils.js', function(module, exports, require) { - /** - * Module dependencies. - */ - - var fs = require('browser/fs'), - path = require('browser/path'), - basename = path.basename, - exists = fs.existsSync || path.existsSync, - glob = require('browser/glob'), - join = path.join, - debug = require('browser/debug')('mocha:watch'); - - /** - * Ignored directories. - */ - - var ignore = ['node_modules', '.git']; - - /** - * Escape special characters in the given string of html. - * - * @param {String} html - * @return {String} - * @api private - */ - - exports.escape = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); - }; - - /** - * Array#forEach (<=IE8) - * - * @param {Array} array - * @param {Function} fn - * @param {Object} scope - * @api private - */ - - exports.forEach = function(arr, fn, scope) { - for (var i = 0, l = arr.length; i < l; i++) fn.call(scope, arr[i], i); - }; - - /** - * Array#map (<=IE8) - * - * @param {Array} array - * @param {Function} fn - * @param {Object} scope - * @api private - */ - - exports.map = function(arr, fn, scope) { - var result = []; - for (var i = 0, l = arr.length; i < l; i++) result.push(fn.call(scope, arr[i], i)); - return result; - }; - - /** - * Array#indexOf (<=IE8) - * - * @parma {Array} arr - * @param {Object} obj to find index of - * @param {Number} start - * @api private - */ - - exports.indexOf = function(arr, obj, start) { - for (var i = start || 0, l = arr.length; i < l; i++) { - if (arr[i] === obj) return i; - } - return -1; - }; - - /** - * Array#reduce (<=IE8) - * - * @param {Array} array - * @param {Function} fn - * @param {Object} initial value - * @api private - */ - - exports.reduce = function(arr, fn, val) { - var rval = val; - - for (var i = 0, l = arr.length; i < l; i++) { - rval = fn(rval, arr[i], i, arr); - } - - return rval; - }; - - /** - * Array#filter (<=IE8) - * - * @param {Array} array - * @param {Function} fn - * @api private - */ - - exports.filter = function(arr, fn) { - var ret = []; - - for (var i = 0, l = arr.length; i < l; i++) { - var val = arr[i]; - if (fn(val, i, arr)) ret.push(val); - } - - return ret; - }; - - /** - * Object.keys (<=IE8) - * - * @param {Object} obj - * @return {Array} keys - * @api private - */ - - exports.keys = - Object.keys || - function(obj) { - var keys = [], - has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 - - for (var key in obj) { - if (has.call(obj, key)) { - keys.push(key); - } - } - - return keys; - }; - - /** - * Watch the given `files` for changes - * and invoke `fn(file)` on modification. - * - * @param {Array} files - * @param {Function} fn - * @api private - */ - - exports.watch = function(files, fn) { - var options = {interval: 100}; - files.forEach(function(file) { - debug('file %s', file); - fs.watchFile(file, options, function(curr, prev) { - if (prev.mtime < curr.mtime) fn(file); - }); - }); - }; - - /** - * Ignored files. - */ - - function ignored(path) { - return !~ignore.indexOf(path); - } - - /** - * Lookup files in the given `dir`. - * - * @return {Array} - * @api private - */ - - exports.files = function(dir, ext, ret) { - ret = ret || []; - ext = ext || ['js']; - - var re = new RegExp('\\.(' + ext.join('|') + ')$'); - - fs.readdirSync(dir).filter(ignored).forEach(function(path) { - path = join(dir, path); - if (fs.statSync(path).isDirectory()) { - exports.files(path, ext, ret); - } else if (path.match(re)) { - ret.push(path); - } - }); - - return ret; - }; - - /** - * Compute a slug from the given `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - - exports.slug = function(str) { - return str.toLowerCase().replace(/ +/g, '-').replace(/[^-\w]/g, ''); - }; - - /** - * Strip the function definition from `str`, - * and re-indent for pre whitespace. - */ - - exports.clean = function(str) { - str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, '\n') - .replace(/^\uFEFF/, '') - .replace(/^function *\(.*\) *{|\(.*\) *=> *{?/, '') - .replace(/\s+\}$/, ''); - - var spaces = str.match(/^\n?( *)/)[1].length, - tabs = str.match(/^\n?(\t*)/)[1].length, - re = new RegExp( - '^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', - 'gm' - ); - - str = str.replace(re, ''); - - return exports.trim(str); - }; - - /** - * Trim the given `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - - exports.trim = function(str) { - return str.replace(/^\s+|\s+$/g, ''); - }; - - /** - * Parse the given `qs`. - * - * @param {String} qs - * @return {Object} - * @api private - */ - - exports.parseQuery = function(qs) { - return exports.reduce( - qs.replace('?', '').split('&'), - function(obj, pair) { - var i = pair.indexOf('='), - key = pair.slice(0, i), - val = pair.slice(++i); - - obj[key] = decodeURIComponent(val); - return obj; - }, - {} - ); - }; - - /** - * Highlight the given string of `js`. - * - * @param {String} js - * @return {String} - * @api private - */ - - function highlight(js) { - return js - .replace(//g, '>') - .replace(/\/\/(.*)/gm, '//$1') - .replace(/('.*?')/gm, '$1') - .replace(/(\d+\.\d+)/gm, '$1') - .replace(/(\d+)/gm, '$1') - .replace( - /\bnew[ \t]+(\w+)/gm, - 'new $1' - ) - .replace( - /\b(function|new|throw|return|var|if|else)\b/gm, - '$1' - ); - } - - /** - * Highlight the contents of tag `name`. - * - * @param {String} name - * @api private - */ - - exports.highlightTags = function(name) { - var code = document.getElementById('mocha').getElementsByTagName(name); - for (var i = 0, len = code.length; i < len; ++i) { - code[i].innerHTML = highlight(code[i].innerHTML); - } - }; - - /** - * Stringify `obj`. - * - * @param {Object} obj - * @return {String} - * @api private - */ - - exports.stringify = function(obj) { - if (obj instanceof RegExp) return obj.toString(); - return JSON.stringify(exports.canonicalize(obj), null, 2).replace(/,(\n|$)/g, '$1'); - }; - - /** - * Return a new object that has the keys in sorted order. - * @param {Object} obj - * @param {Array} [stack] - * @return {Object} - * @api private - */ - - exports.canonicalize = function(obj, stack) { - stack = stack || []; - - if (exports.indexOf(stack, obj) !== -1) return '[Circular]'; - - var canonicalizedObj; - - if ({}.toString.call(obj) === '[object Array]') { - stack.push(obj); - canonicalizedObj = exports.map(obj, function(item) { - return exports.canonicalize(item, stack); - }); - stack.pop(); - } else if (typeof obj === 'object' && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - exports.forEach(exports.keys(obj).sort(), function(key) { - canonicalizedObj[key] = exports.canonicalize(obj[key], stack); - }); - stack.pop(); - } else { - canonicalizedObj = obj; - } - - return canonicalizedObj; - }; - - /** - * Lookup file names at the given `path`. - */ - exports.lookupFiles = function lookupFiles(path, extensions, recursive) { - var files = []; - var re = new RegExp('\\.(' + extensions.join('|') + ')$'); - - if (!exists(path)) { - if (exists(path + '.js')) { - path += '.js'; - } else { - files = glob.sync(path); - if (!files.length) - throw new Error("cannot resolve path (or pattern) '" + path + "'"); - return files; - } - } - - try { - var stat = fs.statSync(path); - if (stat.isFile()) return path; - } catch (ignored) { - return; - } - - fs.readdirSync(path).forEach(function(file) { - file = join(path, file); - try { - var stat = fs.statSync(file); - if (stat.isDirectory()) { - if (recursive) { - files = files.concat(lookupFiles(file, extensions, recursive)); - } - return; - } - } catch (ignored) { - return; - } - if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') return; - files.push(file); - }); - - return files; - }; - }); // module: utils.js - // The global object is "self" in Web Workers. - var global = (function() { - return this; - })(); - - /** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - - var Date = global.Date; - var setTimeout = global.setTimeout; - var setInterval = global.setInterval; - var clearTimeout = global.clearTimeout; - var clearInterval = global.clearInterval; - - /** - * Node shims. - * - * These are meant only to allow - * mocha.js to run untouched, not - * to allow running node code in - * the browser. - */ - - var process = {}; - process.exit = function(status) {}; - process.stdout = {}; - - var uncaughtExceptionHandlers = []; - - var originalOnerrorHandler = global.onerror; - - /** - * Remove uncaughtException listener. - * Revert to original onerror handler if previously defined. - */ - - process.removeListener = function(e, fn) { - if ('uncaughtException' == e) { - if (originalOnerrorHandler) { - global.onerror = originalOnerrorHandler; - } else { - global.onerror = function() {}; - } - var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); - if (i != -1) { - uncaughtExceptionHandlers.splice(i, 1); - } - } - }; - - /** - * Implements uncaughtException listener. - */ - - process.on = function(e, fn) { - if ('uncaughtException' == e) { - global.onerror = function(err, url, line) { - fn(new Error(err + ' (' + url + ':' + line + ')')); - return true; - }; - uncaughtExceptionHandlers.push(fn); - } - }; - - /** - * Expose mocha. - */ - - var Mocha = (global.Mocha = require('mocha')), - mocha = (global.mocha = new Mocha({reporter: 'html'})); - - // The BDD UI is registered by default, but no UI will be functional in the - // browser without an explicit call to the overridden `mocha.ui` (see below). - // Ensure that this default UI does not expose its methods to the global scope. - mocha.suite.removeAllListeners('pre-require'); - - var immediateQueue = [], - immediateTimeout; - - function timeslice() { - var immediateStart = new Date().getTime(); - while (immediateQueue.length && new Date().getTime() - immediateStart < 100) { - immediateQueue.shift()(); - } - if (immediateQueue.length) { - immediateTimeout = setTimeout(timeslice, 0); - } else { - immediateTimeout = null; - } - } - - /** - * High-performance override of Runner.immediately. - */ - - Mocha.Runner.immediately = function(callback) { - immediateQueue.push(callback); - if (!immediateTimeout) { - immediateTimeout = setTimeout(timeslice, 0); - } - }; - - /** - * Function to allow assertion libraries to throw errors directly into mocha. - * This is useful when running tests in a browser because window.onerror will - * only receive the 'message' attribute of the Error. - */ - mocha.throwError = function(err) { - Mocha.utils.forEach(uncaughtExceptionHandlers, function(fn) { - fn(err); - }); - throw err; - }; - - /** - * Override ui to ensure that the ui functions are initialized. - * Normally this would happen in Mocha.prototype.loadFiles. - */ - - mocha.ui = function(ui) { - Mocha.prototype.ui.call(this, ui); - this.suite.emit('pre-require', global, null, this); - return this; - }; - - /** - * Setup mocha with the given setting options. - */ - - mocha.setup = function(opts) { - if ('string' == typeof opts) opts = {ui: opts}; - for (var opt in opts) this[opt](opts[opt]); - return this; - }; - - /** - * Run mocha, returning the Runner. - */ - - mocha.run = function(fn) { - var options = mocha.options; - mocha.globals('location'); - - var query = Mocha.utils.parseQuery(global.location.search || ''); - if (query.grep) mocha.grep(query.grep); - if (query.invert) mocha.invert(); - - return Mocha.prototype.run.call(mocha, function(err) { - // The DOM Document is not available in Web Workers. - var document = global.document; - if (document && document.getElementById('mocha') && options.noHighlighting !== true) { - Mocha.utils.highlightTags('code'); - } - if (fn) fn(err); - }); - }; - - /** - * Expose the process shim. - */ - - Mocha.process = process; -})(); diff --git a/tests/mocha/multiple-renders.html b/tests/mocha/multiple-renders.html deleted file mode 100644 index ff30a22cd..000000000 --- a/tests/mocha/multiple-renders.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - Mocha Tests - - - - - - - - - -
            -
            -
            - - - - diff --git a/tests/mocha/options.onclone.html b/tests/mocha/options.onclone.html deleted file mode 100644 index da1f57816..000000000 --- a/tests/mocha/options.onclone.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - Mocha Tests - - - - - - - - - -
            - -
            -
            - - - diff --git a/tests/mocha/parsing.html b/tests/mocha/parsing.html deleted file mode 100644 index 36c84f43f..000000000 --- a/tests/mocha/parsing.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Mocha Tests - - - - - - - -
            - -
            -
            Yep, here's some more. -
            Div 1
            -
            Div 2
            -
            Some more divs
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - -
            -
            -
            -
            -
            - -
            - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - diff --git a/tests/mocha/proxy.htm b/tests/mocha/proxy.htm deleted file mode 100644 index 3494e9071..000000000 --- a/tests/mocha/proxy.htm +++ /dev/null @@ -1,89 +0,0 @@ - - - - - Proxy tests - - - - - - - - -
            - -
            - -
            - - - diff --git a/tests/mocha/scrolling.html b/tests/mocha/scrolling.html deleted file mode 100644 index ced49c749..000000000 --- a/tests/mocha/scrolling.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Scrolling tests - - - - - - - - -
            - -
            -
            -
            -
            -
            -
            -
            - - - - diff --git a/tests/mocha/selenium.js b/tests/mocha/selenium.js deleted file mode 100644 index bf73e6007..000000000 --- a/tests/mocha/selenium.js +++ /dev/null @@ -1,99 +0,0 @@ -var wd = require('wd'); -var http = require('http'); -var https = require('https'); -var url = require('url'); -var path = require('path'); -var Promise = require('bluebird'); -var _ = require('lodash'); -var humanizeDuration = require('humanize-duration'); -var utils = require('../utils'); -var colors = utils.colors; -var port = 8080; - -function runTestWithRetries(browser, test, retries) { - retries = retries || 0; - return runTest(browser, test).timeout(30000).catch(Promise.TimeoutError, function() { - if (retries < 3) { - console.log(colors.violet, 'Retry', retries + 1, test); - return runTestWithRetries(browser, test, retries + 1); - } else { - throw new Error("Couldn't run test after 3 retries"); - } - }); -} - -function getResults(browser) { - return function() { - return Promise.props({ - dataUrl: browser - .waitForElementByCss("body[data-complete='true']", 90000) - .then(function() { - return browser.elementsByCssSelector('.test.fail'); - }) - .then(function(nodes) { - return Array.isArray(nodes) - ? Promise.map(nodes, function(node) { - return browser.text(node).then(function(error) { - return Promise.reject(error); - }); - }) - : Promise.resolve([]); - }) - }); - }; -} - -function runTest(browser, test) { - return Promise.resolve( - browser.then(utils.loadTestPage(browser, test, port)).then(getResults(browser)) - ).cancellable(); -} - -exports.tests = function(browsers, singleTest) { - var path = 'tests/mocha'; - return (singleTest ? Promise.resolve([singleTest]) : utils.getTests(path)).then(function( - tests - ) { - return Promise.map( - browsers, - function(settings) { - var name = [settings.browserName, settings.version, settings.platform].join('-'); - var count = 0; - var browser = utils.initBrowser(settings); - return Promise.using(browser, function() { - return Promise.map( - tests, - function(test, index, total) { - console.log( - colors.green, - 'STARTING', - '(' + ++count + '/' + total + ')', - name, - test, - colors.clear - ); - var start = Date.now(); - return runTestWithRetries(browser, test).then(function() { - console.log( - colors.green, - 'COMPLETE', - humanizeDuration(Date.now() - start), - '(' + count + '/' + total + ')', - name, - colors.clear - ); - }); - }, - {concurrency: 1} - ) - .settle() - .catch(function(error) { - console.error(colors.red, 'ERROR', name, error); - throw error; - }); - }); - }, - {concurrency: 3} - ); - }); -}; diff --git a/tests/reftests/animation.html b/tests/reftests/animation.html new file mode 100644 index 000000000..55b35720f --- /dev/null +++ b/tests/reftests/animation.html @@ -0,0 +1,50 @@ + + + + Animation + + + + + + +
            Some inline text followed by text in span followed by more inline text. +

            Then a block level element.

            + Then more inline text.
            + + diff --git a/tests/reftests/background/clip.html b/tests/reftests/background/clip.html index 4e6b2c86f..685f6266c 100644 --- a/tests/reftests/background/clip.html +++ b/tests/reftests/background/clip.html @@ -20,13 +20,14 @@ } .medium div{ - width:200px; - height:200px; + width:100px; + height:100px; float:left; margin:10px; border:20px solid transparent; border-width: 10px 20px 30px 40px; background: green; + padding: 25px 15px; } .small, .medium{ @@ -51,6 +52,8 @@
            +
            +
            diff --git a/tests/reftests/background/linear-gradient.html b/tests/reftests/background/linear-gradient.html index b778208c2..6c6c7e889 100644 --- a/tests/reftests/background/linear-gradient.html +++ b/tests/reftests/background/linear-gradient.html @@ -49,7 +49,7 @@ } .linearGradient2 { - background: -webkit-gradient(linear, 0% 0, 0% 100%, from(rgb(252, 252, 252)), to(rgb(232, 232, 232))); + background: -webkit-gradient(linear, 0% 0, 0% 100%, from(rgb(252, 252, 252)), color-stop(0.3, #000000), to(rgb(232, 232, 232))); } .linearGradient3 { diff --git a/tests/reftests/background/linear-gradient2.html b/tests/reftests/background/linear-gradient2.html index badadc6b2..6547f2bae 100644 --- a/tests/reftests/background/linear-gradient2.html +++ b/tests/reftests/background/linear-gradient2.html @@ -14,8 +14,14 @@ width: 100px; height: 100px; padding: 10px; - border: 15px solid black; + border: 15px solid transparent; } + .linearGradient { + width: 200px; + height: 200px; + background-image: linear-gradient(rgba(0, 0, 0, 0.7) 0.1em, transparent 0.1em), linear-gradient(90deg, rgba(0, 0, 0, 0.7) 0.1em, transparent 0.1em); + background-size: 1em 1em; + } @@ -38,5 +44,8 @@
            +
            +
            +
            - \ No newline at end of file + diff --git a/tests/reftests/background/size.html b/tests/reftests/background/size.html index d43761607..6cdf0fccd 100644 --- a/tests/reftests/background/size.html +++ b/tests/reftests/background/size.html @@ -56,6 +56,6 @@
            - +
            diff --git a/tests/reftests/forms.html b/tests/reftests/forms.html index 53c9b654f..624d8d5c9 100644 --- a/tests/reftests/forms.html +++ b/tests/reftests/forms.html @@ -36,7 +36,7 @@ - + diff --git a/tests/reftests/list/decimal-leading-zero.html b/tests/reftests/list/decimal-leading-zero.html index 746b73399..5b72fecbe 100644 --- a/tests/reftests/list/decimal-leading-zero.html +++ b/tests/reftests/list/decimal-leading-zero.html @@ -5,18 +5,9 @@ - - - - -
              -
            • Alpha
            • -
            • Beta
            • -
            • Gamma
            • -
            -
              -
            • Alpha
            • -
            • Beta
            • -
            • Gamma
            • -
            -
              -
            • Alpha
            • -
            • Beta
            • -
            • Gamma
            • -
            -
              -
            1. Alpha
            2. -
            3. Beta
            4. -
            5. Gamma
            6. -
            -
              -
            1. Alpha
            2. -
            3. Beta
            4. -
            5. Gamma
            6. -
            -
              -
            1. Alpha
            2. -
            3. Beta
            4. -
            5. Gamma
            6. -
            -
              -
            1. Alpha
            2. -
            3. Beta
            4. -
            5. Gamma
            6. -
            -
              -
            1. Alpha
            2. -
            3. Beta
            4. -
            5. Gamma
            6. -
            -
            Alpha
            -
            Beta
            -
            Gamma
            - + .list9 { + display: list-item; + list-style-type: lower-alpha; + margin: 10px; + position: relative; + left: 200px; + } + + + +
              +
            • Alpha
            • +
            • Beta
            • +
            • Gamma
            • +
            +
              +
            • Alpha
            • +
            • Beta
            • +
            • Gamma
            • +
            +
              +
            • Alpha
            • +
            • Beta
            • +
            • Gamma
            • +
            +
              +
            1. Alpha
            2. +
            3. Beta
            4. +
            5. Gamma
            6. +
            +
              +
            1. Alpha
            2. +
            3. Beta
            4. +
            5. Gamma
            6. +
            +
              +
            1. Alpha
            2. +
            3. Beta
            4. +
            5. Gamma
            6. +
            +
              +
            1. Alpha
            2. +
            3. Beta
            4. +
            5. Gamma
            6. +
            +
              +
            1. Alpha
            2. +
            3. Beta
            4. +
            5. Gamma
            6. +
            +
            list-less Alpha
            +
            list-less Beta
            +
            list-less Gamma
            + diff --git a/tests/reftests/list/lower-alpha.html b/tests/reftests/list/lower-alpha.html index 13dffb257..27a0bea1a 100644 --- a/tests/reftests/list/lower-alpha.html +++ b/tests/reftests/list/lower-alpha.html @@ -4,19 +4,9 @@ List tests - - - @@ -51,5 +74,16 @@
            + +
            + This is app +
            + This is box, overflow hidden +
            + This is content +
            +
            +
            + diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index 1a15c3a9a..e924044d4 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -115,7 +115,13 @@

            Overflow: hidden

            diff --git a/tests/reftests/pseudo-content.html b/tests/reftests/pseudo-content.html index bac579639..24c763e99 100644 --- a/tests/reftests/pseudo-content.html +++ b/tests/reftests/pseudo-content.html @@ -1,104 +1,167 @@ - - - - - - -
            -
            A
            -
            B
            -
            C
            -
            D
            -
            - -
            -
            A
            -
            B
            -
            - C -
            -
            a
            -
            b
            -
            - c -
            -
            Aa
            -
            Bb
            -
            Cc
            -
            -
            -
            -
            -
            D
            -
            - -
            - Hello -
            - Quoted -
            World
            -
            -
            - -
            -
            -
            - - \ No newline at end of file + + + + + + +
            +
            A
            +
            B
            +
            C
            +
            D
            +
            + +
            +
            A
            +
            B
            +
            + C +
            +
            a
            +
            b
            +
            + c +
            +
            Aa
            +
            Bb
            +
            Cc
            +
            +
            +
            +
            +
            D
            +
            + +
            + Hello +
            + Quoted +
            World
            +
            +
            + +
            +
            +
            + +
            +
            A
            +
            B
            +
            C
            +
            D
            +
            +
              +
            1. item
            2. +
            3. item +
                +
              1. item
              2. +
              3. item
              4. +
              5. item +
                  +
                1. item
                2. +
                3. item
                4. +
                +
                  +
                1. item
                2. +
                3. item
                4. +
                5. item
                6. +
                +
              6. +
              7. item
              8. +
              +
            4. +
            5. item
            6. +
            7. item
            8. +
            +
              +
            1. item
            2. +
            3. item
            4. +
            + + + diff --git a/tests/reftests/text/child-textnodes.html b/tests/reftests/text/child-textnodes.html index 5cf59b49d..c26dcd5c9 100644 --- a/tests/reftests/text/child-textnodes.html +++ b/tests/reftests/text/child-textnodes.html @@ -12,7 +12,7 @@ background-color: green; } body { - font-family: Arial; + font-family: "Helvetica Neue", Arial, sans-serif; } diff --git a/tests/reftests/text/linethrough.html b/tests/reftests/text/linethrough.html index cc3bace10..6b06b2114 100644 --- a/tests/reftests/text/linethrough.html +++ b/tests/reftests/text/linethrough.html @@ -7,7 +7,7 @@ @@ -45,6 +52,9 @@ - Creating content through JavaScript + test       label u +
            + Creating content through JavaScript +
            diff --git a/tests/rollup.config.ts b/tests/rollup.config.ts new file mode 100644 index 000000000..32509d02c --- /dev/null +++ b/tests/rollup.config.ts @@ -0,0 +1,52 @@ +import nodeResolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import sourceMaps from 'rollup-plugin-sourcemaps'; +import typescript from 'rollup-plugin-typescript2'; +import json from 'rollup-plugin-json'; +import {resolve} from 'path'; + +const pkg = require('../package.json'); + +const banner = `/* + * ${pkg.title} ${pkg.version} <${pkg.homepage}> + * Copyright (c) ${new Date().getFullYear()} ${pkg.author.name} <${pkg.author.url}> + * Released under ${pkg.license} License + */`; + +export default { + input: `tests/testrunner.ts`, + output: [ + { + file: resolve(__dirname, '../build/testrunner.js'), + name: 'testrunner', + format: 'iife', + banner, + sourcemap: true + } + ], + external: [], + watch: { + include: 'tests/**' + }, + plugins: [ + // Allow node_modules resolution, so you can use 'external' to control + // which external modules to include in the bundle + // https://github.com/rollup/rollup-plugin-node-resolve#usage + nodeResolve(), + // Allow json resolution + json(), + // Compile TypeScript files + typescript({useTsconfigDeclarationDir: true}), + // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) + commonjs({ + include: 'node_modules/**', + namedModules: { + 'node_modules/platform/platform.js': ['name', 'version'], + 'node_modules/es6-promise/dist/es6-promise.js': ['Promise'] + } + }), + + // Resolve source maps to the original source + sourceMaps() + ] +}; diff --git a/tests/server.js b/tests/server.js index 654a461e7..faf5fde5b 100644 --- a/tests/server.js +++ b/tests/server.js @@ -2,8 +2,6 @@ const express = require('express'); const cors = require('cors'); const path = require('path'); const fs = require('fs'); -const webpack = require('webpack'); -const config = require('../webpack.config'); const serveIndex = require('serve-index'); const proxy = require('html2canvas-proxy'); @@ -24,20 +22,3 @@ corsApp.use('/', express.static(path.resolve(__dirname, '.'))); corsApp.listen(CORS_PORT, () => { console.log(`CORS server running on port ${CORS_PORT}`); }); - -const compiler = webpack(config); -compiler.watch( - { - aggregateTimeout: 300 // wait so long for more changes - }, - (err, stats) => { - console.error(err); - - console.log( - stats.toString({ - chunks: false, // Makes the build much quieter - colors: true - }) - ); - } -); diff --git a/tests/test.js b/tests/test.js index bbd04ebe2..946affea0 100644 --- a/tests/test.js +++ b/tests/test.js @@ -17,7 +17,7 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; ); } - (typeof Promise === 'undefined' ? ['/node_modules/promise-polyfill/promise.min'] : []) + (typeof Promise === 'undefined' ? ['/node_modules/es6-promise/dist/es6-promise.auto.min'] : []) .concat([ '/node_modules/jquery/dist/jquery.min', '/dist/html2canvas' @@ -25,9 +25,6 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; .forEach(appendScript); window.onload = function() { - var targets = REFTEST - ? [new html2canvas.CanvasRenderer(), new RefTestRenderer()] - : new html2canvas.CanvasRenderer(); (function($) { $.fn.html2canvas = function(options) { var date = new Date(), @@ -40,18 +37,7 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; console.log('html2canvas threw an error', err); }); - promise.then(function(output) { - var canvas = Array.isArray(targets) ? output[0] : output; - if (Array.isArray(targets)) { - console.log( - output[1] - .split('\n') - .map(function(line, i) { - return i + 1 + ':' + line; - }) - .join('\n') - ); - } + promise.then(function(canvas) { var $canvas = $(canvas), finishTime = new Date(); @@ -155,8 +141,7 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; logging: true, proxy: 'http://localhost:8081/proxy', useCORS: false, - removeContainer: false, - target: targets + removeContainer: true }, h2cOptions, REFTEST ? {windowWidth: 800, windowHeight: 600} : {} diff --git a/tests/testrunner.js b/tests/testrunner.js deleted file mode 100644 index 89f21b6a5..000000000 --- a/tests/testrunner.js +++ /dev/null @@ -1,385 +0,0 @@ -import {expect} from 'chai'; -import parseRefTest from '../scripts/parse-reftest'; -import reftests from './reftests'; -import querystring from 'querystring'; -import platform from 'platform'; -import Promise from 'promise-polyfill'; - -const DOWNLOAD_REFTESTS = false; -const query = querystring.parse(location.search.replace(/^\?/, '')); - -const downloadResult = (filename, data) => { - const downloadUrl = URL.createObjectURL(new Blob([data], {type: 'text/plain'})); - const a = document.createElement('a'); - a.href = downloadUrl; - a.download = filename; - - setTimeout(() => { - a.click(); - URL.revokeObjectURL(downloadUrl); - document.body.removeChild(a); - }, 100); - - document.body.appendChild(a); -}; - -const assertPath = (result, expected, desc) => { - expect(result.length).to.equal(expected.length, `${desc} path length`); - - expected.forEach((e, i) => { - const r = result[i]; - expect(r.type).to.equal(e.type, `${desc} type`); - if (Array.isArray(r)) { - assertPath(r, e, desc); - } else { - switch (r.type) { - case 'Circle': - expect(r.x).to.be.closeTo(e.x, 10, `${desc} Circle #${i + 1} x`); - expect(r.y).to.be.closeTo(e.y, 10, `${desc} Circle #${i + 1} y`); - expect(r.r).to.be.closeTo(e.r, 5, `${desc} Circle #${i + 1} r`); - break; - case 'Vector': - expect(r.x).to.be.closeTo(e.x, 10, `${desc} vector #${i + 1} x`); - expect(r.y).to.be.closeTo(e.y, 10, `${desc} vector #${i + 1} y`); - break; - case 'BezierCurve': - expect(r.x0).to.be.closeTo(e.x0, 10, `${desc} beziercurve #${i + 1} x0`); - expect(r.y0).to.be.closeTo(e.y0, 10, `${desc} beziercurve #${i + 1} y0`); - expect(r.x1).to.be.closeTo(e.x1, 10, `${desc} beziercurve #${i + 1} x1`); - expect(r.y1).to.be.closeTo(e.y1, 10, `${desc} beziercurve #${i + 1} y1`); - expect(r.cx0).to.be.closeTo(e.cx0, 10, `${desc} beziercurve #${i + 1} cx0`); - expect(r.cy0).to.be.closeTo(e.cy0, 10, `${desc} beziercurve #${i + 1} cy0`); - expect(r.cx1).to.be.closeTo(e.cx1, 10, `${desc} beziercurve #${i + 1} cx1`); - expect(r.cy1).to.be.closeTo(e.cy1, 10, `${desc} beziercurve #${i + 1} cy1`); - break; - default: - throw new Error(`Unknown path type ${r.type}`); - } - } - }); -}; - -(() => { - const testRunnerUrl = location.href; - const hasHistoryApi = - typeof window.history !== 'undefined' && typeof window.history.replaceState !== 'undefined'; - - if (typeof reftests === 'undefined') { - it('Test harness prerequisite check', () => { - throw new Error( - 'No reftests list defined, run "npm run create-reftest-list" to create it' - ); - }); - } else { - Object.keys(reftests.testList) - .filter(test => { - return ( - !Array.isArray(reftests.ignoredTests[test]) || - reftests.ignoredTests[test].indexOf(platform.name) === -1 - ); - }) - .forEach(url => { - describe(url, function() { - this.timeout(60000); - this.retries(2); - const windowWidth = 800; - const windowHeight = 600; - const testContainer = document.createElement('iframe'); - const REFTEST = reftests.testList[url]; - testContainer.width = windowWidth; - testContainer.height = windowHeight; - testContainer.style.visibility = 'hidden'; - testContainer.style.position = 'fixed'; - testContainer.style.left = '10000px'; - - before(done => { - testContainer.onload = () => done(); - - testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); - if (hasHistoryApi) { - // Chrome does not resolve relative background urls correctly inside of a nested iframe - try { - history.replaceState(null, '', url); - } catch (e) {} - } - - document.body.appendChild(testContainer); - }); - after(() => { - if (hasHistoryApi) { - try { - history.replaceState(null, '', testRunnerUrl); - } catch (e) {} - } - document.body.removeChild(testContainer); - }); - it('Should render untainted canvas', () => { - return testContainer.contentWindow - .html2canvas( - testContainer.contentWindow.forceElement || - testContainer.contentWindow.document.documentElement, - { - removeContainer: true, - backgroundColor: '#ffffff', - proxy: 'http://localhost:8081/proxy', - ...(testContainer.contentWindow.h2cOptions || {}) - } - ) - .then(canvas => { - try { - canvas - .getContext('2d') - .getImageData(0, 0, canvas.width, canvas.height); - } catch (e) { - return Promise.reject('Canvas is tainted'); - } - - const delta = 10; - - if (REFTEST && query.refTest === 'true') { - const RESULTS = parseRefTest(result); - REFTEST.forEach(({action, line, ...args}, i) => { - const RESULT = RESULTS[i]; - expect(RESULT.action).to.equal(action, `Line ${line}`); - - const desc = `Line ${line} ${action}`; - - switch (action) { - case 'Window': - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - delta, - `${desc} height` - ); - break; - - case 'Rectangle': - expect(RESULT.x).to.equal(args.x, `${desc} x`); - expect(RESULT.y).to.equal(args.y, `${desc} y`); - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - delta, - `${desc} height` - ); - break; - - case 'Fill': - expect(RESULT.color).to.equal( - args.color, - `${desc} color` - ); - break; - - case 'Opacity': - expect(RESULT.opacity).to.equal( - args.opacity, - `${desc} opacity` - ); - break; - - case 'Text': - expect(RESULT.font).to.equal( - args.font, - `${desc} font` - ); - break; - - case 'T': - expect(RESULT.x).to.be.closeTo( - args.x, - 10, - `${desc} x` - ); - expect(RESULT.y).to.be.closeTo( - args.y, - 10, - `${desc} y` - ); - expect(RESULT.text).to.equal( - args.text, - `${desc} text` - ); - break; - - case 'Transform': - expect(RESULT.x).to.be.closeTo( - args.x, - 10, - `${desc} x` - ); - expect(RESULT.y).to.be.closeTo( - args.y, - 10, - `${desc} y` - ); - expect(RESULT.matrix).to.equal( - args.matrix, - `${desc} matrix` - ); - break; - - case 'Repeat': - expect(RESULT.x).to.be.closeTo( - args.x, - 10, - `${desc} x` - ); - expect(RESULT.y).to.be.closeTo( - args.y, - 10, - `${desc} y` - ); - expect(RESULT.width).to.be.closeTo( - args.width, - 3, - `${desc} width` - ); - expect(RESULT.height).to.be.closeTo( - args.height, - 3, - `${desc} height` - ); - expect(RESULT.imageSrc).to.equal( - args.imageSrc, - `${desc} imageSrc` - ); - assertPath(RESULT.path, args.path, desc); - break; - - case 'Gradient': - expect(RESULT.x).to.be.closeTo( - args.x, - 10, - `${desc} x` - ); - expect(RESULT.y).to.be.closeTo( - args.y, - 10, - `${desc} y` - ); - expect(RESULT.x0).to.be.closeTo( - args.x0, - 5, - `${desc} x0` - ); - expect(RESULT.y0).to.be.closeTo( - args.y0, - 5, - `${desc} y0` - ); - expect(RESULT.x1).to.be.closeTo( - args.x1, - 5, - `${desc} x1` - ); - expect(RESULT.y1).to.be.closeTo( - args.y1, - 5, - `${desc} y1` - ); - expect(RESULT.stops).to.equal( - args.stops, - `${desc} stops` - ); - expect(RESULT.width).to.equal( - args.width, - `${desc} width` - ); - expect(RESULT.height).to.equal( - args.height, - `${desc} height` - ); - - break; - - case 'Draw image': - expect(RESULT.imageSrc).to.equal( - args.imageSrc, - `${desc} stops` - ); - expect(RESULT.sx).to.equal(args.sx, `${desc} sx`); - expect(RESULT.sy).to.equal(args.sy, `${desc} sy`); - expect(RESULT.dx).to.equal(args.dx, `${desc} dx`); - expect(RESULT.dy).to.equal(args.dy, `${desc} dy`); - expect(RESULT.sw).to.equal(args.sw, `${desc} sw`); - expect(RESULT.sh).to.equal(args.sh, `${desc} sh`); - expect(RESULT.dw).to.equal(args.dw, `${desc} dw`); - expect(RESULT.dh).to.equal(args.dh, `${desc} dh`); - break; - - case 'Clip': - assertPath(RESULT.path, args.path, desc); - break; - - case 'Shape': - expect(RESULT.color).to.equal( - args.color, - `${desc} color` - ); - assertPath(RESULT.path, args.path, desc); - break; - - default: - console.log(RESULT); - throw new Error(`Unrecognized action ${action}`); - } - }); - } else if (DOWNLOAD_REFTESTS) { - downloadResult( - url - .slice(url.lastIndexOf('/') + 1) - .replace(/\.html$/i, '.txt'), - result - ); - } - - if (window.__karma__) { - return new Promise((resolve, reject) => { - const xhr = - 'withCredentials' in new XMLHttpRequest() - ? new XMLHttpRequest() - : new XDomainRequest(); - - xhr.onload = () => { - if ( - typeof xhr.status !== 'number' || - xhr.status === 200 - ) { - resolve(); - } else { - reject( - `Failed to send screenshot with status ${xhr.status}` - ); - } - }; - xhr.onerror = reject; - - xhr.open('POST', 'http://localhost:8000/screenshot', true); - xhr.send(JSON.stringify({ - screenshot: canvas.toDataURL(), - test: url, - platform: { - name: platform.name, - version: platform.version - }, - devicePixelRatio: window.devicePixelRatio || 1, - windowWidth: window.innerWidth, - windowHeight: window.innerHeight - })); - }); - - } - }); - }); - }); - }); - } -})(); diff --git a/tests/testrunner.ts b/tests/testrunner.ts new file mode 100644 index 000000000..cceece721 --- /dev/null +++ b/tests/testrunner.ts @@ -0,0 +1,115 @@ +import {testList, ignoredTests} from '../build/reftests'; +// @ts-ignore +import {default as platform} from 'platform'; +// @ts-ignore +import Promise from 'es6-promise'; + +const testRunnerUrl = location.href; +const hasHistoryApi = typeof window.history !== 'undefined' && typeof window.history.replaceState !== 'undefined'; + +const uploadResults = (canvas: HTMLCanvasElement, url: string) => { + return new Promise((resolve: () => void, reject: (error: string) => void) => { + // @ts-ignore + const xhr = 'withCredentials' in new XMLHttpRequest() ? new XMLHttpRequest() : new XDomainRequest(); + + xhr.onload = () => { + if (typeof xhr.status !== 'number' || xhr.status === 200) { + resolve(); + } else { + reject(`Failed to send screenshot with status ${xhr.status}`); + } + }; + xhr.onerror = reject; + + xhr.open('POST', 'http://localhost:8000/screenshot', true); + xhr.send( + JSON.stringify({ + screenshot: canvas.toDataURL(), + test: url, + platform: { + name: platform.name, + version: platform.version + }, + devicePixelRatio: window.devicePixelRatio || 1, + windowWidth: window.innerWidth, + windowHeight: window.innerHeight + }) + ); + }); +}; + +testList + .filter(test => { + return !Array.isArray(ignoredTests[test]) || ignoredTests[test].indexOf(platform.name || '') === -1; + }) + .forEach(url => { + describe(url, function() { + this.timeout(60000); + this.retries(2); + const windowWidth = 800; + const windowHeight = 600; + const testContainer = document.createElement('iframe'); + testContainer.width = windowWidth.toString(); + testContainer.height = windowHeight.toString(); + testContainer.style.visibility = 'hidden'; + testContainer.style.position = 'fixed'; + testContainer.style.left = '10000px'; + + before(done => { + testContainer.onload = () => done(); + + testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); + if (hasHistoryApi) { + // Chrome does not resolve relative background urls correctly inside of a nested iframe + try { + history.replaceState(null, '', url); + } catch (e) {} + } + + document.body.appendChild(testContainer); + }); + after(() => { + if (hasHistoryApi) { + try { + history.replaceState(null, '', testRunnerUrl); + } catch (e) {} + } + document.body.removeChild(testContainer); + }); + it('Should render untainted canvas', () => { + const contentWindow = testContainer.contentWindow; + if (!contentWindow) { + throw new Error('Window not found for iframe'); + } + + return ( + contentWindow + // @ts-ignore + .html2canvas(contentWindow.forceElement || contentWindow.document.documentElement, { + removeContainer: true, + backgroundColor: '#ffffff', + proxy: 'http://localhost:8081/proxy', + // @ts-ignore + ...(contentWindow.h2cOptions || {}) + }) + .then((canvas: HTMLCanvasElement) => { + try { + (canvas.getContext('2d') as CanvasRenderingContext2D).getImageData( + 0, + 0, + canvas.width, + canvas.height + ); + } catch (e) { + return Promise.reject('Canvas is tainted'); + } + + // @ts-ignore + if (window.__karma__) { + return uploadResults(canvas, url); + } + }) + ); + }); + }); + }); diff --git a/tsconfig.json b/tsconfig.json index cfd1a02e7..e314348a5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,16 @@ "noUnusedParameters": true, "strictNullChecks": true, "strictPropertyInitialization": true, - "resolveJsonModule": true - } + "resolveJsonModule": true, + "typeRoots": [ "./types", "./node_modules/@types"], + "target": "es5", + "lib": ["es2015", "dom"], + "sourceMap": true, + "outDir": "dist/lib", + "declaration": true, + "declarationDir": "dist/types" + }, + "include": [ + "src" + ] } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 8e7ef8c21..000000000 --- a/webpack.config.js +++ /dev/null @@ -1,87 +0,0 @@ -const webpack = require('webpack'); -const fs = require('fs'); -const path = require('path'); -const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); -const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'))); - -const banner = -`${pkg.title} ${pkg.version} <${pkg.homepage}> -Copyright (c) ${(new Date()).getFullYear()} ${pkg.author.name} <${pkg.author.url}> -Released under ${pkg.license} License`; - -const plugins = [ - new webpack.DefinePlugin({ - '__DEV__': true, - '__VERSION__': JSON.stringify(pkg.version) - }), - new webpack.BannerPlugin(banner) -]; - -const modules = { - rules: [{ - test: /\.js$/, - exclude: /node_modules/, - loader: 'babel-loader' - }] -}; - -module.exports = [ - { - mode: 'development', - entry: './src/index.js', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'html2canvas.js', - library: 'html2canvas', - libraryExport: 'default', - libraryTarget: 'umd' - }, - module: modules, - plugins - }, - { - mode: 'production', - entry: './src/index.js', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'html2canvas.min.js', - library: 'html2canvas', - libraryExport: 'default', - libraryTarget: 'umd' - }, - module: modules, - plugins: [ - new webpack.DefinePlugin({ - '__DEV__': false, - '__VERSION__': JSON.stringify(pkg.version) - }), - new UglifyJSPlugin(), - new webpack.BannerPlugin(banner) - ] - }, - { - mode: 'production', - entry: './src/renderer/RefTestRenderer.js', - output: { - path: path.resolve(__dirname, 'build'), - filename: 'RefTestRenderer.js', - library: 'RefTestRenderer', - libraryExport: 'default', - libraryTarget: 'umd' - }, - module: modules, - plugins - }, - { - mode: 'production', - entry: './tests/testrunner.js', - output: { - path: path.resolve(__dirname, 'build'), - filename: 'testrunner.js', - library: 'testrunner', - libraryTarget: 'umd' - }, - module: modules, - plugins - } -]; diff --git a/www/package-lock.json b/www/package-lock.json index 08bc679e2..6a8ba4d32 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -9,28 +9,28 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "requires": { - "@babel/highlight": "7.0.0" + "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", - "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/generator": "7.4.0", - "@babel/helpers": "7.4.3", - "@babel/parser": "7.4.3", - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0", - "convert-source-map": "1.5.1", - "debug": "4.1.1", - "json5": "2.1.0", - "lodash": "4.17.11", - "resolve": "1.10.0", - "semver": "5.4.1", - "source-map": "0.5.7" + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", + "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.5", + "@babel/types": "^7.4.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "dependencies": { "debug": { @@ -38,27 +38,9 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.1" - } - }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "requires": { - "minimist": "1.2.0" + "ms": "^2.1.1" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -67,27 +49,15 @@ } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "requires": { - "@babel/types": "7.4.0", - "jsesc": "2.5.2", - "lodash": "4.17.11", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" } }, "@babel/helper-annotate-as-pure": { @@ -95,7 +65,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -103,8 +73,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", "requires": { - "@babel/helper-explode-assignable-expression": "7.1.0", - "@babel/types": "7.4.0" + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-builder-react-jsx": { @@ -112,48 +82,41 @@ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", "requires": { - "@babel/types": "7.4.0", - "esutils": "2.0.2" + "@babel/types": "^7.3.0", + "esutils": "^2.0.0" } }, "@babel/helper-call-delegate": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", - "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", "requires": { - "@babel/helper-hoist-variables": "7.4.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.3.tgz", - "integrity": "sha512-UMl3TSpX11PuODYdWGrUeW6zFkdYhDn7wRLrOuNVM6f9L+S9CzmDXYyrp3MTHcwWjnzur1f/Op8A7iYZWya2Yg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz", + "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==", "requires": { - "@babel/helper-function-name": "7.1.0", - "@babel/helper-member-expression-to-functions": "7.0.0", - "@babel/helper-optimise-call-expression": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-replace-supers": "7.4.0", - "@babel/helper-split-export-declaration": "7.4.0" + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4" } }, "@babel/helper-define-map": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", - "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", + "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", "requires": { - "@babel/helper-function-name": "7.1.0", - "@babel/types": "7.4.0", - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" } }, "@babel/helper-explode-assignable-expression": { @@ -161,8 +124,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", "requires": { - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-function-name": { @@ -170,9 +133,9 @@ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "requires": { - "@babel/helper-get-function-arity": "7.0.0", - "@babel/template": "7.4.0", - "@babel/types": "7.4.0" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { @@ -180,15 +143,15 @@ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-hoist-variables": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", - "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-member-expression-to-functions": { @@ -196,7 +159,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-imports": { @@ -204,27 +167,20 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-module-transforms": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", - "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", + "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", "requires": { - "@babel/helper-module-imports": "7.0.0", - "@babel/helper-simple-access": "7.1.0", - "@babel/helper-split-export-declaration": "7.4.0", - "@babel/template": "7.4.0", - "@babel/types": "7.4.0", - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" } }, "@babel/helper-optimise-call-expression": { @@ -232,7 +188,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.0.0" } }, "@babel/helper-plugin-utils": { @@ -241,18 +197,11 @@ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" }, "@babel/helper-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", - "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", + "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", "requires": { - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "lodash": "^4.17.11" } }, "@babel/helper-remap-async-to-generator": { @@ -260,22 +209,22 @@ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", "requires": { - "@babel/helper-annotate-as-pure": "7.0.0", - "@babel/helper-wrap-function": "7.2.0", - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-replace-supers": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", - "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", + "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", "requires": { - "@babel/helper-member-expression-to-functions": "7.0.0", - "@babel/helper-optimise-call-expression": "7.0.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/helper-simple-access": { @@ -283,16 +232,16 @@ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", "requires": { - "@babel/template": "7.4.0", - "@babel/types": "7.4.0" + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "requires": { - "@babel/types": "7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/helper-wrap-function": { @@ -300,20 +249,20 @@ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "requires": { - "@babel/helper-function-name": "7.1.0", - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" } }, "@babel/helpers": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", - "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "requires": { - "@babel/template": "7.4.0", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -321,66 +270,40 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "requires": { - "chalk": "2.4.2", - "esutils": "2.0.2", - "js-tokens": "4.0.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" }, "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "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" - } } } }, "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==" + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-remap-async-to-generator": "7.1.0", - "@babel/plugin-syntax-async-generators": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz", - "integrity": "sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz", + "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==", "requires": { - "@babel/helper-create-class-features-plugin": "7.4.3", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-proposal-json-strings": { @@ -388,17 +311,17 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-json-strings": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", - "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", + "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-object-rest-spread": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -406,18 +329,18 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", - "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-regex": "7.4.3", - "regexpu-core": "4.5.4" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-syntax-async-generators": { @@ -425,7 +348,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-class-properties": { @@ -433,7 +356,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz", "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-dynamic-import": { @@ -441,7 +364,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-flow": { @@ -449,7 +372,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-json-strings": { @@ -457,7 +380,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-jsx": { @@ -465,7 +388,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -473,7 +396,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-syntax-optional-catch-binding": { @@ -481,7 +404,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-arrow-functions": { @@ -489,17 +412,17 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", - "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", + "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", "requires": { - "@babel/helper-module-imports": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-remap-async-to-generator": "7.1.0" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -507,45 +430,31 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", - "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" } }, "@babel/plugin-transform-classes": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", - "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", + "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", "requires": { - "@babel/helper-annotate-as-pure": "7.0.0", - "@babel/helper-define-map": "7.4.0", - "@babel/helper-function-name": "7.1.0", - "@babel/helper-optimise-call-expression": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-replace-supers": "7.4.0", - "@babel/helper-split-export-declaration": "7.4.0", - "globals": "11.11.0" - }, - "dependencies": { - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" - } + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { @@ -553,25 +462,25 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", - "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", + "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", - "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-regex": "7.4.3", - "regexpu-core": "4.5.4" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/plugin-transform-duplicate-keys": { @@ -579,7 +488,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -587,34 +496,34 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz", - "integrity": "sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz", + "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-flow": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", - "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", - "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", "requires": { - "@babel/helper-function-name": "7.1.0", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-literals": { @@ -622,7 +531,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-member-expression-literals": { @@ -630,7 +539,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-amd": { @@ -638,27 +547,27 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "requires": { - "@babel/helper-module-transforms": "7.4.3", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", - "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", + "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", "requires": { - "@babel/helper-module-transforms": "7.4.3", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-simple-access": "7.1.0" + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", - "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", + "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", "requires": { - "@babel/helper-hoist-variables": "7.4.0", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-modules-umd": { @@ -666,24 +575,24 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", "requires": { - "@babel/helper-module-transforms": "7.4.3", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", - "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", + "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", "requires": { - "regexp-tree": "0.1.5" + "regexp-tree": "^0.1.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", - "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-object-super": { @@ -691,18 +600,18 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-replace-supers": "7.4.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", - "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", "requires": { - "@babel/helper-call-delegate": "7.4.0", - "@babel/helper-get-function-arity": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-property-literals": { @@ -710,7 +619,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-react-display-name": { @@ -718,7 +627,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-react-jsx": { @@ -726,9 +635,9 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", "requires": { - "@babel/helper-builder-react-jsx": "7.3.0", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-jsx": "7.2.0" + "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@babel/plugin-transform-react-jsx-self": { @@ -736,8 +645,8 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-jsx": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@babel/plugin-transform-react-jsx-source": { @@ -745,16 +654,16 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-syntax-jsx": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@babel/plugin-transform-regenerator": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", - "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", "requires": { - "regenerator-transform": "0.13.4" + "regenerator-transform": "^0.14.0" } }, "@babel/plugin-transform-reserved-words": { @@ -762,18 +671,18 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-runtime": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.3.tgz", - "integrity": "sha512-7Q61bU+uEI7bCUFReT1NKn7/X6sDQsZ7wL1sJ9IYMAO7cI+eg6x9re1cEw2fCRMbbTVyoeUKWSV1M6azEfKCfg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz", + "integrity": "sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==", "requires": { - "@babel/helper-module-imports": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0", - "resolve": "1.10.0", - "semver": "5.7.0" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "resolve": "^1.8.1", + "semver": "^5.5.1" }, "dependencies": { "semver": { @@ -788,7 +697,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-spread": { @@ -796,7 +705,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-sticky-regex": { @@ -804,17 +713,17 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-regex": "7.4.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" } }, "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", "requires": { - "@babel/helper-annotate-as-pure": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-typeof-symbol": { @@ -822,103 +731,91 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", "requires": { - "@babel/helper-plugin-utils": "7.0.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", - "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/helper-regex": "7.4.3", - "regexpu-core": "4.5.4" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" } }, "@babel/polyfill": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.3.tgz", - "integrity": "sha512-rkv8WIvJshA5Ev8iNMGgz5WZkRtgtiPexiT7w5qevGTuT7ZBfM3de9ox1y9JR5/OXb/sWGBbWlHNa7vQKqku3Q==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", "requires": { - "core-js": "2.6.5", - "regenerator-runtime": "0.13.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==" - }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" - } + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" } }, "@babel/preset-env": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz", - "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==", - "requires": { - "@babel/helper-module-imports": "7.0.0", - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-proposal-async-generator-functions": "7.2.0", - "@babel/plugin-proposal-json-strings": "7.2.0", - "@babel/plugin-proposal-object-rest-spread": "7.4.3", - "@babel/plugin-proposal-optional-catch-binding": "7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "7.4.0", - "@babel/plugin-syntax-async-generators": "7.2.0", - "@babel/plugin-syntax-json-strings": "7.2.0", - "@babel/plugin-syntax-object-rest-spread": "7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "7.2.0", - "@babel/plugin-transform-arrow-functions": "7.2.0", - "@babel/plugin-transform-async-to-generator": "7.4.0", - "@babel/plugin-transform-block-scoped-functions": "7.2.0", - "@babel/plugin-transform-block-scoping": "7.4.0", - "@babel/plugin-transform-classes": "7.4.3", - "@babel/plugin-transform-computed-properties": "7.2.0", - "@babel/plugin-transform-destructuring": "7.4.3", - "@babel/plugin-transform-dotall-regex": "7.4.3", - "@babel/plugin-transform-duplicate-keys": "7.2.0", - "@babel/plugin-transform-exponentiation-operator": "7.2.0", - "@babel/plugin-transform-for-of": "7.4.3", - "@babel/plugin-transform-function-name": "7.4.3", - "@babel/plugin-transform-literals": "7.2.0", - "@babel/plugin-transform-member-expression-literals": "7.2.0", - "@babel/plugin-transform-modules-amd": "7.2.0", - "@babel/plugin-transform-modules-commonjs": "7.4.3", - "@babel/plugin-transform-modules-systemjs": "7.4.0", - "@babel/plugin-transform-modules-umd": "7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "7.4.2", - "@babel/plugin-transform-new-target": "7.4.0", - "@babel/plugin-transform-object-super": "7.2.0", - "@babel/plugin-transform-parameters": "7.4.3", - "@babel/plugin-transform-property-literals": "7.2.0", - "@babel/plugin-transform-regenerator": "7.4.3", - "@babel/plugin-transform-reserved-words": "7.2.0", - "@babel/plugin-transform-shorthand-properties": "7.2.0", - "@babel/plugin-transform-spread": "7.2.2", - "@babel/plugin-transform-sticky-regex": "7.2.0", - "@babel/plugin-transform-template-literals": "7.2.0", - "@babel/plugin-transform-typeof-symbol": "7.2.0", - "@babel/plugin-transform-unicode-regex": "7.4.3", - "@babel/types": "7.4.0", - "browserslist": "4.5.4", - "core-js-compat": "3.0.0", - "invariant": "2.2.2", - "js-levenshtein": "1.1.6", - "semver": "5.7.0" + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", + "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.4", + "@babel/plugin-transform-classes": "^7.4.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-modules-systemjs": "^7.4.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" }, "dependencies": { "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } }, "semver": { @@ -933,11 +830,11 @@ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", "requires": { - "@babel/helper-plugin-utils": "7.0.0", - "@babel/plugin-transform-react-display-name": "7.2.0", - "@babel/plugin-transform-react-jsx": "7.3.0", - "@babel/plugin-transform-react-jsx-self": "7.2.0", - "@babel/plugin-transform-react-jsx-source": "7.2.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" } }, "@babel/runtime": { @@ -945,7 +842,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", "requires": { - "regenerator-runtime": "0.13.2" + "regenerator-runtime": "^0.13.2" }, "dependencies": { "regenerator-runtime": { @@ -956,29 +853,29 @@ } }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "requires": { - "@babel/code-frame": "7.0.0", - "@babel/parser": "7.4.3", - "@babel/types": "7.4.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", "requires": { - "@babel/code-frame": "7.0.0", - "@babel/generator": "7.4.0", - "@babel/helper-function-name": "7.1.0", - "@babel/helper-split-export-declaration": "7.4.0", - "@babel/parser": "7.4.3", - "@babel/types": "7.4.0", - "debug": "4.1.1", - "globals": "11.11.0", - "lodash": "4.17.11" + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" }, "dependencies": { "debug": { @@ -986,19 +883,9 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -1007,25 +894,13 @@ } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "requires": { - "esutils": "2.0.2", - "lodash": "4.17.11", - "to-fast-properties": "2.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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=" - } + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" } }, "@gatsbyjs/relay-compiler": { @@ -1033,63 +908,37 @@ "resolved": "https://registry.npmjs.org/@gatsbyjs/relay-compiler/-/relay-compiler-2.0.0-printer-fix.2.tgz", "integrity": "sha512-7GeCCEQ7O15lMTT/SXy9HuRde4cv5vs465ZnLK2QCajSDLior+20yrMqHn1PGsJYK6nNZH7p3lw9qTCpqmuc7Q==", "requires": { - "@babel/generator": "7.4.0", - "@babel/parser": "7.4.3", - "@babel/polyfill": "7.4.3", - "@babel/runtime": "7.4.3", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0", - "babel-preset-fbjs": "3.2.0", - "chalk": "2.4.2", - "fast-glob": "2.2.6", - "fb-watchman": "2.0.0", - "fbjs": "1.0.0", - "immutable": "3.7.6", - "nullthrows": "1.1.1", + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/polyfill": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.1.2", + "chalk": "^2.4.1", + "fast-glob": "^2.2.2", + "fb-watchman": "^2.0.0", + "fbjs": "^1.0.0", + "immutable": "~3.7.6", + "nullthrows": "^1.1.0", "relay-runtime": "2.0.0", - "signedsource": "1.0.0", - "yargs": "9.0.1" + "signedsource": "^1.0.0", + "yargs": "^9.0.0" }, "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, "fbjs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", "requires": { - "core-js": "2.5.1", - "fbjs-css-vars": "1.0.2", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.19" - } - }, - "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" + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" } }, "ua-parser-js": { @@ -1109,8 +958,8 @@ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "requires": { - "call-me-maybe": "1.0.1", - "glob-to-regexp": "0.3.0" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, "@nodelib/fs.stat": { @@ -1123,38 +972,10 @@ "resolved": "https://registry.npmjs.org/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz", "integrity": "sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw==", "requires": { - "chalk": "2.4.2", - "error-stack-parser": "2.0.2", - "string-width": "2.1.1", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "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.1" - } - }, - "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.5.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" - } - } + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0", + "strip-ansi": "^3" } }, "@reach/router": { @@ -1162,41 +983,11 @@ "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.2.1.tgz", "integrity": "sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==", "requires": { - "create-react-context": "0.2.3", - "invariant": "2.2.4", - "prop-types": "15.7.2", - "react-lifecycles-compat": "3.0.4", - "warning": "3.0.0" - }, - "dependencies": { - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "1.3.1" - } - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "3.0.2" - } - } - } - } + "create-react-context": "^0.2.1", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "warning": "^3.0.0" } }, "@stefanprobst/lokijs": { @@ -1229,9 +1020,9 @@ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.36.tgz", "integrity": "sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg==", "requires": { - "@types/events": "3.0.0", - "@types/minimatch": "3.0.3", - "@types/node": "7.10.5" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, "@types/history": { @@ -1269,8 +1060,8 @@ "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.2.3.tgz", "integrity": "sha512-Zp0AdVhoJXjwsgp8pDPVEMnAH5eHU64hi5EnPT1Jerddqwiy0O87KFrnZKd1DKdO87cU120n2d3SnKKPtf4wFA==", "requires": { - "@types/history": "4.7.2", - "@types/react": "16.8.12" + "@types/history": "*", + "@types/react": "*" } }, "@types/react": { @@ -1278,8 +1069,8 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.12.tgz", "integrity": "sha512-MZZiv11BQhsxFp5DHDmRKBi6Nv3jwOhRiFFDE7ZJ1+rb52gdOd9y/qY0+5wyV/PQVK9926wFMjpQj3BJ18pb4Q==", "requires": { - "@types/prop-types": "15.7.0", - "csstype": "2.6.3" + "@types/prop-types": "*", + "csstype": "^2.2.0" } }, "@types/tmp": { @@ -1351,7 +1142,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", "requires": { - "@xtuc/ieee754": "1.2.0" + "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { @@ -1452,12 +1243,12 @@ "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" }, "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "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.22", - "negotiator": "0.6.1" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, "acorn": { @@ -1470,7 +1261,7 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "requires": { - "acorn": "5.7.3" + "acorn": "^5.0.0" }, "dependencies": { "acorn": { @@ -1500,10 +1291,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ajv-errors": { @@ -1522,11 +1313,46 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "requires": { - "string-width": "2.1.1" + "string-width": "^3.0.0" + }, + "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==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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" + } + } } }, "ansi-colors": { @@ -1550,48 +1376,20 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "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" + } }, "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.10", - "normalize-path": "2.1.1" - } - }, - "apollo-link": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.11.tgz", - "integrity": "sha512-PQvRCg13VduLy3X/0L79M6uOpTh5iHdxnxYuo8yL7sJlWybKRJwsv4IcRBJpMFbChOOaHY7Og9wgPo6DLKDKDA==", - "requires": { - "apollo-utilities": "1.2.1", - "ts-invariant": "0.3.2", - "tslib": "1.9.3", - "zen-observable-ts": "0.8.18" - } - }, - "apollo-utilities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.2.1.tgz", - "integrity": "sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg==", - "requires": { - "fast-json-stable-stringify": "2.0.0", - "ts-invariant": "0.2.1", - "tslib": "1.9.3" - }, - "dependencies": { - "ts-invariant": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz", - "integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==", - "requires": { - "tslib": "1.9.3" - } - } + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "aproba": { @@ -1599,12 +1397,17 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" + }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "aria-query": { @@ -1613,7 +1416,7 @@ "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", "requires": { "ast-types-flow": "0.0.7", - "commander": "2.20.0" + "commander": "^2.11.0" } }, "arr-diff": { @@ -1651,8 +1454,8 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.13.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-iterate": { @@ -1675,7 +1478,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -1703,29 +1506,22 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "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.2" - } - }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -1744,11 +1540,6 @@ } } }, - "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", @@ -1779,51 +1570,45 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, - "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==" }, + "auto-bind": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.0.tgz", + "integrity": "sha512-qZuFvkes1eh9lB2mg8/HG18C+5GIO51r+RrCSst/lh+i5B1CtVlkhTE488M805Nr3dKl0sM/pIFKSKUIlg3zUg==", + "optional": true, + "requires": { + "@types/react": "^16.8.12" + } + }, "autoprefixer": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.0.tgz", - "integrity": "sha512-hMKcyHsZn5+qL6AUeP3c8OyuteZ4VaUlg+fWbyl8z7PqsKHF/Bf8/px3K6AT8aMzDkBo8Bc11245MM+itDBOxQ==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", + "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", "requires": { - "browserslist": "4.5.4", - "caniuse-lite": "1.0.30000957", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "browserslist": "^4.5.4", + "caniuse-lite": "^1.0.30000957", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.14", + "postcss-value-parser": "^3.3.1" }, "dependencies": { "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } } } }, - "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.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, "axobject-query": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", @@ -1837,33 +1622,69 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } } }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + }, "babel-eslint": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", "requires": { - "@babel/code-frame": "7.0.0", - "@babel/parser": "7.4.3", - "@babel/traverse": "7.4.3", - "@babel/types": "7.4.0", + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0" + "eslint-visitor-keys": "^1.0.0" } }, "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "requires": { - "find-cache-dir": "2.1.0", - "loader-utils": "1.2.3", - "mkdirp": "0.5.1", - "util.promisify": "1.0.0" + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } } }, "babel-plugin-add-module-exports": { @@ -1876,7 +1697,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz", "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0" + "babel-plugin-syntax-dynamic-import": "^6.18.0" } }, "babel-plugin-macros": { @@ -1884,9 +1705,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz", "integrity": "sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q==", "requires": { - "@babel/runtime": "7.4.3", - "cosmiconfig": "5.2.0", - "resolve": "1.10.0" + "@babel/runtime": "^7.4.2", + "cosmiconfig": "^5.2.0", + "resolve": "^1.10.0" } }, "babel-plugin-remove-graphql-queries": { @@ -1909,33 +1730,33 @@ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz", "integrity": "sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g==", "requires": { - "@babel/plugin-proposal-class-properties": "7.4.0", - "@babel/plugin-proposal-object-rest-spread": "7.4.3", - "@babel/plugin-syntax-class-properties": "7.2.0", - "@babel/plugin-syntax-flow": "7.2.0", - "@babel/plugin-syntax-jsx": "7.2.0", - "@babel/plugin-syntax-object-rest-spread": "7.2.0", - "@babel/plugin-transform-arrow-functions": "7.2.0", - "@babel/plugin-transform-block-scoped-functions": "7.2.0", - "@babel/plugin-transform-block-scoping": "7.4.0", - "@babel/plugin-transform-classes": "7.4.3", - "@babel/plugin-transform-computed-properties": "7.2.0", - "@babel/plugin-transform-destructuring": "7.4.3", - "@babel/plugin-transform-flow-strip-types": "7.4.0", - "@babel/plugin-transform-for-of": "7.4.3", - "@babel/plugin-transform-function-name": "7.4.3", - "@babel/plugin-transform-literals": "7.2.0", - "@babel/plugin-transform-member-expression-literals": "7.2.0", - "@babel/plugin-transform-modules-commonjs": "7.4.3", - "@babel/plugin-transform-object-super": "7.2.0", - "@babel/plugin-transform-parameters": "7.4.3", - "@babel/plugin-transform-property-literals": "7.2.0", - "@babel/plugin-transform-react-display-name": "7.2.0", - "@babel/plugin-transform-react-jsx": "7.3.0", - "@babel/plugin-transform-shorthand-properties": "7.2.0", - "@babel/plugin-transform-spread": "7.2.2", - "@babel/plugin-transform-template-literals": "7.2.0", - "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0" + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" } }, "babel-preset-gatsby": { @@ -1943,12 +1764,12 @@ "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.1.11.tgz", "integrity": "sha512-n8Tg1r1J9juDc8GI0afrOFrEJ4No+lfylcYN2QLi90dvGl9VlfZIqoEf9bpw1maop+Ksz56NavxP6U0BHeZLqg==", "requires": { - "@babel/plugin-proposal-class-properties": "7.4.0", - "@babel/plugin-syntax-dynamic-import": "7.2.0", - "@babel/plugin-transform-runtime": "7.4.3", - "@babel/preset-env": "7.4.3", - "@babel/preset-react": "7.0.0", - "babel-plugin-macros": "2.5.1" + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/preset-env": "^7.4.1", + "@babel/preset-react": "^7.0.0", + "babel-plugin-macros": "^2.4.2" } }, "babel-runtime": { @@ -1956,8 +1777,15 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, "backo2": { @@ -1980,13 +1808,13 @@ "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.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "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": { @@ -1994,7 +1822,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -2002,7 +1830,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -2010,7 +1838,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2018,9 +1846,9 @@ "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" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { @@ -2055,14 +1883,6 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, - "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.5" - } - }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -2076,7 +1896,7 @@ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-0.1.4.tgz", "integrity": "sha512-7V92EnOdjWOB9lKsVsthCcu1FdFT5qNJVTiOgGy5wPuTsSptMMxm2G1FGHgWu22MyX3tyDRzTWk4lxY2Ppdu7A==", "requires": { - "opn": "5.5.0" + "opn": "^5.4.0" } }, "better-queue": { @@ -2084,9 +1904,9 @@ "resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.10.tgz", "integrity": "sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA==", "requires": { - "better-queue-memory": "1.0.3", - "node-eta": "0.9.0", - "uuid": "3.3.2" + "better-queue-memory": "^1.0.1", + "node-eta": "^0.9.0", + "uuid": "^3.0.0" } }, "better-queue-memory": { @@ -2120,28 +1940,33 @@ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", + "bytes": "3.1.0", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "1.6.16" + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "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" + "safer-buffer": ">= 2.1.2 < 3" } } } @@ -2151,12 +1976,12 @@ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "requires": { - "array-flatten": "2.1.2", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.3", - "multicast-dns-service-types": "1.1.0" + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" }, "dependencies": { "array-flatten": { @@ -2177,43 +2002,56 @@ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" }, "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.4.2", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.1" + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "type-fest": "^0.3.0", + "widest-line": "^2.0.0" }, "dependencies": { - "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.1" - } + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "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": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -2223,7 +2061,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -2232,16 +2070,16 @@ "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" } }, "brorand": { @@ -2254,12 +2092,12 @@ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -2267,9 +2105,9 @@ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.2", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -2277,10 +2115,10 @@ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" }, "dependencies": { "safe-buffer": { @@ -2295,8 +2133,8 @@ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "bn.js": "4.11.8", - "randombytes": "2.1.0" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -2304,13 +2142,13 @@ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.1", - "inherits": "2.0.3", - "parse-asn1": "5.1.4" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -2318,7 +2156,7 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { - "pako": "1.0.10" + "pako": "~1.0.5" } }, "browserslist": { @@ -2326,8 +2164,8 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124" + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" } }, "bser": { @@ -2335,7 +2173,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "requires": { - "node-int64": "0.4.0" + "node-int64": "^0.4.0" } }, "buffer": { @@ -2343,9 +2181,9 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.13", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-alloc": { @@ -2353,8 +2191,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.0" + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" } }, "buffer-alloc-unsafe": { @@ -2402,39 +2240,26 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", "requires": { - "bluebird": "3.5.4", - "chownr": "1.1.1", - "figgy-pudding": "3.5.1", - "glob": "7.1.3", - "graceful-fs": "4.1.15", - "lru-cache": "5.1.1", - "mississippi": "3.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.3", - "ssri": "6.0.1", - "unique-filename": "1.1.1", - "y18n": "4.0.0" + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" }, "dependencies": { "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, "graceful-fs": { "version": "4.1.15", @@ -2446,7 +2271,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "yallist": "3.0.3" + "yallist": "^3.0.2" } }, "y18n": { @@ -2466,15 +2291,15 @@ "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" + "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" }, "dependencies": { "isobject": { @@ -2498,8 +2323,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" } } } @@ -2509,8 +2334,22 @@ "resolved": "https://registry.npmjs.org/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.6.tgz", "integrity": "sha512-p1nmcCQH4/jyKqEqUqPSDDcCo0PjFdv56OvtSdUrSIB7s8rAfwETLZ0CHXWdAPyg0QaER/deTvl1dCXyjZ5xAA==", "requires": { - "es6-promisify": "6.0.1", - "lockfile": "1.0.4" + "es6-promisify": "^6.0.0", + "lockfile": "^1.0.4" + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" } }, "call-me-maybe": { @@ -2523,7 +2362,7 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "callsites": "2.0.0" + "callsites": "^2.0.0" } }, "caller-path": { @@ -2531,7 +2370,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "requires": { - "caller-callsite": "2.0.0" + "caller-callsite": "^2.0.0" } }, "callsite": { @@ -2554,9 +2393,9 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "requires": { - "camelcase": "4.1.0", - "map-obj": "2.0.0", - "quick-lru": "1.1.0" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, "caniuse-api": { @@ -2564,54 +2403,47 @@ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "requires": { - "browserslist": "4.5.4", - "caniuse-lite": "1.0.30000957", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" }, "dependencies": { "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } } } }, "caniuse-lite": { - "version": "1.0.30000957", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", - "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==" + "version": "1.0.30000971", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz", + "integrity": "sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==" }, "capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "ccount": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==" }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "character-entities": { @@ -2649,17 +2481,18 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.1", - "normalize-path": "3.0.0", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.2" + "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.0" }, "dependencies": { "normalize-path": { @@ -2679,7 +2512,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", "requires": { - "tslib": "1.9.3" + "tslib": "^1.9.0" } }, "ci-info": { @@ -2692,8 +2525,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "class-utils": { @@ -2701,10 +2534,10 @@ "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.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -2712,7 +2545,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "isobject": { @@ -2723,26 +2556,59 @@ } }, "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "optional": true + }, "cli-table3": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "requires": { - "colors": "1.3.3", - "object-assign": "4.1.1", - "string-width": "2.1.1" + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "optional": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "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=", + "optional": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + } } }, "cli-width": { @@ -2756,9 +2622,34 @@ "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", "optional": true, "requires": { - "good-listener": "1.2.2", - "select": "1.1.2", - "tiny-emitter": "2.1.0" + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } } }, "cliui": { @@ -2766,9 +2657,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -2776,49 +2667,29 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "requires": { - "@types/q": "1.5.2", - "chalk": "2.4.2", - "q": "1.5.1" - }, - "dependencies": { - "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.1" - } - }, - "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.5.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" - } - } + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" } }, "code-point-at": { @@ -2836,17 +2707,17 @@ "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.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", - "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.1.tgz", + "integrity": "sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==", "requires": { - "color-convert": "1.9.1", - "color-string": "1.5.3" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, "color-convert": { @@ -2854,7 +2725,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -2867,8 +2738,8 @@ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { - "color-name": "1.1.3", - "simple-swizzle": "0.2.2" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, "colors": { @@ -2877,14 +2748,6 @@ "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", "optional": true }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "1.0.0" - } - }, "comma-separated-tokens": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz", @@ -2929,11 +2792,11 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "compressible": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", - "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", "requires": { - "mime-db": "1.38.0" + "mime-db": ">= 1.40.0 < 2" } }, "compression": { @@ -2941,13 +2804,13 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "2.0.16", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "1.0.2", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "safe-buffer": { @@ -2967,10 +2830,10 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "configstore": { @@ -2978,12 +2841,12 @@ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.4.2", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" }, "dependencies": { "make-dir": { @@ -2991,15 +2854,15 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } } } }, "confusing-browser-globals": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.6.tgz", - "integrity": "sha512-GzyX86c2TvaagAOR+lHL2Yq4T4EnoBcnojZBcNbxVKSunxmGTnioXHR5Mo2ha/XnCoQw8eurvj6Ta+SwPEPkKg==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz", + "integrity": "sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ==" }, "connect-history-api-fallback": { "version": "1.6.0", @@ -3011,7 +2874,7 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "console-polyfill": { @@ -3030,9 +2893,19 @@ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "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==" + } + } }, "content-type": { "version": "1.0.4", @@ -3044,8 +2917,8 @@ "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.1.tgz", "integrity": "sha1-8+zsZk8uhzoFcOav3T4a5PkkRLc=", "requires": { - "console-polyfill": "0.1.2", - "parse-unit": "1.0.1" + "console-polyfill": "^0.1.2", + "parse-unit": "^1.0.1" } }, "convert-hrtime": { @@ -3054,14 +2927,17 @@ "integrity": "sha1-Gb+yyRYvnhHC8Ewsed4rfoCVxic=" }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + } }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", @@ -3073,12 +2949,12 @@ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.3", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, "copy-descriptor": { @@ -3091,71 +2967,74 @@ "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-1.2.0.tgz", "integrity": "sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw=", "requires": { - "glob": "7.1.2", - "ltcdr": "2.2.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", + "glob": "^7.0.5", + "ltcdr": "^2.2.1", + "minimatch": "^3.0.3", + "mkdirp": "^0.5.1", "noms": "0.0.0", - "through2": "2.0.5" + "through2": "^2.0.1" } }, "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.8.tgz", + "integrity": "sha512-RWlREFU74TEkdXzyl1bka66O3kYp8jeTXrvJZDzVVMH8AiHUSOFpL1yfhQJ+wHocAm1m+4971W1PPzfLuCv1vg==" }, "core-js-compat": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.0.tgz", - "integrity": "sha512-W/Ppz34uUme3LmXWjMgFlYyGnbo1hd9JvA0LNQ4EmieqVjg2GPYbj3H6tcdP2QGPGWdRKUqZVbVKLNIFVs/HiA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.2.tgz", + "integrity": "sha512-X0Ch5f6itrHxhg5HSJucX6nNLNAGr+jq+biBh6nPGc3YAWz2a8p/ZIZY8cUkDzSRNG54omAuu3hoEF8qZbu/6Q==", "requires": { - "browserslist": "4.5.4", - "core-js": "3.0.0", - "core-js-pure": "3.0.0", - "semver": "5.7.0" + "browserslist": "^4.6.0", + "core-js-pure": "3.1.2", + "semver": "^6.0.0" }, "dependencies": { "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } }, - "core-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0.tgz", - "integrity": "sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ==" - }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", + "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" } } }, "core-js-pure": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.0.tgz", - "integrity": "sha512-yPiS3fQd842RZDgo/TAKGgS0f3p2nxssF1H65DIZvZv0Od5CygP8puHXn3IQiM/39VAvgCbdaMQpresrbGgt9g==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.2.tgz", + "integrity": "sha512-5ckIdBF26B3ldK9PM177y2ZcATP2oweam9RskHSoqfZCrJ2As6wVg8zJ1zTriFsZf6clj/N1ThDFRGaomMsh9w==" }, "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=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "2.0.0", - "is-directory": "0.3.1", - "js-yaml": "3.13.1", - "parse-json": "4.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, "dependencies": { "parse-json": { @@ -3163,8 +3042,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } } } @@ -3174,11 +3053,11 @@ "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", "requires": { - "graceful-fs": "4.1.11", - "make-dir": "2.1.0", - "nested-error-stacks": "2.1.0", - "pify": "4.0.1", - "safe-buffer": "5.1.1" + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" }, "dependencies": { "pify": { @@ -3193,10 +3072,10 @@ "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.2.0.tgz", "integrity": "sha512-CUYi9WYd7vdtEcq1NKqiS/yY2WdaDCNOBA/AoTQHVJzlpJMqctB8py9JrHgGIft6TgO5m8ZidI4l1ZD+RMr/wA==", "requires": { - "arrify": "1.0.1", - "cp-file": "6.2.0", - "globby": "9.2.0", - "nested-error-stacks": "2.1.0" + "arrify": "^1.0.1", + "cp-file": "^6.1.0", + "globby": "^9.2.0", + "nested-error-stacks": "^2.1.0" }, "dependencies": { "@types/glob": { @@ -3204,9 +3083,9 @@ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "requires": { - "@types/events": "3.0.0", - "@types/minimatch": "3.0.3", - "@types/node": "7.10.5" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, "glob": { @@ -3214,12 +3093,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "globby": { @@ -3227,14 +3106,14 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", "requires": { - "@types/glob": "7.1.1", - "array-union": "1.0.2", - "dir-glob": "2.2.2", - "fast-glob": "2.2.6", - "glob": "7.1.3", - "ignore": "4.0.6", - "pify": "4.0.1", - "slash": "2.0.0" + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" } }, "pify": { @@ -3254,8 +3133,8 @@ "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-2.0.0.tgz", "integrity": "sha512-LzrtY3lBWvFZcw4lXgkEbbDUd7y78juC3C5l7gj3UyezMEZF0Be9fjCVLN1HoZAzdMDeC3KHehWpHBJvgVAPkw==", "requires": { - "cpy": "7.2.0", - "meow": "5.0.0" + "cpy": "^7.0.0", + "meow": "^5.0.0" } }, "create-ecdh": { @@ -3263,8 +3142,8 @@ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.1" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-error-class": { @@ -3272,7 +3151,7 @@ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { - "capture-stack-trace": "1.0.1" + "capture-stack-trace": "^1.0.0" } }, "create-hash": { @@ -3280,11 +3159,11 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.5", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -3292,12 +3171,12 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "create-react-context": { @@ -3305,8 +3184,8 @@ "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", "requires": { - "fbjs": "0.8.16", - "gud": "1.0.0" + "fbjs": "^0.8.0", + "gud": "^1.0.0" } }, "cross-fetch": { @@ -3335,9 +3214,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.5", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypt": { @@ -3350,17 +3229,17 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.3", - "pbkdf2": "3.0.17", - "public-encrypt": "4.0.3", - "randombytes": "2.1.0", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "crypto-random-string": { @@ -3373,10 +3252,10 @@ "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "requires": { - "inherits": "2.0.3", - "source-map": "0.6.1", - "source-map-resolve": "0.5.2", - "urix": "0.1.0" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" }, "dependencies": { "source-map": { @@ -3396,8 +3275,8 @@ "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "requires": { - "postcss": "7.0.14", - "timsort": "0.3.0" + "postcss": "^7.0.1", + "timsort": "^0.3.0" } }, "css-in-js-utils": { @@ -3405,8 +3284,8 @@ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", "requires": { - "hyphenate-style-name": "1.0.3", - "isobject": "3.0.1" + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -3421,7 +3300,7 @@ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", "requires": { - "base64-arraybuffer": "0.1.5" + "base64-arraybuffer": "^0.1.5" } }, "css-loader": { @@ -3429,65 +3308,34 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", "requires": { - "babel-code-frame": "6.26.0", - "css-selector-tokenizer": "0.7.1", - "icss-utils": "2.1.0", - "loader-utils": "1.2.3", - "lodash": "4.17.11", - "postcss": "6.0.23", - "postcss-modules-extract-imports": "1.2.1", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "postcss-value-parser": "3.3.1", - "source-list-map": "2.0.1" + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" }, "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } }, "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": "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" - } } } }, @@ -3496,10 +3344,10 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.3", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-select-base-adapter": { @@ -3517,9 +3365,9 @@ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.2", - "regexpu-core": "1.0.0" + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" }, "dependencies": { "jsesc": { @@ -3532,9 +3380,9 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "requires": { - "regenerate": "1.4.0", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "regjsgen": { @@ -3547,7 +3395,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" } } } @@ -3557,8 +3405,8 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", "requires": { - "mdn-data": "1.1.4", - "source-map": "0.5.7" + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } }, "css-unit-converter": { @@ -3586,10 +3434,10 @@ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "requires": { - "cosmiconfig": "5.2.0", - "cssnano-preset-default": "4.0.7", - "is-resolvable": "1.1.0", - "postcss": "7.0.14" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" } }, "cssnano-preset-default": { @@ -3597,36 +3445,36 @@ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", "requires": { - "css-declaration-sorter": "4.0.1", - "cssnano-util-raw-cache": "4.0.1", - "postcss": "7.0.14", - "postcss-calc": "7.0.1", - "postcss-colormin": "4.0.3", - "postcss-convert-values": "4.0.1", - "postcss-discard-comments": "4.0.2", - "postcss-discard-duplicates": "4.0.2", - "postcss-discard-empty": "4.0.1", - "postcss-discard-overridden": "4.0.1", - "postcss-merge-longhand": "4.0.11", - "postcss-merge-rules": "4.0.3", - "postcss-minify-font-values": "4.0.2", - "postcss-minify-gradients": "4.0.2", - "postcss-minify-params": "4.0.2", - "postcss-minify-selectors": "4.0.2", - "postcss-normalize-charset": "4.0.1", - "postcss-normalize-display-values": "4.0.2", - "postcss-normalize-positions": "4.0.2", - "postcss-normalize-repeat-style": "4.0.2", - "postcss-normalize-string": "4.0.2", - "postcss-normalize-timing-functions": "4.0.2", - "postcss-normalize-unicode": "4.0.1", - "postcss-normalize-url": "4.0.1", - "postcss-normalize-whitespace": "4.0.2", - "postcss-ordered-values": "4.1.2", - "postcss-reduce-initial": "4.0.3", - "postcss-reduce-transforms": "4.0.2", - "postcss-svgo": "4.0.2", - "postcss-unique-selectors": "4.0.1" + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" } }, "cssnano-util-get-arguments": { @@ -3644,7 +3492,7 @@ "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", "requires": { - "postcss": "7.0.14" + "postcss": "^7.0.0" } }, "cssnano-util-same-parent": { @@ -3665,8 +3513,8 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", "requires": { - "mdn-data": "1.1.4", - "source-map": "0.5.7" + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } } } @@ -3681,7 +3529,7 @@ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "cyclist": { @@ -3690,17 +3538,9 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" }, "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" - }, - "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" - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==" }, "date-now": { "version": "0.1.4", @@ -3725,8 +3565,8 @@ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "requires": { - "decamelize": "1.2.0", - "map-obj": "1.0.1" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "dependencies": { "map-obj": { @@ -3746,7 +3586,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "1.0.1" + "mimic-response": "^1.0.0" } }, "deep-equal": { @@ -3769,8 +3609,8 @@ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "requires": { - "execa": "1.0.0", - "ip-regex": "2.1.0" + "execa": "^1.0.0", + "ip-regex": "^2.1.0" }, "dependencies": { "cross-spawn": { @@ -3778,11 +3618,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.0", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "execa": { @@ -3790,13 +3630,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "get-stream": { @@ -3804,7 +3644,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "semver": { @@ -3819,7 +3659,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "1.1.0" + "object-keys": "^1.0.12" } }, "define-property": { @@ -3827,8 +3667,8 @@ "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" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -3836,7 +3676,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -3844,7 +3684,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -3852,9 +3692,9 @@ "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" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { @@ -3874,19 +3714,14 @@ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.3" + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", @@ -3898,18 +3733,13 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, - "deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "destroy": { @@ -3922,9 +3752,14 @@ "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", "requires": { - "repeat-string": "1.6.1" + "repeat-string": "^1.5.4" } }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", @@ -3935,8 +3770,8 @@ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", "requires": { - "address": "1.0.3", - "debug": "2.6.9" + "address": "^1.0.1", + "debug": "^2.6.0" } }, "devcert-san": { @@ -3944,22 +3779,22 @@ "resolved": "https://registry.npmjs.org/devcert-san/-/devcert-san-0.3.3.tgz", "integrity": "sha1-qnckR0Gy2DF3HAEfIu4l45atS6k=", "requires": { - "@types/configstore": "2.1.1", - "@types/debug": "0.0.29", - "@types/get-port": "0.0.4", - "@types/glob": "5.0.36", - "@types/mkdirp": "0.3.29", - "@types/node": "7.10.5", - "@types/tmp": "0.0.32", - "command-exists": "1.2.8", - "configstore": "3.1.2", - "debug": "2.6.9", - "eol": "0.8.1", - "get-port": "3.2.0", - "glob": "7.1.2", - "mkdirp": "0.5.1", - "tmp": "0.0.31", - "tslib": "1.9.3" + "@types/configstore": "^2.1.1", + "@types/debug": "^0.0.29", + "@types/get-port": "^0.0.4", + "@types/glob": "^5.0.30", + "@types/mkdirp": "^0.3.29", + "@types/node": "^7.0.11", + "@types/tmp": "^0.0.32", + "command-exists": "^1.2.2", + "configstore": "^3.0.0", + "debug": "^2.6.3", + "eol": "^0.8.1", + "get-port": "^3.0.0", + "glob": "^7.1.1", + "mkdirp": "^0.5.1", + "tmp": "^0.0.31", + "tslib": "^1.6.0" } }, "diffie-hellman": { @@ -3967,9 +3802,9 @@ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.1.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dir-glob": { @@ -3977,7 +3812,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "requires": { - "path-type": "3.0.0" + "path-type": "^3.0.0" }, "dependencies": { "path-type": { @@ -3985,7 +3820,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } } } @@ -4000,8 +3835,8 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, "dns-txt": { @@ -4009,7 +3844,7 @@ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "requires": { - "buffer-indexof": "1.1.1" + "buffer-indexof": "^1.0.0" } }, "doctrine": { @@ -4017,7 +3852,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "dom-converter": { @@ -4025,7 +3860,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "requires": { - "utila": "0.4.0" + "utila": "~0.4" } }, "dom-helpers": { @@ -4033,7 +3868,7 @@ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", "requires": { - "@babel/runtime": "7.4.3" + "@babel/runtime": "^7.1.2" } }, "dom-serializer": { @@ -4041,8 +3876,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -4072,7 +3907,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -4080,8 +3915,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "dot-prop": { @@ -4089,7 +3924,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dotenv": { @@ -4112,19 +3947,10 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ee-first": { @@ -4133,22 +3959,22 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", - "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==" + "version": "1.3.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz", + "integrity": "sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw==" }, "elliptic": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.7", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emoji-regex": { @@ -4171,7 +3997,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { @@ -4179,7 +4005,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "engine.io": { @@ -4187,14 +4013,19 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "3.1.0", - "engine.io-parser": "2.1.3", - "ws": "6.1.4" + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~6.1.0" }, "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -4212,14 +4043,14 @@ "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "3.1.0", - "engine.io-parser": "2.1.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "6.1.4", - "xmlhttprequest-ssl": "1.5.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, "dependencies": { @@ -4239,10 +4070,10 @@ "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "requires": { "after": "0.8.2", - "arraybuffer.slice": "0.0.7", + "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", "blob": "0.0.5", - "has-binary2": "1.0.3" + "has-binary2": "~1.0.2" } }, "enhanced-resolve": { @@ -4250,9 +4081,9 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.1.1" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, "entities": { @@ -4275,7 +4106,7 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { @@ -4283,7 +4114,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "error-stack-parser": { @@ -4291,7 +4122,7 @@ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", "requires": { - "stackframe": "1.0.4" + "stackframe": "^1.0.4" } }, "es-abstract": { @@ -4299,22 +4130,12 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "requires": { - "es-to-primitive": "1.2.0", - "function-bind": "1.1.1", - "has": "1.0.3", - "is-callable": "1.1.4", - "is-regex": "1.0.4", - "object-keys": "1.1.0" - }, - "dependencies": { - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "1.1.1" - } - } + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, "es-to-primitive": { @@ -4322,9 +4143,9 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "requires": { - "is-callable": "1.1.4", - "is-date-object": "1.0.1", - "is-symbol": "1.0.2" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "es6-promisify": { @@ -4347,42 +4168,42 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "requires": { - "@babel/code-frame": "7.0.0", - "ajv": "6.10.0", - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "debug": "4.1.1", - "doctrine": "3.0.0", - "eslint-scope": "4.0.3", - "eslint-utils": "1.3.1", - "eslint-visitor-keys": "1.0.0", - "espree": "5.0.1", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "5.0.1", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.11.0", - "ignore": "4.0.6", - "import-fresh": "3.0.0", - "imurmurhash": "0.1.4", - "inquirer": "6.2.2", - "js-yaml": "3.13.1", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "progress": "2.0.3", - "regexpp": "2.0.1", - "semver": "5.7.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "5.2.3", - "text-table": "0.2.0" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" }, "dependencies": { "ansi-regex": { @@ -4390,34 +4211,16 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "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.1" - } - }, - "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.5.0" - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.0", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "debug": { @@ -4425,7 +4228,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "eslint-scope": { @@ -4433,29 +4236,19 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" - }, "import-fresh": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", "requires": { - "parent-module": "1.0.1", - "resolve-from": "4.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -4476,15 +4269,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.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" + "ansi-regex": "^3.0.0" } } } @@ -4494,7 +4279,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.8.tgz", "integrity": "sha512-Ovi6Bva67OjXrom9Y/SLJRkrGqKhMAL0XCH8BizPhjEVEhYczl2ZKiNZI2CuqO5/CJwAfMwRXAVGY0KToWr1aA==", "requires": { - "confusing-browser-globals": "1.0.6" + "confusing-browser-globals": "^1.0.6" } }, "eslint-import-resolver-node": { @@ -4502,8 +4287,8 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "requires": { - "debug": "2.6.9", - "resolve": "1.10.0" + "debug": "^2.6.9", + "resolve": "^1.5.0" } }, "eslint-loader": { @@ -4511,36 +4296,28 @@ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.2.tgz", "integrity": "sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg==", "requires": { - "loader-fs-cache": "1.0.2", - "loader-utils": "1.2.3", - "object-assign": "4.1.1", - "object-hash": "1.3.1", - "rimraf": "2.6.3" + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" } }, "eslint-module-utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz", - "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", + "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", "requires": { - "debug": "2.6.9", - "pkg-dir": "2.0.0" + "debug": "^2.6.8", + "pkg-dir": "^2.0.0" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } - }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } } } @@ -4550,40 +4327,34 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz", "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==", "requires": { - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "lodash": "^4.17.10" } }, "eslint-plugin-graphql": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-2.1.1.tgz", - "integrity": "sha512-JT2paUyu3e9ZDnroSshwUMc6pKcnkfXTsZInX1+/rPotvqOLVLtdrx/cmfb7PTJwjiEAshwcpm3/XPdTpsKJPw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-3.0.3.tgz", + "integrity": "sha512-hHwLyxSkC5rkakJ/SNTWwOswPdVhvfyMCnEOloevrLQIOHUNVIQBg1ljCaRe9C40HdzgcGUFUdG5BHLCKm8tuw==", "requires": { - "graphql-config": "2.2.1", - "lodash": "4.17.4" + "graphql-config": "^2.0.1", + "lodash": "^4.11.1" } }, "eslint-plugin-import": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz", - "integrity": "sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==", + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", + "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", "requires": { - "contains-path": "0.1.0", - "debug": "2.6.9", + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.3.0", - "has": "1.0.3", - "lodash": "4.17.11", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0", - "resolve": "1.10.0" + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.0" }, "dependencies": { "doctrine": { @@ -4591,22 +4362,9 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "1.1.1" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" } } }, @@ -4615,43 +4373,35 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz", "integrity": "sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==", "requires": { - "aria-query": "3.0.0", - "array-includes": "3.0.3", - "ast-types-flow": "0.0.7", - "axobject-query": "2.0.2", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "7.0.3", - "has": "1.0.3", - "jsx-ast-utils": "2.0.1" + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1" }, "dependencies": { "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "1.1.1" - } } } }, "eslint-plugin-react": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", - "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", + "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", "requires": { - "array-includes": "3.0.3", - "doctrine": "2.1.0", - "has": "1.0.3", - "jsx-ast-utils": "2.0.1", - "object.fromentries": "2.0.0", - "prop-types": "15.7.2", - "resolve": "1.10.0" + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.2", + "resolve": "^1.10.1" }, "dependencies": { "doctrine": { @@ -4659,33 +4409,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { - "esutils": "2.0.2" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "1.1.1" - } - }, - "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==", - "requires": { - "js-tokens": "3.0.2" - } - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" + "esutils": "^2.0.2" } } } @@ -4695,8 +4419,8 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-utils": { @@ -4714,9 +4438,9 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "requires": { - "acorn": "6.1.1", - "acorn-jsx": "5.0.1", - "eslint-visitor-keys": "1.0.0" + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" } }, "esprima": { @@ -4729,7 +4453,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -4737,7 +4461,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -4761,9 +4485,9 @@ "integrity": "sha512-PdStgZ3+G2o2gjqsBYbV4931ByVmwLwSrX7mFgawCL+9I1npo9dwAQTnWtNWXe5IY2P8+AbbPteeOueiEtRCUA==" }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, "events": { "version": "3.0.0", @@ -4775,7 +4499,7 @@ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", "requires": { - "original": "1.0.2" + "original": ">=0.0.5" } }, "evp_bytestokey": { @@ -4783,8 +4507,8 @@ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "md5.js": "1.3.5", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "execa": { @@ -4792,13 +4516,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "exenv": { @@ -4811,13 +4535,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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": { @@ -4825,7 +4549,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -4835,44 +4559,44 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "requires": { - "homedir-polyfill": "1.0.3" + "homedir-polyfill": "^1.0.1" } }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", + "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.4", - "qs": "6.5.2", - "range-parser": "1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "safe-buffer": { @@ -4883,14 +4607,14 @@ } }, "express-graphql": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.6.12.tgz", - "integrity": "sha512-ouLWV0hRw4hnaLtXzzwhdC79ewxKbY2PRvm05mPc/zOH5W5WVCHDQ1SmNxEPBQdUeeSNh29aIqW9zEQkA3kMuA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.7.1.tgz", + "integrity": "sha512-YpheAqTbSKpb5h57rV2yu2dPNUBi4FvZDspZ5iEV3ov34PBRgnM4lEBkv60+vZRJ6SweYL14N8AGYdov7g6ooQ==", "requires": { - "accepts": "1.3.5", - "content-type": "1.0.4", - "http-errors": "1.6.3", - "raw-body": "2.3.3" + "accepts": "^1.3.5", + "content-type": "^1.0.4", + "http-errors": "^1.7.1", + "raw-body": "^2.3.3" } }, "extend": { @@ -4903,7 +4627,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "external-editor": { @@ -4911,9 +4635,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "requires": { - "chardet": "0.7.0", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "dependencies": { "iconv-lite": { @@ -4921,7 +4645,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "tmp": { @@ -4929,7 +4653,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } } } @@ -4939,14 +4663,14 @@ "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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": { @@ -4954,7 +4678,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -4962,7 +4686,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4970,7 +4694,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4978,9 +4702,9 @@ "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" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -4990,11 +4714,6 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -5005,12 +4724,12 @@ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", "requires": { - "@mrmlnc/readdir-enhanced": "2.2.1", - "@nodelib/fs.stat": "1.1.3", - "glob-parent": "3.1.0", - "is-glob": "4.0.1", - "merge2": "1.2.3", - "micromatch": "3.1.10" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "dependencies": { "arr-diff": { @@ -5028,16 +4747,16 @@ "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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": { @@ -5045,7 +4764,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -5055,13 +4774,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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": { @@ -5069,7 +4788,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -5077,7 +4796,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -5085,7 +4804,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5093,7 +4812,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5103,7 +4822,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5111,7 +4830,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5121,9 +4840,9 @@ "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.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -5138,8 +4857,8 @@ "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" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -5147,7 +4866,7 @@ "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" + "is-plain-object": "^2.0.4" } } } @@ -5157,14 +4876,14 @@ "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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": { @@ -5172,7 +4891,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -5180,7 +4899,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -5190,10 +4909,10 @@ "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.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -5201,7 +4920,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -5211,8 +4930,8 @@ "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.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -5220,7 +4939,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -5230,7 +4949,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -5238,7 +4957,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -5246,9 +4965,9 @@ "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" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-extglob": { @@ -5261,7 +4980,7 @@ "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-extglob": "^2.1.1" } }, "is-number": { @@ -5269,7 +4988,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5277,7 +4996,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5297,19 +5016,19 @@ "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.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } } } @@ -5334,7 +5053,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "requires": { - "websocket-driver": "0.7.0" + "websocket-driver": ">=0.5.1" } }, "fb-watchman": { @@ -5342,7 +5061,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "requires": { - "bser": "2.0.0" + "bser": "^2.0.0" } }, "fbjs": { @@ -5350,13 +5069,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" }, "dependencies": { "core-js": { @@ -5381,7 +5100,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -5389,7 +5108,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "requires": { - "flat-cache": "2.0.1" + "flat-cache": "^2.0.1" } }, "file-loader": { @@ -5397,8 +5116,8 @@ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", "requires": { - "loader-utils": "1.2.3", - "schema-utils": "0.4.7" + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" } }, "file-type": { @@ -5416,24 +5135,24 @@ "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.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" } }, "find-cache-dir": { @@ -5441,28 +5160,17 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { - "commondir": "1.0.1", - "make-dir": "2.1.0", - "pkg-dir": "3.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "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.1" - } - } + "locate-path": "^2.0.0" } }, "flat": { @@ -5470,7 +5178,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", "requires": { - "is-buffer": "2.0.3" + "is-buffer": "~2.0.3" }, "dependencies": { "is-buffer": { @@ -5485,7 +5193,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "requires": { - "flatted": "2.0.0", + "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" } @@ -5500,8 +5208,8 @@ "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" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" }, "dependencies": { "process-nextick-args": { @@ -5514,13 +5222,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "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.2" + "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" } }, "string_decoder": { @@ -5528,7 +5236,7 @@ "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.1" + "safe-buffer": "~5.1.0" } } } @@ -5538,7 +5246,7 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "requires": { - "debug": "3.2.6" + "debug": "^3.2.6" }, "dependencies": { "debug": { @@ -5546,7 +5254,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } }, "ms": { @@ -5561,21 +5269,6 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "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.7", - "mime-types": "2.1.22" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -5586,7 +5279,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -5599,8 +5292,8 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-exists-cached": { @@ -5613,9 +5306,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs-write-stream-atomic": { @@ -5623,10 +5316,10 @@ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.3" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, "fs.realpath": { @@ -5634,700 +5327,832 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "gatsby": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.3.14.tgz", - "integrity": "sha512-5ELb1SpYYNt+5/38NwyaFrOSPtVwEjhxIKsaeglrD1jDhi8mycXezBrf+IFNE/I0r0K7BtER36W1oB+FH3fQ2g==", - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/core": "7.4.3", - "@babel/parser": "7.4.3", - "@babel/polyfill": "7.4.3", - "@babel/runtime": "7.4.3", - "@babel/traverse": "7.4.3", - "@gatsbyjs/relay-compiler": "2.0.0-printer-fix.2", - "@mikaelkristiansson/domready": "1.0.9", - "@pieh/friendly-errors-webpack-plugin": "1.7.0-chalk-2", - "@reach/router": "1.2.1", - "@stefanprobst/lokijs": "1.5.6-b", - "address": "1.0.3", - "autoprefixer": "9.5.0", - "babel-core": "7.0.0-bridge.0", - "babel-eslint": "9.0.0", - "babel-loader": "8.0.5", - "babel-plugin-add-module-exports": "0.2.1", - "babel-plugin-dynamic-import-node": "1.2.0", - "babel-plugin-remove-graphql-queries": "2.6.3", - "babel-preset-gatsby": "0.1.11", - "better-opn": "0.1.4", - "better-queue": "3.8.10", - "bluebird": "3.5.1", - "browserslist": "3.2.8", - "cache-manager": "2.9.0", - "cache-manager-fs-hash": "0.0.6", - "chalk": "2.4.2", - "chokidar": "2.1.2", - "common-tags": "1.8.0", - "compression": "1.7.4", - "convert-hrtime": "2.0.0", - "copyfiles": "1.2.0", - "core-js": "2.5.1", - "css-loader": "1.0.1", - "debug": "3.2.6", - "del": "3.0.0", - "detect-port": "1.3.0", - "devcert-san": "0.3.3", - "dotenv": "4.0.0", - "eslint": "5.16.0", - "eslint-config-react-app": "3.0.8", - "eslint-loader": "2.1.2", - "eslint-plugin-flowtype": "2.50.3", - "eslint-plugin-graphql": "2.1.1", - "eslint-plugin-import": "2.16.0", - "eslint-plugin-jsx-a11y": "6.2.1", - "eslint-plugin-react": "7.12.4", - "event-source-polyfill": "1.0.5", - "express": "4.16.4", - "express-graphql": "0.6.12", - "fast-levenshtein": "2.0.6", - "file-loader": "1.1.11", - "flat": "4.1.0", - "fs-exists-cached": "1.0.0", - "fs-extra": "5.0.0", - "gatsby-cli": "2.5.5", - "gatsby-link": "2.0.16", - "gatsby-plugin-page-creator": "2.0.12", - "gatsby-react-router-scroll": "2.0.7", - "gatsby-telemetry": "1.0.5", - "glob": "7.1.2", - "graphql": "14.2.1", - "graphql-compose": "6.1.4", - "graphql-playground-middleware-express": "1.7.12", - "graphql-relay": "0.6.0", - "graphql-tools": "3.1.1", - "hash-mod": "0.0.5", - "invariant": "2.2.4", - "is-relative": "1.0.0", - "is-relative-url": "2.0.0", - "is-wsl": "1.1.0", - "jest-worker": "23.2.0", - "joi": "12.0.0", - "json-loader": "0.5.7", - "json-stringify-safe": "5.0.1", - "kebab-hash": "0.1.2", - "lodash": "4.17.11", - "md5": "2.2.1", - "md5-file": "3.2.3", - "mime": "2.4.1", - "mini-css-extract-plugin": "0.4.5", - "mitt": "1.1.3", - "mkdirp": "0.5.1", - "moment": "2.24.0", - "name-all-modules-plugin": "1.0.1", - "normalize-path": "2.1.1", - "null-loader": "0.1.1", - "opentracing": "0.14.3", - "optimize-css-assets-webpack-plugin": "5.0.1", - "parseurl": "1.3.2", - "physical-cpu-count": "2.0.0", - "pnp-webpack-plugin": "1.4.1", - "postcss-flexbugs-fixes": "3.3.1", - "postcss-loader": "2.1.6", - "prop-types": "15.7.2", - "raw-loader": "0.5.1", - "react-dev-utils": "4.2.3", - "react-error-overlay": "3.0.0", - "react-hot-loader": "4.8.3", - "redux": "4.0.1", - "request": "2.88.0", - "semver": "5.7.0", - "shallow-compare": "1.2.2", - "sift": "5.1.0", - "signal-exit": "3.0.2", - "slash": "1.0.0", - "socket.io": "2.2.0", - "stack-trace": "0.0.10", - "string-similarity": "1.2.2", - "style-loader": "0.21.0", - "terser-webpack-plugin": "1.2.3", - "true-case-path": "1.0.3", - "type-of": "2.0.1", - "url-loader": "1.1.2", - "util.promisify": "1.0.0", - "uuid": "3.3.2", - "v8-compile-cache": "1.1.2", - "webpack": "4.28.4", - "webpack-dev-middleware": "3.6.2", - "webpack-dev-server": "3.2.1", - "webpack-hot-middleware": "2.24.3", - "webpack-merge": "4.2.1", - "webpack-stats-plugin": "0.1.5", - "xstate": "4.4.0", - "yaml-loader": "0.5.0" + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "2.1.1", + "bundled": true, + "optional": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, "requires": { - "color-convert": "1.9.1" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } + "ms": "^2.1.1" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "minipass": "^2.2.1" } }, - "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.1", - "normalize-path": "3.0.0", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.2" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } + "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" } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "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" } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, "requires": { - "ms": "2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "safer-buffer": ">= 2.1.2 < 3" } }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "minimatch": "^3.0.4" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "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" - } - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } + "once": "^1.3.0", + "wrappy": "1" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, "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" - } - } + "number-is-nan": "^1.0.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.2" - } - }, - "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.1" - } - } + "brace-expansion": "^1.1.7" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.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.1" - } - } + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, "requires": { - "locate-path": "3.0.0" + "minipass": "^2.2.1" } }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "minimist": "0.0.8" } }, - "gatsby-cli": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.5.5.tgz", - "integrity": "sha512-wS9PURzzRzSSwUVksAOjgx2i4QzYnkfZDfSEA+l4+Cp9dzCCGWkKPTrFdMoq2YcjuijPxjAM0eTHZZAcLIelGA==", - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/runtime": "7.4.3", - "bluebird": "3.5.1", - "common-tags": "1.8.0", - "convert-hrtime": "2.0.0", - "core-js": "2.5.1", - "envinfo": "5.12.1", - "execa": "0.8.0", - "fs-exists-cached": "1.0.0", - "fs-extra": "4.0.3", - "gatsby-telemetry": "1.0.5", - "hosted-git-info": "2.7.1", - "lodash": "4.17.11", - "meant": "1.0.1", - "node-fetch": "2.3.0", - "opentracing": "0.14.3", - "pretty-error": "2.1.1", - "resolve-cwd": "2.0.0", - "source-map": "0.5.7", - "stack-trace": "0.0.10", - "update-notifier": "2.5.0", - "uuid": "3.3.2", - "yargs": "12.0.5", - "yurnalist": "1.0.5" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - } - } + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true }, - "gatsby-link": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.0.16.tgz", - "integrity": "sha512-2CWQeRtkidpi6uEMoq9KRkssqh66ybSWTeQ7W2as7uqldaFlZDOJxkpqf3C3n207iQxxcsY6vzvMgjtGzucv/Q==", + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, "requires": { - "@babel/runtime": "7.4.3", - "@types/reach__router": "1.2.3", - "prop-types": "15.7.2" + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "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.1" - } - } + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, "requires": { - "loose-envify": "1.4.0" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, "requires": { - "kind-of": "6.0.2" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, - "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==", + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, "requires": { - "kind-of": "6.0.2" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.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==", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "wrappy": "1" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true }, - "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==", + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, "requires": { - "is-extglob": "2.1.1" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "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.2.2" + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "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.6" - } + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true } } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, "requires": { - "invert-kv": "2.0.0" + "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" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "glob": "^7.1.3" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true }, - "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==", - "requires": { - "js-tokens": "3.0.2" - } + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, "requires": { - "map-age-cleaner": "0.1.3", - "mimic-fn": "2.1.0", - "p-is-promise": "2.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "safe-buffer": "~5.1.0" } }, - "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gatsby": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.7.1.tgz", + "integrity": "sha512-IDCiRW30pFCYM7o2plrTjO51gNEXTQ890LMJC7jml30W7ZswaTmacVbEfI2xKA8dWNik9+6S9zoyktuTFyE+zw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/polyfill": "^7.0.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@gatsbyjs/relay-compiler": "2.0.0-printer-fix.2", + "@mikaelkristiansson/domready": "^1.0.9", + "@pieh/friendly-errors-webpack-plugin": "1.7.0-chalk-2", + "@reach/router": "^1.1.1", + "@stefanprobst/lokijs": "^1.5.6-b", + "address": "1.0.3", + "autoprefixer": "^9.4.3", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^9.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-add-module-exports": "^0.2.1", + "babel-plugin-dynamic-import-node": "^1.2.0", + "babel-plugin-remove-graphql-queries": "^2.6.3", + "babel-preset-gatsby": "^0.1.11", + "better-opn": "0.1.4", + "better-queue": "^3.8.6", + "bluebird": "^3.5.0", + "browserslist": "3.2.8", + "cache-manager": "^2.9.0", + "cache-manager-fs-hash": "^0.0.6", + "chalk": "^2.3.2", + "chokidar": "2.1.2", + "common-tags": "^1.4.0", + "compression": "^1.7.3", + "convert-hrtime": "^2.0.0", + "copyfiles": "^1.2.0", + "core-js": "^2.5.0", + "cors": "^2.8.5", + "css-loader": "^1.0.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "detect-port": "^1.2.1", + "devcert-san": "^0.3.3", + "dotenv": "^4.0.0", + "eslint": "^5.6.0", + "eslint-config-react-app": "^3.0.0", + "eslint-loader": "^2.1.0", + "eslint-plugin-flowtype": "^2.46.1", + "eslint-plugin-graphql": "^3.0.3", + "eslint-plugin-import": "^2.9.0", + "eslint-plugin-jsx-a11y": "^6.0.3", + "eslint-plugin-react": "^7.8.2", + "event-source-polyfill": "^1.0.5", + "express": "^4.16.3", + "express-graphql": "^0.7.1", + "fast-levenshtein": "~2.0.4", + "file-loader": "^1.1.11", + "flat": "^4.0.0", + "fs-exists-cached": "1.0.0", + "fs-extra": "^5.0.0", + "gatsby-cli": "^2.6.2", + "gatsby-link": "^2.1.1", + "gatsby-plugin-page-creator": "^2.0.13", + "gatsby-react-router-scroll": "^2.0.7", + "gatsby-telemetry": "^1.0.10", + "glob": "^7.1.1", + "got": "8.0.0", + "graphql": "^14.1.1", + "graphql-compose": "^6.3.2", + "graphql-playground-middleware-express": "^1.7.10", + "hash-mod": "^0.0.5", + "invariant": "^2.2.4", + "is-relative": "^1.0.0", + "is-relative-url": "^2.0.0", + "is-wsl": "^1.1.0", + "jest-worker": "^23.2.0", + "joi": "^14.0.0", + "json-loader": "^0.5.7", + "json-stringify-safe": "^5.0.1", + "kebab-hash": "^0.1.2", + "lodash": "^4.17.10", + "md5": "^2.2.1", + "md5-file": "^3.1.1", + "mime": "^2.2.0", + "mini-css-extract-plugin": "^0.4.0", + "mitt": "^1.1.2", + "mkdirp": "^0.5.1", + "moment": "^2.21.0", + "name-all-modules-plugin": "^1.0.1", + "normalize-path": "^2.1.1", + "null-loader": "^0.1.1", + "opentracing": "^0.14.3", + "optimize-css-assets-webpack-plugin": "^5.0.1", + "parseurl": "^1.3.2", + "physical-cpu-count": "^2.0.0", + "pnp-webpack-plugin": "^1.4.1", + "postcss-flexbugs-fixes": "^3.0.0", + "postcss-loader": "^2.1.3", + "prop-types": "^15.6.1", + "raw-loader": "^0.5.1", + "react-dev-utils": "^4.2.1", + "react-error-overlay": "^3.0.0", + "react-hot-loader": "^4.8.4", + "redux": "^4.0.0", + "redux-thunk": "^2.3.0", + "semver": "^5.6.0", + "shallow-compare": "^1.2.2", + "sift": "^5.1.0", + "signal-exit": "^3.0.2", + "slash": "^1.0.0", + "socket.io": "^2.0.3", + "stack-trace": "^0.0.10", + "string-similarity": "^1.2.0", + "style-loader": "^0.21.0", + "terser-webpack-plugin": "^1.2.2", + "true-case-path": "^1.0.3", + "type-of": "^2.0.1", + "url-loader": "^1.0.1", + "util.promisify": "^1.0.0", + "uuid": "^3.1.0", + "v8-compile-cache": "^1.1.0", + "webpack": "~4.28.4", + "webpack-dev-middleware": "^3.0.1", + "webpack-dev-server": "^3.1.14", + "webpack-hot-middleware": "^2.21.0", + "webpack-merge": "^4.1.0", + "webpack-stats-plugin": "^0.1.5", + "xstate": "^4.3.2", + "yaml-loader": "^0.5.0" + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.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" + } + } + } + }, + "configstore": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "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" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "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" + } + }, + "gatsby-cli": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.6.2.tgz", + "integrity": "sha512-ihTDocclnshQP0RY05esU/FqCBbEiVW/UGL/4nP58E+UPWo3IezWSheLka20fCdOld5SckcKupdPgEE8OeN7nA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.0", + "chalk": "^2.4.2", + "ci-info": "^2.0.0", + "clipboardy": "^1.2.3", + "common-tags": "^1.4.0", + "configstore": "^4.0.0", + "convert-hrtime": "^2.0.0", + "core-js": "^2.5.0", + "envinfo": "^5.8.1", + "execa": "^0.8.0", + "fs-exists-cached": "^1.0.0", + "fs-extra": "^4.0.1", + "gatsby-telemetry": "^1.0.10", + "hosted-git-info": "^2.6.0", + "ink": "^2.0.5", + "ink-spinner": "^3.0.1", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.10", + "meant": "^1.0.1", + "node-fetch": "2.3.0", + "object.entries": "^1.1.0", + "opentracing": "^0.14.3", + "pretty-error": "^2.1.1", + "prompts": "^2.1.0", + "react": "^16.8.4", + "resolve-cwd": "^2.0.0", + "semver": "^6.0.0", + "source-map": "0.5.7", + "stack-trace": "^0.0.10", + "strip-ansi": "^5.2.0", + "update-notifier": "^2.3.0", + "uuid": "3.3.2", + "yargs": "^12.0.5", + "yurnalist": "^1.0.5" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "semver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", + "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" + } + } + }, + "gatsby-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.1.1.tgz", + "integrity": "sha512-5krDc87NAUDztbir5OOs3ec/2CxSSXnIIxhRKrG+yJXKK+dIcxxnPr+qjydEsyHMf7McBuxb1x5/r6rouzcBqQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "@types/reach__router": "^1.0.0", + "prop-types": "^15.6.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.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" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, "node-fetch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", @@ -6338,9 +6163,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "requires": { - "execa": "1.0.0", - "lcid": "2.0.0", - "mem": "4.3.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" }, "dependencies": { "cross-spawn": { @@ -6348,11 +6173,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.0", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "execa": { @@ -6360,13 +6185,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "get-stream": { @@ -6374,7 +6199,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } } } @@ -6384,7 +6209,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -6392,7 +6217,7 @@ "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.2.0" + "p-limit": "^2.0.0" } }, "p-try": { @@ -6400,45 +6225,17 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" - } - }, - "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.3.3" - } - }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "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" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "has-flag": "3.0.0" + "ansi-regex": "^4.1.0" } }, "yargs": { @@ -6446,18 +6243,18 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "3.0.0", - "get-caller-file": "1.0.3", - "os-locale": "3.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "11.1.1" + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { @@ -6465,8 +6262,8 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -6476,9 +6273,9 @@ "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.0.16.tgz", "integrity": "sha512-2CWQeRtkidpi6uEMoq9KRkssqh66ybSWTeQ7W2as7uqldaFlZDOJxkpqf3C3n207iQxxcsY6vzvMgjtGzucv/Q==", "requires": { - "@babel/runtime": "7.4.3", - "@types/reach__router": "1.2.3", - "prop-types": "15.7.2" + "@babel/runtime": "^7.0.0", + "@types/reach__router": "^1.0.0", + "prop-types": "^15.6.1" }, "dependencies": { "loose-envify": { @@ -6486,7 +6283,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "prop-types": { @@ -6494,9 +6291,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } } } @@ -6506,8 +6303,8 @@ "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-2.0.13.tgz", "integrity": "sha512-3JOwByiAKaiHo9k+QMiqe15H0T7wGh0NyulSFz7am1HC5/XHzcrX2ysW/zo1PV5eZq3P+n+X5V0t28cp+n1FBg==", "requires": { - "@babel/runtime": "7.4.3", - "escape-string-regexp": "1.0.5" + "@babel/runtime": "^7.0.0", + "escape-string-regexp": "^1.0.5" } }, "gatsby-plugin-glamor": { @@ -6515,7 +6312,7 @@ "resolved": "https://registry.npmjs.org/gatsby-plugin-glamor/-/gatsby-plugin-glamor-2.0.9.tgz", "integrity": "sha512-gWJJ8XMRFMQU5TGdMNG/Il9SXFqIm8Yhm5y59Iiqkqk5ujJj5O5HJeG92m6OW8d8jEj9SVNN5KCM8hiIggtsKQ==", "requires": { - "@babel/runtime": "7.4.3" + "@babel/runtime": "^7.0.0" } }, "gatsby-plugin-google-analytics": { @@ -6523,6988 +6320,5333 @@ "resolved": "https://registry.npmjs.org/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.0.18.tgz", "integrity": "sha512-fW2WKo7onfxr9sVUCKKtDRUVqleVHBp9CMz7xVWnNpiM3+u4KgYWj7VzmjKPr00zgmp/AOEu1L7SUjYMDys0QA==", "requires": { - "@babel/runtime": "7.4.3" + "@babel/runtime": "^7.0.0" } }, "gatsby-plugin-page-creator": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.0.12.tgz", - "integrity": "sha512-Pb4jpcI4Fqr6pqDdwm1+8DsyesZwBcvoQyDDvLBF+hbWD33iURjBqTrL8quTNtIO4svLkfieIdQ8D4IhlpFCmw==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.0.13.tgz", + "integrity": "sha512-wlIkpgFr0Oltlk8TTBRGaGOZZIzDY99iIIZ20mSl5HNMyU9IXe11IQDoF4JYXH2lMIEfp6OBGreCGCTOHHcc3g==", "requires": { - "@babel/runtime": "7.4.3", - "bluebird": "3.5.1", + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.0", "chokidar": "2.1.2", - "fs-exists-cached": "1.0.0", - "glob": "7.1.2", - "lodash": "4.17.11", - "micromatch": "3.1.10", - "parse-filepath": "1.0.2", - "slash": "1.0.0" + "fs-exists-cached": "^1.0.0", + "glob": "^7.1.1", + "lodash": "^4.17.10", + "micromatch": "^3.1.10", + "slash": "^1.0.0" + } + }, + "gatsby-plugin-react-helmet": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.0.12.tgz", + "integrity": "sha512-x1DXKceTuEDePN9HcQymzQ+oBgmT3PKVQLSFbxrOECiC71cQRp03FJK0i/ClAkMJ3IJNLCGJDvi7dKydkc6dvw==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-plugin-twitter": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-2.0.13.tgz", + "integrity": "sha512-FaX3CFdZrZGxY1dRbcFanEQydGgG074cVqRe8DwQs4uqTTMnm6mW4U6kHrVsoNNeoDhMhA6u+1iqe1yRlgT3+g==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-plugin-typography": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-2.2.10.tgz", + "integrity": "sha512-sg9UkDrn3C3EN+yBSrUNzbGIlw1k1Qc6rYZWuXeqNEuQfdWJfqJMVzVhhriBDz2sC2bU6Wh/NnQ2vXVkRs4bKw==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-react-router-scroll": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.0.7.tgz", + "integrity": "sha512-Yq8UBgurjt5XqezkBr67ZmMmsxFPdGG/7OERlju34PL05mAwOB1P2wdcZfjpVZM/k2xfVPcTRYk2zoUbtB/adg==", + "requires": { + "@babel/runtime": "^7.0.0", + "scroll-behavior": "^0.9.9", + "warning": "^3.0.0" + } + }, + "gatsby-remark-prismjs": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-3.2.7.tgz", + "integrity": "sha512-nRMduwIWYr/arJHveu7UIBhokQ3OIpr7f7rZvPG4ajZJQxlp1TC0a9s4WY9BoBCfcrsLkSzYjNa+y2AarvuGWQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "parse-numeric-range": "^0.0.2", + "unist-util-visit": "^1.3.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "unist-util-visit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", + "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", "requires": { - "micromatch": "3.1.10", - "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.1.0" - } - } + "unist-util-visit-parents": "^2.0.0" + } + } + } + }, + "gatsby-source-filesystem": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.0.28.tgz", + "integrity": "sha512-eOj91auqUHgH46h6hkkqAa4W5g0X6q4b0EDzTF2/aLpIx2gB8g/70MSQG3i00IRv/tekXjKEWHZNW8AJDkommQ==", + "requires": { + "@babel/runtime": "^7.0.0", + "better-queue": "^3.8.7", + "bluebird": "^3.5.0", + "chokidar": "2.1.2", + "file-type": "^10.2.0", + "fs-extra": "^5.0.0", + "got": "^7.1.0", + "md5-file": "^3.1.1", + "mime": "^2.2.0", + "pretty-bytes": "^4.0.2", + "progress": "^1.1.8", + "read-chunk": "^3.0.0", + "slash": "^1.0.0", + "valid-url": "^1.0.9", + "xstate": "^3.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } - } - }, - "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.1", - "normalize-path": "3.0.0", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.2" - } - }, - "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.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } - } - }, - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.2" - } - }, - "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.1" - } - } - } - }, - "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.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.1" - } - } - } - }, - "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.2" - }, - "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.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "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.2" - } - }, - "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" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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-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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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.3.3" - } - } - } - }, - "gatsby-plugin-react-helmet": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.0.12.tgz", - "integrity": "sha512-x1DXKceTuEDePN9HcQymzQ+oBgmT3PKVQLSFbxrOECiC71cQRp03FJK0i/ClAkMJ3IJNLCGJDvi7dKydkc6dvw==", - "requires": { - "@babel/runtime": "7.4.3" - } - }, - "gatsby-plugin-twitter": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-2.0.13.tgz", - "integrity": "sha512-FaX3CFdZrZGxY1dRbcFanEQydGgG074cVqRe8DwQs4uqTTMnm6mW4U6kHrVsoNNeoDhMhA6u+1iqe1yRlgT3+g==", - "requires": { - "@babel/runtime": "7.4.3" - } - }, - "gatsby-plugin-typography": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-2.2.10.tgz", - "integrity": "sha512-sg9UkDrn3C3EN+yBSrUNzbGIlw1k1Qc6rYZWuXeqNEuQfdWJfqJMVzVhhriBDz2sC2bU6Wh/NnQ2vXVkRs4bKw==", - "requires": { - "@babel/runtime": "7.4.3" - } - }, - "gatsby-react-router-scroll": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.0.7.tgz", - "integrity": "sha512-Yq8UBgurjt5XqezkBr67ZmMmsxFPdGG/7OERlju34PL05mAwOB1P2wdcZfjpVZM/k2xfVPcTRYk2zoUbtB/adg==", - "requires": { - "@babel/runtime": "7.4.3", - "scroll-behavior": "0.9.10", - "warning": "3.0.0" - } - }, - "gatsby-remark-prismjs": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-3.2.7.tgz", - "integrity": "sha512-nRMduwIWYr/arJHveu7UIBhokQ3OIpr7f7rZvPG4ajZJQxlp1TC0a9s4WY9BoBCfcrsLkSzYjNa+y2AarvuGWQ==", - "requires": { - "@babel/runtime": "7.4.3", - "parse-numeric-range": "0.0.2", - "unist-util-visit": "1.4.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", - "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", - "requires": { - "unist-util-visit-parents": "2.0.1" - } - } - } - }, - "gatsby-source-filesystem": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.0.28.tgz", - "integrity": "sha512-eOj91auqUHgH46h6hkkqAa4W5g0X6q4b0EDzTF2/aLpIx2gB8g/70MSQG3i00IRv/tekXjKEWHZNW8AJDkommQ==", - "requires": { - "@babel/runtime": "7.4.3", - "better-queue": "3.8.10", - "bluebird": "3.5.1", - "chokidar": "2.1.2", - "file-type": "10.10.0", - "fs-extra": "5.0.0", - "got": "7.1.0", - "md5-file": "3.2.3", - "mime": "2.4.1", - "pretty-bytes": "4.0.2", - "progress": "1.1.8", - "read-chunk": "3.2.0", - "slash": "1.0.0", - "valid-url": "1.0.9", - "xstate": "3.3.3" - }, - "dependencies": { - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" - } - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" - }, - "xstate": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-3.3.3.tgz", - "integrity": "sha512-p0ZYDPWxZZZRAJyD3jaGO9/MYioHuxZp6sjcLhPfBZHAprl4EDrZRGDqRVH9VvK8oa6Nrbpf+U5eNmn8KFwO3g==" - } - } - }, - "gatsby-telemetry": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.0.5.tgz", - "integrity": "sha512-pMi8XTCXn+wMdUIZxRHlw7mZMCN/IU8VqG3G67fCKm7EHyqrnBK6AEuHiAQKv69kMIYp/h3kBsxcP/FqhFYUmg==", - "requires": { - "@babel/code-frame": "7.0.0", - "@babel/runtime": "7.4.3", - "bluebird": "3.5.1", - "ci-info": "2.0.0", - "configstore": "4.0.0", - "envinfo": "5.12.1", - "fs-extra": "7.0.1", - "node-fetch": "2.3.0", - "resolve-cwd": "2.0.0", - "source-map": "0.5.7", - "stack-trace": "0.0.10", - "stack-utils": "1.0.2", - "uuid": "3.3.2" - }, - "dependencies": { - "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", - "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.3.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.4.2", - "xdg-basedir": "3.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "3.0.0" - } - }, - "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" - } - } - }, - "gatsby-transformer-remark": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.3.8.tgz", - "integrity": "sha512-i0pOcPHbh9cVbkFEu6VMBNIvYErhRLZYApUm+anjSDw0FFj4LN14v/36jpt3+XCZUfJqJCkMP8pth7eS7CEJCg==", - "requires": { - "@babel/runtime": "7.4.3", - "bluebird": "3.5.1", - "gray-matter": "4.0.2", - "hast-util-raw": "4.0.0", - "hast-util-to-html": "4.0.1", - "lodash": "4.17.11", - "mdast-util-to-hast": "3.0.4", - "mdast-util-to-string": "1.0.5", - "mdast-util-toc": "2.1.0", - "remark": "9.0.0", - "remark-parse": "5.0.0", - "remark-retext": "3.1.2", - "remark-stringify": "5.0.0", - "retext-english": "3.0.2", - "sanitize-html": "1.20.0", - "underscore.string": "3.3.5", - "unified": "6.2.0", - "unist-util-remove-position": "1.1.2", - "unist-util-select": "1.5.0", - "unist-util-visit": "1.4.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, - "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-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "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" - } - }, - "github-slugger": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz", - "integrity": "sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==", - "requires": { - "emoji-regex": "6.1.1" - } - }, - "glamor": { - "version": "2.20.40", - "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", - "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", - "requires": { - "fbjs": "0.8.16", - "inline-style-prefixer": "3.0.8", - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "through": "2.3.8" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-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.2" - }, - "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.1" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "requires": { - "ini": "1.3.5" - } - }, - "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.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "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.3", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "good-listener": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", - "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "optional": true, - "requires": { - "delegate": "3.2.0" - } - }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graphql": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.2.1.tgz", - "integrity": "sha512-2PL1UbvKeSjy/lUeJqHk+eR9CvuErXoCNwJI4jm3oNFEeY+9ELqHNKO1ZuSxAkasPkpWbmT/iMRMFxd3cEL3tQ==", - "requires": { - "iterall": "1.2.2" - } - }, - "graphql-compose": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-6.1.4.tgz", - "integrity": "sha512-xMfLkUMRRIbVvsp8KhiB6VR7ZYiaerzubL07yWmqWa8GB64kvlkRHMBZfuDeka+U5NncF+if5fcJJusvsc1zMg==", - "requires": { - "graphql-type-json": "0.2.4", - "object-path": "0.11.4" - } - }, - "graphql-config": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.2.1.tgz", - "integrity": "sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ==", - "requires": { - "graphql-import": "0.7.1", - "graphql-request": "1.8.2", - "js-yaml": "3.13.1", - "lodash": "4.17.4", - "minimatch": "3.0.4" - } - }, - "graphql-import": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.7.1.tgz", - "integrity": "sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==", - "requires": { - "lodash": "4.17.4", - "resolve-from": "4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "graphql-playground-html": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz", - "integrity": "sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg==" - }, - "graphql-playground-middleware-express": { - "version": "1.7.12", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.12.tgz", - "integrity": "sha512-17szgonnVSxWVrgblLRHHLjWnMUONfkULIwSunaMvYx8k5oG3yL86cyGCbHuDFUFkyr2swLhdfYl4mDfDXuvOA==", - "requires": { - "graphql-playground-html": "1.6.12" - } - }, - "graphql-relay": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/graphql-relay/-/graphql-relay-0.6.0.tgz", - "integrity": "sha512-OVDi6C9/qOT542Q3KxZdXja3NrDvqzbihn1B44PH8P/c5s0Q90RyQwT6guhGqXqbYEH6zbeLJWjQqiYvcg2vVw==", - "requires": { - "prettier": "1.16.4" - } - }, - "graphql-request": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", - "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==", - "requires": { - "cross-fetch": "2.2.2" - } - }, - "graphql-tools": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.1.1.tgz", - "integrity": "sha512-yHvPkweUB0+Q/GWH5wIG60bpt8CTwBklCSzQdEHmRUgAdEQKxw+9B7zB3dG7wB3Ym7M7lfrS4Ej+jtDZfA2UXg==", - "requires": { - "apollo-link": "1.2.11", - "apollo-utilities": "1.2.1", - "deprecated-decorator": "0.1.6", - "iterall": "1.2.2", - "uuid": "3.3.2" - } - }, - "graphql-type-json": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", - "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==" - }, - "gray-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", - "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", - "requires": { - "js-yaml": "3.13.1", - "kind-of": "6.0.2", - "section-matter": "1.0.0", - "strip-bom-string": "1.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "gray-percentage": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gray-percentage/-/gray-percentage-2.0.0.tgz", - "integrity": "sha1-tyonTRsTeRBKAFC2OyB9xT/lb5k=" - }, - "gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "gzip-size": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", - "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==", - "requires": { - "duplexer": "0.1.1", - "pify": "3.0.0" - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" - }, - "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.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "6.10.0", - "har-schema": "2.0.0" - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "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.1.1" - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "1.4.2" - } - }, - "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.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "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": { - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "hash-mod": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/hash-mod/-/hash-mod-0.0.5.tgz", - "integrity": "sha1-2vHklzqRFmQ0Z9VO52kLQ++ALsw=" - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "hast-to-hyperscript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz", - "integrity": "sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg==", - "requires": { - "comma-separated-tokens": "1.0.5", - "property-information": "4.2.0", - "space-separated-tokens": "1.1.2", - "style-to-object": "0.2.2", - "unist-util-is": "2.1.2", - "web-namespaces": "1.1.2" - } - }, - "hast-util-from-parse5": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz", - "integrity": "sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ==", - "requires": { - "ccount": "1.0.3", - "hastscript": "4.1.0", - "property-information": "4.2.0", - "web-namespaces": "1.1.2", - "xtend": "4.0.1" - } - }, - "hast-util-is-element": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.2.tgz", - "integrity": "sha512-4MEtyofNi3ZunPFrp9NpTQdNPN24xvLX3M+Lr/RGgPX6TLi+wR4/DqeoyQ7lwWcfUp4aevdt4RR0r7ZQPFbHxw==" - }, - "hast-util-parse-selector": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz", - "integrity": "sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw==" - }, - "hast-util-raw": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-4.0.0.tgz", - "integrity": "sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw==", - "requires": { - "hast-util-from-parse5": "4.0.2", - "hast-util-to-parse5": "4.0.1", - "html-void-elements": "1.0.3", - "parse5": "5.1.0", - "unist-util-position": "3.0.2", - "web-namespaces": "1.1.2", - "xtend": "4.0.1", - "zwitch": "1.0.3" - } - }, - "hast-util-to-html": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz", - "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==", - "requires": { - "ccount": "1.0.3", - "comma-separated-tokens": "1.0.5", - "hast-util-is-element": "1.0.2", - "hast-util-whitespace": "1.0.2", - "html-void-elements": "1.0.3", - "property-information": "4.2.0", - "space-separated-tokens": "1.1.2", - "stringify-entities": "1.3.2", - "unist-util-is": "2.1.2", - "xtend": "4.0.1" - } - }, - "hast-util-to-parse5": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz", - "integrity": "sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw==", - "requires": { - "hast-to-hyperscript": "5.0.0", - "property-information": "4.2.0", - "web-namespaces": "1.1.2", - "xtend": "4.0.1", - "zwitch": "1.0.3" - } - }, - "hast-util-whitespace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.2.tgz", - "integrity": "sha512-4JT8B0HKPHBMFZdDQzexjxwhKx9TrpV/+uelvmqlPu8RqqDrnNIEHDtDZCmgE+4YmcFAtKVPLmnY3dQGRaN53A==" - }, - "hastscript": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-4.1.0.tgz", - "integrity": "sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ==", - "requires": { - "comma-separated-tokens": "1.0.5", - "hast-util-parse-selector": "2.2.1", - "property-information": "4.2.0", - "space-separated-tokens": "1.1.2" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "1.1.7", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, - "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", - "requires": { - "react-is": "16.8.6" - } - }, - "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.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "2.0.3", - "obuf": "1.1.2", - "readable-stream": "2.3.3", - "wbuf": "1.7.3" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" - }, - "html-void-elements": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz", - "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" - }, - "html2canvas": { - "version": "1.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", - "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=", - "requires": { - "css-line-break": "1.0.1" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "1.3.1", - "domhandler": "2.4.2", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "3.3.0" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", - "requires": { - "inherits": "2.0.3", - "string_decoder": "1.2.0", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.4.0" - } - }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "requires": { - "eventemitter3": "3.1.0", - "follow-redirects": "1.7.0", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "1.17.0", - "is-glob": "4.0.1", - "lodash": "4.17.11", - "micromatch": "3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } - } - }, - "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.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } - } - }, - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.2" - } - }, - "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.1" - } - } - } - }, - "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.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.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "6.0.2" - } - }, - "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.2" - } - }, - "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" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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-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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "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.4.1", - "sshpk": "1.16.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "hyphenate-style-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", - "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "requires": { - "postcss": "6.0.23" - }, - "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } - } - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "requires": { - "import-from": "2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "2.0.0", - "resolve-from": "3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "requires": { - "resolve-from": "3.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "3.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inline-style-prefixer": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", - "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", - "requires": { - "bowser": "1.9.4", - "css-in-js-utils": "2.0.1" - } - }, - "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", - "requires": { - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "3.0.3", - "figures": "2.0.0", - "lodash": "4.17.11", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "6.4.0", - "string-width": "2.1.1", - "strip-ansi": "5.2.0", - "through": "2.3.8" - }, - "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==" - }, - "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.1" - } - }, - "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.5.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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" - } - }, - "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" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "requires": { - "default-gateway": "4.2.0", - "ipaddr.js": "1.9.0" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - } - } - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" - }, - "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.2" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "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.2.2" - } - }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==" - }, - "is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" - }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", - "requires": { - "is-alphabetical": "1.0.2", - "is-decimal": "1.0.2" - } - }, - "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.11.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-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + }, + "xstate": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-3.3.3.tgz", + "integrity": "sha512-p0ZYDPWxZZZRAJyD3jaGO9/MYioHuxZp6sjcLhPfBZHAprl4EDrZRGDqRVH9VvK8oa6Nrbpf+U5eNmn8KFwO3g==" + } } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "gatsby-telemetry": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.0.10.tgz", + "integrity": "sha512-9Iy+1DqPaFpzMWOQCMiMHrVrdyUlZor6tcymkKBNe5FfbpYUvA4qbo9Ow98bfAuEJ+VtT9Wl0zBfDqOalEJ56A==", "requires": { - "ci-info": "1.6.0" + "@babel/code-frame": "^7.0.0", + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.0", + "boxen": "^3.1.0", + "ci-info": "2.0.0", + "configstore": "^4.0.0", + "envinfo": "^5.8.1", + "fs-extra": "^7.0.1", + "is-docker": "1.1.0", + "node-fetch": "2.3.0", + "resolve-cwd": "^2.0.0", + "source-map": "^0.5.7", + "stack-trace": "^0.0.10", + "stack-utils": "1.0.2", + "uuid": "3.3.2" }, "dependencies": { - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + "configstore": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + } + }, + "node-fetch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", + "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" } } }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "requires": { - "css-color-names": "0.0.4", - "hex-color-regex": "1.1.0", - "hsl-regex": "1.0.0", - "hsla-regex": "1.0.0", - "rgb-regex": "1.0.1", - "rgba-regex": "1.0.0" - } - }, - "is-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.2.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "gatsby-transformer-remark": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.3.8.tgz", + "integrity": "sha512-i0pOcPHbh9cVbkFEu6VMBNIvYErhRLZYApUm+anjSDw0FFj4LN14v/36jpt3+XCZUfJqJCkMP8pth7eS7CEJCg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.0", + "gray-matter": "^4.0.0", + "hast-util-raw": "^4.0.0", + "hast-util-to-html": "^4.0.0", + "lodash": "^4.17.10", + "mdast-util-to-hast": "^3.0.0", + "mdast-util-to-string": "^1.0.5", + "mdast-util-toc": "^2.0.1", + "remark": "^9.0.0", + "remark-parse": "^5.0.0", + "remark-retext": "^3.1.0", + "remark-stringify": "^5.0.0", + "retext-english": "^3.0.0", + "sanitize-html": "^1.18.2", + "underscore.string": "^3.3.5", + "unified": "^6.1.5", + "unist-util-remove-position": "^1.1.2", + "unist-util-select": "^1.5.0", + "unist-util-visit": "^1.3.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==" + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "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-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.1" - } - }, - "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" - } + "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==" }, - "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" - } + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "github-slugger": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz", + "integrity": "sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==", "requires": { - "kind-of": "3.2.2" + "emoji-regex": ">=6.0.0 <=6.1.1" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "glamor": { + "version": "2.20.40", + "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", + "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", "requires": { - "is-path-inside": "1.0.1" + "fbjs": "^0.8.12", + "inline-style-prefixer": "^3.0.6", + "object-assign": "^4.1.1", + "prop-types": "^15.5.10", + "through": "^2.3.8" } }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { - "path-is-inside": "1.0.2" + "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" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "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==", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "isobject": "3.0.1" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "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" + } } } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "1.0.1" - } + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, - "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==", + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", "requires": { - "is-unc-path": "1.0.0" + "min-document": "^2.19.0", + "process": "~0.5.1" } }, - "is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { - "is-absolute-url": "2.1.0" + "ini": "^1.3.4" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" - }, - "is-root": { + "global-modules": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", - "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "requires": { - "html-comment-regex": "1.1.2" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" } }, - "is-symbol": { + "global-prefix": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "requires": { - "has-symbols": "1.0.0" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "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==", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { - "unc-path-regex": "0.1.2" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } } }, - "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==" - }, - "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==" - }, - "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, "requires": { - "punycode": "2.1.1" + "delegate": "^3.1.2" } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "got": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-8.0.0.tgz", + "integrity": "sha512-lqVA9ORcSGfJPHfMXh1RW451aYMP1NyXivpGqGggnfDqNz3QVfMl7MkuEz+dr70gK2X8dhLiS5YzHhCV3/3yOQ==", + "requires": { + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.1.0", + "is-stream": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.2.0", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + } + } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "graphql": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.1.tgz", + "integrity": "sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA==", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" + "iterall": "^1.2.2" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "graphql-compose": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-6.3.2.tgz", + "integrity": "sha512-2sk4G3F/j7U4OBnPkB/HrE8Cejh8nHIJFBOGcqQvsELHXUHtx4S11zR0OU+J3cMtpE/2visBUGUhEHL9WlUK9A==", "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "graphql-type-json": "^0.2.4", + "object-path": "^0.11.4" } }, - "iterall": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", - "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" - }, - "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "graphql-config": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.2.1.tgz", + "integrity": "sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ==", "requires": { - "merge-stream": "1.0.1" + "graphql-import": "^0.7.1", + "graphql-request": "^1.5.0", + "js-yaml": "^3.10.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.4" } }, - "joi": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-12.0.0.tgz", - "integrity": "sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ==", + "graphql-import": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.7.1.tgz", + "integrity": "sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==", "requires": { - "hoek": "4.2.1", - "isemail": "3.2.0", - "topo": "2.0.2" + "lodash": "^4.17.4", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "graphql-playground-html": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz", + "integrity": "sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg==" }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "graphql-playground-middleware-express": { + "version": "1.7.12", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.12.tgz", + "integrity": "sha512-17szgonnVSxWVrgblLRHHLjWnMUONfkULIwSunaMvYx8k5oG3yL86cyGCbHuDFUFkyr2swLhdfYl4mDfDXuvOA==", "requires": { - "argparse": "1.0.9", - "esprima": "4.0.1" + "graphql-playground-html": "1.6.12" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, - "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==" - }, - "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=" - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "graphql-request": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", + "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==", "requires": { - "graceful-fs": "4.1.11" + "cross-fetch": "2.2.2" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "graphql-type-json": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", + "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==" }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "gray-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", + "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "js-yaml": "^3.11.0", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } } }, - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "requires": { - "array-includes": "3.0.3" - } + "gray-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gray-percentage/-/gray-percentage-2.0.0.tgz", + "integrity": "sha1-tyonTRsTeRBKAFC2OyB9xT/lb5k=" }, - "kebab-hash": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/kebab-hash/-/kebab-hash-0.1.2.tgz", - "integrity": "sha512-BTZpq3xgISmQmAVzkISy4eUutsUA7s4IEFlCwOBJjvSFOwyR7I+fza+tBc/rzYWK/NrmFHjfU1IhO3lu29Ib/w==", + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "gzip-size": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", + "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==", "requires": { - "lodash.kebabcase": "4.1.1" + "duplexer": "^0.1.1", + "pify": "^3.0.0" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "is-buffer": "1.1.6" + "function-bind": "^1.1.1" } }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "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-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", "requires": { - "lodash": "4.17.11", - "webpack-sources": "1.3.0" + "isarray": "2.0.1" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" } } }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "requires": { - "package-json": "4.0.1" - } + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, - "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" - } + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "has-symbol-support-x": "^1.4.1" } }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "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": { - "find-cache-dir": "0.1.1", - "mkdirp": "0.5.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "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" + } + } } }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "find-up": "1.1.2" + "is-buffer": "^1.1.5" } } } }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "big.js": "5.2.2", - "emojis-list": "2.1.0", - "json5": "1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "1.2.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "hash-mod": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/hash-mod/-/hash-mod-0.0.5.tgz", + "integrity": "sha1-2vHklzqRFmQ0Z9VO52kLQ++ALsw=" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "lockfile": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", - "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "hast-to-hyperscript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz", + "integrity": "sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg==", "requires": { - "signal-exit": "3.0.2" + "comma-separated-tokens": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.2.1", + "unist-util-is": "^2.0.0", + "web-namespaces": "^1.1.2" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" - }, - "lodash.every": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", - "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + "hast-util-from-parse5": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz", + "integrity": "sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ==", + "requires": { + "ccount": "^1.0.3", + "hastscript": "^4.0.0", + "property-information": "^4.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + } }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + "hast-util-is-element": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.2.tgz", + "integrity": "sha512-4MEtyofNi3ZunPFrp9NpTQdNPN24xvLX3M+Lr/RGgPX6TLi+wR4/DqeoyQ7lwWcfUp4aevdt4RR0r7ZQPFbHxw==" }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + "hast-util-parse-selector": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz", + "integrity": "sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw==" }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + "hast-util-raw": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-4.0.0.tgz", + "integrity": "sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw==", + "requires": { + "hast-util-from-parse5": "^4.0.2", + "hast-util-to-parse5": "^4.0.1", + "html-void-elements": "^1.0.1", + "parse5": "^5.0.0", + "unist-util-position": "^3.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.1", + "zwitch": "^1.0.0" + } }, - "lodash.isstring": { + "hast-util-to-html": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz", + "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==", + "requires": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.1", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^1.0.1", + "unist-util-is": "^2.0.0", + "xtend": "^4.0.1" + } }, - "lodash.maxby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz", - "integrity": "sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0=" + "hast-util-to-parse5": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz", + "integrity": "sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw==", + "requires": { + "hast-to-hyperscript": "^5.0.0", + "property-information": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.1", + "zwitch": "^1.0.0" + } }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + "hast-util-whitespace": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.2.tgz", + "integrity": "sha512-4JT8B0HKPHBMFZdDQzexjxwhKx9TrpV/+uelvmqlPu8RqqDrnNIEHDtDZCmgE+4YmcFAtKVPLmnY3dQGRaN53A==" }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + "hastscript": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-4.1.0.tgz", + "integrity": "sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ==", + "requires": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.2.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0" + } }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + "hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" }, - "longest-streak": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", - "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==" + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "requires": { - "js-tokens": "3.0.2" + "parse-passwd": "^1.0.0" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "lowercase-keys": { + "hsl-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" }, - "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==", + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-void-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz", + "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" + }, + "html2canvas": { + "version": "1.0.0-alpha.12", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", + "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "css-line-break": "1.0.1" } }, - "ltcdr": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltcdr/-/ltcdr-2.2.1.tgz", - "integrity": "sha1-Wrh60dTB2rjowIu/A37gwZAih88=" - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "requires": { - "pify": "4.0.1", - "semver": "5.7.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "readable-stream": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", + "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "object-visit": "1.0.1" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "markdown-escapes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==" - }, - "markdown-table": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", - "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==" + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "1.1.6" + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "md5-file": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", - "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "requires": { - "buffer-alloc": "1.1.0" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" + "postcss": "^6.0.1" }, "dependencies": { - "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==" + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "mdast-util-compact": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz", - "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==", - "requires": { - "unist-util-visit": "1.4.0" - } + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, - "mdast-util-definitions": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz", - "integrity": "sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g==", + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", "requires": { - "unist-util-visit": "1.4.0" + "import-from": "^2.1.0" } }, - "mdast-util-to-hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz", - "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==", + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "collapse-white-space": "1.0.4", - "detab": "2.0.1", - "mdast-util-definitions": "1.2.3", - "mdurl": "1.0.1", - "trim": "0.0.1", - "trim-lines": "1.1.1", - "unist-builder": "1.0.3", - "unist-util-generated": "1.1.3", - "unist-util-position": "3.0.2", - "unist-util-visit": "1.4.0", - "xtend": "4.0.1" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, - "mdast-util-to-nlcst": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.2.tgz", - "integrity": "sha512-TmJlri8dHt7duRU6jfWBMqf5gW+VZ6o/8GHaWzwdxslseB2lL8bSOiox6c8VwYX5v2E4CzUWm/1GkAYqgbNw9A==", + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "requires": { - "nlcst-to-string": "2.0.2", - "repeat-string": "1.6.1", - "unist-util-position": "3.0.2", - "vfile-location": "2.0.4" + "resolve-from": "^3.0.0" } }, - "mdast-util-to-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz", - "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==" - }, - "mdast-util-toc": { + "import-lazy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-2.1.0.tgz", - "integrity": "sha512-ove/QQWSrYOrf9G3xn2MTAjy7PKCtCmm261wpQwecoPAsUtkihkMVczxFqil7VihxgSz4ID9c8bBTsyXR30gQg==", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "requires": { - "github-slugger": "1.2.1", - "mdast-util-to-string": "1.0.5", - "unist-util-visit": "1.4.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" }, - "meant": { + "indexes-of": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.1.tgz", - "integrity": "sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==" + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "mimic-fn": "1.2.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.3" - } + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "ink": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ink/-/ink-2.2.0.tgz", + "integrity": "sha512-BQl7jpmLxPqFGjdQdgXQS0+mAyn1BHkEW1YXur3dahNNwLB6MWsfAZ1GWVdj+Mbpmj+u33KaFOosw3067t3d9g==", + "optional": true, "requires": { - "camelcase-keys": "4.2.0", - "decamelize-keys": "1.1.0", - "loud-rejection": "1.6.0", - "minimist-options": "3.0.2", - "normalize-package-data": "2.4.0", - "read-pkg-up": "3.0.0", - "redent": "2.0.0", - "trim-newlines": "2.0.0", - "yargs-parser": "10.1.0" + "@types/react": "^16.8.6", + "arrify": "^1.0.1", + "auto-bind": "^2.0.0", + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "cli-truncate": "^1.1.0", + "is-ci": "^2.0.0", + "lodash.throttle": "^4.1.1", + "log-update": "^3.0.0", + "prop-types": "^15.6.2", + "react-reconciler": "^0.20.0", + "scheduler": "^0.13.2", + "signal-exit": "^3.0.2", + "slice-ansi": "^1.0.0", + "string-length": "^2.0.0", + "widest-line": "^2.0.0", + "wrap-ansi": "^5.0.0", + "yoga-layout-prebuilt": "^1.9.3" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "optional": true }, - "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=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - } + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "optional": true }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "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=", + "optional": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "optional": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "is-fullwidth-code-point": "^2.0.0" } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "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==", + "optional": true, "requires": { - "pify": "3.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" + "ansi-regex": "^4.1.0" } }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "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==", + "optional": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } + } + } + }, + "ink-spinner": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-3.0.1.tgz", + "integrity": "sha512-AVR4Z/NXDQ7dT5ltWcCzFS9Dd4T8eaO//E2UO8VYNiJcZpPCSJ11o5A0UVPcMlZxGbGD6ikUFDR3ZgPUQk5haQ==", + "optional": true, + "requires": { + "cli-spinners": "^1.0.0", + "prop-types": "^15.5.10" + } + }, + "inline-style-prefixer": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", + "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", + "requires": { + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" + } + }, + "inquirer": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "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==" }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "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": { - "camelcase": "4.1.0" + "ansi-regex": "^4.1.0" } } } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "dependencies": { + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "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=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "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" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==" + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=" + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "merge-stream": { + "is-binary-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "readable-stream": "2.3.3" + "binary-extensions": "^1.0.0" } }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-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" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==" + }, + "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": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "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" - } - }, - "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" - } - }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, - "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + "is-docker": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-1.1.0.tgz", + "integrity": "sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE=" }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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": { - "mime-db": "1.38.0" + "number-is-nan": "^1.0.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "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" + } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { - "dom-walk": "0.1.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, - "mini-css-extract-plugin": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz", - "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==", + "is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", "requires": { - "loader-utils": "1.2.3", - "schema-utils": "1.0.0", - "webpack-sources": "1.3.0" + "is-glob": "^2.0.0" }, "dependencies": { - "schema-utils": { + "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "ajv": "6.10.0", - "ajv-errors": "1.0.1", - "ajv-keywords": "3.4.0" + "is-extglob": "^1.0.0" } } } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "brace-expansion": "1.1.8" + "kind-of": "^3.0.2" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "requires": { - "arrify": "1.0.1", - "is-plain-obj": "1.1.0" + "is-path-inside": "^1.0.0" } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "concat-stream": "1.6.2", - "duplexify": "3.7.1", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.1.1", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "3.0.0", - "pumpify": "1.5.1", - "stream-each": "1.2.3", - "through2": "2.0.5" + "path-is-inside": "^1.0.1" } }, - "mitt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "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": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "isobject": "^3.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": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, - "modularscale": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/modularscale/-/modularscale-1.0.2.tgz", - "integrity": "sha1-So8TrzKl5SFPxuLPxSkGSr/X2Hc=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "lodash.isnumber": "3.0.3" + "has": "^1.0.1" } }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "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": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.3", - "run-queue": "1.0.3" + "is-unc-path": "^1.0.0" } }, - "ms": { + "is-relative-url": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", + "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", "requires": { - "dns-packet": "1.3.1", - "thunky": "1.0.3" + "is-absolute-url": "^2.0.0" } }, - "multicast-dns-service-types": { + "is-resolvable": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" }, - "name-all-modules-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz", - "integrity": "sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w=" + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "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" - } - }, - "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" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } + "html-comment-regex": "^1.1.0" } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "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" + } }, - "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" + "is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "requires": { + "is-invalid-path": "^0.1.0" + } }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" + "is-whitespace-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "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==" }, - "nlcst-to-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.2.tgz", - "integrity": "sha512-DV7wVvMcAsmZ5qEwvX1JUNF4lKkAAKbChwNlIH7NLsPR7LWWoeIt53YlZ5CQH5KDXEXQ9Xa3mw0PbPewymrtew==" + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==" }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", - "requires": { - "lodash.toarray": "4.4.0" - } + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, - "node-eta": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.9.0.tgz", - "integrity": "sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g=" + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "punycode": "2.x.x" } }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "3.0.0", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.2", - "stream-http": "2.8.3", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.10", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.11.1", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "node-releases": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", - "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "semver": "5.4.1" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, - "noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "requires": { - "inherits": "2.0.3", - "readable-stream": "1.0.34" - }, - "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.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "merge-stream": "^1.0.1" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "joi": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", "requires": { - "remove-trailing-separator": "1.1.0" + "hoek": "6.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "path-key": "2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "requires": { - "boolbase": "1.0.0" - } + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, - "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=" + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + "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==" }, - "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=" + "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==" }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "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=" }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "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=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "minimist": "^1.2.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.6" - } + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } }, - "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + "jsx-ast-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", + "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", + "requires": { + "array-includes": "^3.0.3" + } }, - "object-visit": { + "kebab-hash": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/kebab-hash/-/kebab-hash-0.1.2.tgz", + "integrity": "sha512-BTZpq3xgISmQmAVzkISy4eUutsUA7s4IEFlCwOBJjvSFOwyR7I+fza+tBc/rzYWK/NrmFHjfU1IhO3lu29Ib/w==", + "requires": { + "lodash.kebabcase": "^4.1.1" + } + }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "is-buffer": "^1.1.5" } }, - "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.13.0", - "function-bind": "1.1.1", - "has": "1.0.1" + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" } }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.13.0" + "package-json": "^4.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=", + "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" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + }, + "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" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { - "isobject": "3.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "loader-fs-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", + "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "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" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } } } }, - "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.13.0", - "function-bind": "1.1.1", - "has": "1.0.3" + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" }, "dependencies": { - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "requires": { - "function-bind": "1.1.1" + "minimist": "^1.2.0" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "ee-first": "1.1.1" + "p-locate": "^2.0.0", + "path-exists": "^3.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=", + "lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", "requires": { - "wrappy": "1.0.2" + "signal-exit": "^3.0.2" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "1.2.0" - } + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, - "opentracing": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.3.tgz", - "integrity": "sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo=" + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "requires": { - "is-wsl": "1.1.0" - } + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", - "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==", - "requires": { - "cssnano": "4.1.10", - "last-call-webpack-plugin": "3.0.0" - } + "lodash.every": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", + "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "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", - "wordwrap": "1.0.0" - } + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "1.4.4" - } + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "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=" + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "lodash.maxby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz", + "integrity": "sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0=" }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "1.0.0" - } + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "1.3.0" - } + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "optional": true }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-update": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.2.0.tgz", + "integrity": "sha512-KJ6zAPIHWo7Xg1jYror6IUDFJBq1bQ4Bi4wAEp2y/0ScjBBVi/g0thr0sUVhuvuXauWzczt7T2QHghPDNnKBuw==", + "optional": true, "requires": { - "p-finally": "1.0.0" + "ansi-escapes": "^3.2.0", + "cli-cursor": "^2.1.0", + "wrap-ansi": "^5.0.0" + }, + "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==", + "optional": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "optional": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "optional": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "optional": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "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==", + "optional": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "longest-streak": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", + "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "got": "6.7.1", - "registry-auth-token": "3.4.0", - "registry-url": "3.1.0", - "semver": "5.4.1" + "js-tokens": "^3.0.0" } }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "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" + } }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "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": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "ltcdr": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltcdr/-/ltcdr-2.2.1.tgz", + "integrity": "sha1-Wrh60dTB2rjowIu/A37gwZAih88=" + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "requires": { - "callsites": "3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { - "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==" + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" } } }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.17", - "safe-buffer": "5.1.1" + "p-defer": "^1.0.0" } }, - "parse-english": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.1.1.tgz", - "integrity": "sha512-g7hegR9AFIlGXl5645mG8nQeeWW7SrK7lgmgIWR0KKWvGyZO5mxa4GGoNxRLm6VW2LGpLnn6g4O9yyLJQ4IzQw==", - "requires": { - "nlcst-to-string": "2.0.2", - "parse-latin": "4.1.1", - "unist-util-modify-children": "1.1.3", - "unist-util-visit-children": "1.1.2" - } + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, - "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "character-entities": "1.2.2", - "character-entities-legacy": "1.1.2", - "character-reference-invalid": "1.1.2", - "is-alphanumerical": "1.0.2", - "is-decimal": "1.0.2", - "is-hexadecimal": "1.0.2" + "object-visit": "^1.0.0" } }, - "parse-filepath": { + "markdown-escapes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==" + }, + "markdown-table": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", + "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==" + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", "requires": { - "error-ex": "1.3.1" + "buffer-alloc": "^1.1.0" } }, - "parse-latin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.1.1.tgz", - "integrity": "sha512-9fPVvDdw6G8LxL3o/PL6IzSGNGpF+3HEjCzFe0dN83sZPstftyr+McP9dNi3+EnR7ICYOHbHKCZ0l7JD90K5xQ==", + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { - "nlcst-to-string": "2.0.2", - "unist-util-modify-children": "1.1.3", - "unist-util-visit-children": "1.1.2" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "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==" + } } }, - "parse-numeric-range": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz", - "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=" - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "parse-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", - "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "mdast-util-compact": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz", + "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==", "requires": { - "better-assert": "1.0.2" + "unist-util-visit": "^1.1.0" } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "mdast-util-definitions": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz", + "integrity": "sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g==", "requires": { - "better-assert": "1.0.2" + "unist-util-visit": "^1.0.0" } }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "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=", + "mdast-util-to-hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz", + "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==", "requires": { - "path-root-regex": "0.1.2" + "collapse-white-space": "^1.0.0", + "detab": "^2.0.0", + "mdast-util-definitions": "^1.2.0", + "mdurl": "^1.0.1", + "trim": "0.0.1", + "trim-lines": "^1.0.0", + "unist-builder": "^1.0.1", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.0", + "xtend": "^4.0.1" } }, - "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-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "mdast-util-to-nlcst": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.2.tgz", + "integrity": "sha512-TmJlri8dHt7duRU6jfWBMqf5gW+VZ6o/8GHaWzwdxslseB2lL8bSOiox6c8VwYX5v2E4CzUWm/1GkAYqgbNw9A==", "requires": { - "pify": "2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "nlcst-to-string": "^2.0.0", + "repeat-string": "^1.5.2", + "unist-util-position": "^3.0.0", + "vfile-location": "^2.0.0" } }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "mdast-util-to-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz", + "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==" + }, + "mdast-util-toc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-2.1.0.tgz", + "integrity": "sha512-ove/QQWSrYOrf9G3xn2MTAjy7PKCtCmm261wpQwecoPAsUtkihkMVczxFqil7VihxgSz4ID9c8bBTsyXR30gQg==", "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "github-slugger": "^1.1.1", + "mdast-util-to-string": "^1.0.2", + "unist-util-visit": "^1.1.0" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "meant": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.1.tgz", + "integrity": "sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { - "pinkie": "2.0.4" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", "requires": { - "find-up": "3.0.0" + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" }, "dependencies": { "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "3.0.0" + "locate-path": "^2.0.0" } }, - "locate-path": { + "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=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "pify": "^3.0.0" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "requires": { - "p-try": "2.2.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, - "p-locate": { + "read-pkg-up": { "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==", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "requires": { - "p-limit": "2.2.0" + "find-up": "^2.0.0", + "read-pkg": "^3.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==" + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "requires": { + "camelcase": "^4.1.0" + } } } }, - "pnp-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-S4kz+5rvWvD0w1O63eTJeXIxW4JHK0wPRMO7GmPhbZXJnTePcfrWZlni4BoglIf7pLSY18xtqo3MSnVkoAFXKg==", - "requires": { - "ts-pnp": "1.0.1" - } + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" + "readable-stream": "^2.0.1" } }, - "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=" + "merge2": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", + "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" }, - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "6.1.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { - "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==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "color-convert": "1.9.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "3.0.0" - } - } + "is-plain-object": "^2.0.4" } }, - "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" - } + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "css-unit-converter": "1.1.1", - "postcss": "7.0.14", - "postcss-selector-parser": "5.0.0", - "postcss-value-parser": "3.3.1" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "mime": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", + "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz", + "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==", "requires": { - "browserslist": "4.5.4", - "color": "3.1.0", - "has": "1.0.1", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" }, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } } } }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "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": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mitt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", + "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "requires": { - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "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" + } + } } }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "postcss": "7.0.14" + "minimist": "0.0.8" } }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "modularscale": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/modularscale/-/modularscale-1.0.2.tgz", + "integrity": "sha1-So8TrzKl5SFPxuLPxSkGSr/X2Hc=", "requires": { - "postcss": "7.0.14" + "lodash.isnumber": "^3.0.0" } }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "requires": { - "postcss": "7.0.14" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" } }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "requires": { - "postcss": "7.0.14" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" } }, - "postcss-flexbugs-fixes": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz", - "integrity": "sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w==", + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "name-all-modules-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz", + "integrity": "sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w=" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "postcss": "6.0.23" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "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.1" - } + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "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.5.0" - } + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, - "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": "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" - } - } - } - }, - "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", - "requires": { - "cosmiconfig": "4.0.0", - "import-cwd": "2.1.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "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-directory": "0.3.1", - "js-yaml": "3.13.1", - "parse-json": "4.0.0", - "require-from-string": "2.0.2" + "is-plain-object": "^2.0.4" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "postcss-loader": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", - "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "nlcst-to-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.2.tgz", + "integrity": "sha512-DV7wVvMcAsmZ5qEwvX1JUNF4lKkAAKbChwNlIH7NLsPR7LWWoeIt53YlZ5CQH5KDXEXQ9Xa3mw0PbPewymrtew==" + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", "requires": { - "loader-utils": "1.2.3", - "postcss": "6.0.23", - "postcss-load-config": "2.0.0", - "schema-utils": "0.4.7" - }, - "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } - } + "lodash.toarray": "^4.4.0" } }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "node-eta": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.9.0.tgz", + "integrity": "sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "css-color-names": "0.0.4", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1", - "stylehacks": "4.0.3" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "requires": { - "browserslist": "4.5.4", - "caniuse-api": "3.0.0", - "cssnano-util-same-parent": "4.0.1", - "postcss": "7.0.14", - "postcss-selector-parser": "3.1.1", - "vendors": "1.0.2" + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" }, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" - } + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "4.2.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "requires": { - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "node-releases": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.21.tgz", + "integrity": "sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q==", "requires": { - "cssnano-util-get-arguments": "4.0.0", - "is-color-stop": "1.1.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "semver": "^5.3.0" } }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", "requires": { - "alphanum-sort": "1.0.2", - "browserslist": "4.5.4", - "cssnano-util-get-arguments": "4.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1", - "uniqs": "2.0.0" + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" }, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "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.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" + "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=" } } }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "7.0.14", - "postcss-selector-parser": "3.1.1" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "4.2.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - } + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "postcss": "6.0.23" - }, - "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } - } + "remove-trailing-separator": "^1.0.1" } }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "requires": { - "css-selector-tokenizer": "0.7.1", - "postcss": "6.0.23" + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" }, "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" } } }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "css-selector-tokenizer": "0.7.1", - "postcss": "6.0.23" - }, - "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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" - } - } + "path-key": "^2.0.0" } }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.23" - }, - "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "2.4.2", - "source-map": "0.6.1", - "supports-color": "5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "boolbase": "~1.0.0" + } + }, + "null-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", + "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=" + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "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=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "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": { - "has-flag": "3.0.0" + "is-descriptor": "^0.1.0" } } } }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "requires": { - "postcss": "7.0.14" - } + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "requires": { - "cssnano-util-get-match": "4.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" - } + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "cssnano-util-get-arguments": "4.0.0", - "has": "1.0.1", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "requires": { - "cssnano-util-get-arguments": "4.0.0", - "cssnano-util-get-match": "4.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", "requires": { - "has": "1.0.1", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" } }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "requires": { - "cssnano-util-get-match": "4.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "browserslist": "4.5.4", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "isobject": "^3.0.1" }, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "3.3.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "ee-first": "1.1.1" } }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "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": { - "cssnano-util-get-arguments": "4.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "wrappy": "1" } }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "browserslist": "4.5.4", - "caniuse-api": "3.0.0", - "has": "1.0.1", - "postcss": "7.0.14" - }, - "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" - } - } + "mimic-fn": "^1.0.0" } }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "opentracing": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.3.tgz", + "integrity": "sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo=" + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "requires": { - "cssnano-util-get-match": "4.0.0", - "has": "1.0.1", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1" + "is-wsl": "^1.1.0" } }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "optimize-css-assets-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==", "requires": { - "cssesc": "2.0.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - } + "cssnano": "^4.1.0", + "last-call-webpack-plugin": "^3.0.0" } }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "requires": { - "is-svg": "3.0.0", - "postcss": "7.0.14", - "postcss-value-parser": "3.3.1", - "svgo": "1.2.1" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "requires": { - "alphanum-sort": "1.0.2", - "postcss": "7.0.14", - "uniqs": "2.0.0" + "url-parse": "^1.4.3" } }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "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=" }, - "prettier": { - "version": "1.16.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", - "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==" + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "requires": { - "renderkid": "2.0.3", - "utila": "0.4.0" - } + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, - "prismjs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", - "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "clipboard": "2.0.4" + "p-try": "^1.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "requires": { - "asap": "2.0.6" + "p-finally": "^1.0.0" } }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" }, "dependencies": { - "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==", + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "js-tokens": "3.0.2" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } } } }, - "property-information": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", - "integrity": "sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==", + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "requires": { - "xtend": "4.0.1" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.8.0" + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + } } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "parse-english": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.1.1.tgz", + "integrity": "sha512-g7hegR9AFIlGXl5645mG8nQeeWW7SrK7lgmgIWR0KKWvGyZO5mxa4GGoNxRLm6VW2LGpLnn6g4O9yyLJQ4IzQw==", + "requires": { + "nlcst-to-string": "^2.0.0", + "parse-latin": "^4.0.0", + "unist-util-modify-children": "^1.0.0", + "unist-util-visit-children": "^1.0.0" + } }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "parse-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", + "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.4", - "randombytes": "2.1.0", - "safe-buffer": "5.1.2" - }, - "dependencies": { - "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==" - } + "error-ex": "^1.2.0" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "parse-latin": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.1.1.tgz", + "integrity": "sha512-9fPVvDdw6G8LxL3o/PL6IzSGNGpF+3HEjCzFe0dN83sZPstftyr+McP9dNi3+EnR7ICYOHbHKCZ0l7JD90K5xQ==", "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "nlcst-to-string": "^2.0.0", + "unist-util-modify-children": "^1.0.0", + "unist-util-visit-children": "^1.0.0" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "parse-numeric-range": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz", + "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "requires": { - "duplexify": "3.7.1", - "inherits": "2.0.3", - "pump": "2.0.1" - }, - "dependencies": { - "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.4.1", - "once": "1.4.0" - } - } + "better-assert": "~1.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==" + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + "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=" }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "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-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "requires": { - "safe-buffer": "5.1.1" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "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": { - "randombytes": "2.1.0", - "safe-buffer": "5.1.1" + "pinkie": "^2.0.0" } }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" + "find-up": "^3.0.0" }, "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "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" + } + }, + "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" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "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": { - "safer-buffer": "2.1.2" + "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==" } } }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "pnp-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "ts-pnp": "^1.1.2" } }, - "react": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", - "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", "requires": { - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "scheduler": "0.13.6" - }, - "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "3.0.2" - } - } - } - } + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" } }, - "react-dev-utils": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.3.tgz", - "integrity": "sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ==", + "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.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", "requires": { - "address": "1.0.3", - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "cross-spawn": "5.1.0", - "detect-port-alt": "1.1.3", - "escape-string-regexp": "1.0.5", - "filesize": "3.5.11", - "global-modules": "1.0.0", - "gzip-size": "3.0.0", - "inquirer": "3.3.0", - "is-root": "1.0.0", - "opn": "5.1.0", - "react-error-overlay": "3.0.0", - "recursive-readdir": "2.2.1", - "shell-quote": "1.6.1", - "sockjs-client": "1.1.4", - "strip-ansi": "3.0.1", - "text-table": "0.2.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, "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.1" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" - }, - "detect-port-alt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz", - "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=", - "requires": { - "address": "1.0.3", - "debug": "2.6.9" - } - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "color-convert": "^1.9.0" } }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "requires": { - "duplexer": "0.1.1" - } - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "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-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { - "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.5.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "ansi-regex": "3.0.0" + "has-flag": "^3.0.0" } } } }, - "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "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-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", + "requires": { + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" + } + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz", + "integrity": "sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w==", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "is-wsl": "1.1.0" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", "requires": { - "has-flag": "3.0.0" + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "os-tmpdir": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } } } }, - "react-dom": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", - "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", "requires": { - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "scheduler": "0.13.6" + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" }, "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "3.0.2" - } - } + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "react-error-overlay": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", - "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==" - }, - "react-helmet": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", - "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "requires": { - "deep-equal": "1.0.1", - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "react-side-effect": "1.1.5" + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" } }, - "react-hot-loader": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.8.3.tgz", - "integrity": "sha512-Is8bKbSxuDLTqsWu1yjr+o1yA6yGDGjEQ2i1E8t/Nj1xJYC6QBRbyoofTn1xkMoKpcgXHuTJTqBhK0RY6moFJA==", + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", "requires": { - "fast-levenshtein": "2.0.6", - "global": "4.3.2", - "hoist-non-react-statics": "3.3.0", - "loader-utils": "1.2.3", - "lodash": "4.17.11", - "prop-types": "15.7.2", - "react-lifecycles-compat": "3.0.4", - "shallowequal": "1.0.2", - "source-map": "0.7.3" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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==", + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", "requires": { - "js-tokens": "3.0.2" + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.8.6" + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" } } }, - "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-side-effect": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", - "integrity": "sha512-Z2ZJE4p/jIfvUpiUMRydEVpQRf2f8GMHczT6qLcARmX7QRb28JDBTpnM2g/i5y/p7ZDEXYGHWg0RbhikE+hJRw==", + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "requires": { - "exenv": "1.2.2", - "shallowequal": "1.0.2" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "react-typography": { - "version": "0.16.19", - "resolved": "https://registry.npmjs.org/react-typography/-/react-typography-0.16.19.tgz", - "integrity": "sha512-kV2qLEsdm0x9P4YXQEDVc88tDb4Vg0h/vdVZGgbqaRn8ERvNzV76JHUeOby3vvcUYU5MPd5Kz5DPH9Bhp4I/iw==" - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", "requires": { - "mute-stream": "0.0.7" + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", "requires": { - "pify": "4.0.1", - "with-open-file": "0.1.6" + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", + "requires": { + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" + } } } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "requires": { - "locate-path": "2.0.0" + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", "requires": { - "graceful-fs": "4.1.11", - "micromatch": "3.1.10", - "readable-stream": "2.3.3" + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "requires": { - "minimatch": "3.0.3" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" }, "dependencies": { - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "brace-expansion": "1.1.8" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "requires": { - "indent-string": "3.2.0", - "strip-indent": "2.0.0" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "redux": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", - "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "requires": { - "loose-envify": "1.4.0", - "symbol-observable": "1.2.0" + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" }, "dependencies": { - "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==", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "js-tokens": "3.0.2" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "regenerate-unicode-properties": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", - "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "requires": { - "regenerate": "1.4.0" + "postcss": "^7.0.0" } }, - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" - }, - "regenerator-transform": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", - "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "requires": { - "private": "0.1.8" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "2.0.4" - } - } + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "regexp-tree": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", - "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==" - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - }, - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "requires": { - "regenerate": "1.4.0", - "regenerate-unicode-properties": "8.0.2", - "regjsgen": "0.5.0", - "regjsparser": "0.6.0", - "unicode-match-property-ecmascript": "1.0.4", - "unicode-match-property-value-ecmascript": "1.1.0" + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "requires": { - "rc": "1.2.8", - "safe-buffer": "5.1.1" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", "requires": { - "rc": "1.2.8" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", "requires": { - "jsesc": "0.5.0" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", + "requires": { + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" + } } } }, - "relay-runtime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-2.0.0.tgz", - "integrity": "sha512-o/LPFHTI6+3FLJXM3Ec4N6hzkKYILVHYRJThNX0UQlMnqjTVPR6NO4qFE2QzzEiUS+lys+qfnvBzSmNbSh1zWQ==", + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", "requires": { - "@babel/runtime": "7.4.3", - "fbjs": "1.0.0" + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "dependencies": { - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", - "requires": { - "core-js": "2.5.1", - "fbjs-css-vars": "1.0.2", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.19" - } - }, - "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" } } }, - "remark": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", - "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "requires": { - "remark-parse": "5.0.0", - "remark-stringify": "5.0.0", - "unified": "6.2.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "remark-parse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", - "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", "requires": { - "collapse-white-space": "1.0.4", - "is-alphabetical": "1.0.2", - "is-decimal": "1.0.2", - "is-whitespace-character": "1.0.2", - "is-word-character": "1.0.2", - "markdown-escapes": "1.0.2", - "parse-entities": "1.2.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.1", - "trim": "0.0.1", - "trim-trailing-lines": "1.1.1", - "unherit": "1.1.1", - "unist-util-remove-position": "1.1.2", - "vfile-location": "2.0.4", - "xtend": "4.0.1" + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "remark-retext": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.2.tgz", - "integrity": "sha512-+48KzJdSXvsPupY5pj5AY7oBUSiDOqFPZBKebX5WemrMyIG+RImIt9hgeqelluVDd1kooHen33K/aybTPyoI9g==", + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "requires": { - "mdast-util-to-nlcst": "3.2.2" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", + "requires": { + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" + } + } } }, - "remark-stringify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", - "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "requires": { - "ccount": "1.0.3", - "is-alphanumeric": "1.0.0", - "is-decimal": "1.0.2", - "is-whitespace-character": "1.0.2", - "longest-streak": "2.0.2", - "markdown-escapes": "1.0.2", - "markdown-table": "1.1.2", - "mdast-util-compact": "1.0.2", - "parse-entities": "1.2.1", - "repeat-string": "1.6.1", - "state-toggle": "1.0.1", - "stringify-entities": "1.3.2", - "unherit": "1.1.1", - "xtend": "4.0.1" + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "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=" - }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "requires": { - "css-select": "1.2.0", - "dom-converter": "0.2.0", - "htmlparser2": "3.10.1", - "strip-ansi": "3.0.1", - "utila": "0.4.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.7", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "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.22", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.2" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, "dependencies": { - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "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==" + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" } } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } }, - "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=" + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "requires": { - "path-parse": "1.0.6" - } + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", "requires": { - "resolve-from": "3.0.0" + "renderkid": "^2.0.1", + "utila": "~0.4" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "prismjs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", + "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" + "clipboard": "^2.0.0" } }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "retext-english": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.2.tgz", - "integrity": "sha512-iWffdWUvJngqaRlE570SaYRgQbn4/QVBfGa/XseEBuBazymnyW24o37oLPY0vm+PJdLmDghnjZX0UbkZSZF0Cg==", + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "parse-english": "4.1.1", - "unherit": "1.1.1" + "asap": "~2.0.3" } }, - "rgb-regex": { + "promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + "prompts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz", + "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==", + "requires": { + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" + } }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "glob": "7.1.3" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" }, "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "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==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "js-tokens": "^3.0.0 || ^4.0.0" } } } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "property-information": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", + "integrity": "sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==", "requires": { - "is-promise": "2.1.0" + "xtend": "^4.0.1" } }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", "requires": { - "aproba": "1.2.0" + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "requires": { - "rx-lite": "4.0.8" - } + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { - "tslib": "1.9.3" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "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-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "ret": "0.1.15" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sanitize-html": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.0.tgz", - "integrity": "sha512-BpxXkBoAG+uKCHjoXFmox6kCSYpnulABoGcZ/R3QyY9ndXbIM5S94eOr1IqnzTG8TnbmXaxWoDDzKC5eJv7fEQ==", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "requires": { - "chalk": "2.4.2", - "htmlparser2": "3.10.1", - "lodash.clonedeep": "4.5.0", - "lodash.escaperegexp": "4.1.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mergewith": "4.6.1", - "postcss": "7.0.14", - "srcset": "1.0.0", - "xtend": "4.0.1" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { - "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.1" - } - }, - "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.5.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "requires": { - "has-flag": "3.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "scheduler": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", - "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", - "requires": { - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "requires": { - "ajv": "6.10.0", - "ajv-keywords": "3.4.0" - } + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "scroll-behavior": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/scroll-behavior/-/scroll-behavior-0.9.10.tgz", - "integrity": "sha512-JVJQkBkqMLEM4ATtbHTKare97zhz/qlla9mNttFYY/bcpyOb4BuBGEQ/N9AQWXvshzf6zo9jP60TlphnJ4YPoQ==", + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { - "dom-helpers": "3.4.0", - "invariant": "2.2.2" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "2.0.1", - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "select": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "optional": true + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" }, - "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { - "node-forge": "0.7.5" + "safe-buffer": "^5.1.0" } }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "semver": "5.4.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.3", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "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" + } } } }, - "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==" + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { - "accepts": "1.3.5", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.3", - "mime-types": "2.1.22", - "parseurl": "1.3.2" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } } }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "react": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + }, + "dependencies": { + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } + } + } } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "react-dev-utils": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.3.tgz", + "integrity": "sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ==", + "requires": { + "address": "1.0.3", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.3", + "escape-string-regexp": "1.0.5", + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.1.0", + "react-error-overlay": "^3.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "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=" + }, + "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" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "detect-port-alt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz", + "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "requires": { + "duplexer": "^0.1.1" + } + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "react-dom": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + }, + "dependencies": { + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } + } + } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + "react-error-overlay": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", + "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==" }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "react-helmet": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", + "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", + "requires": { + "deep-equal": "^1.0.1", + "object-assign": "^4.1.1", + "prop-types": "^15.5.4", + "react-side-effect": "^1.1.0" + } }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "react-hot-loader": { + "version": "4.8.8", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.8.8.tgz", + "integrity": "sha512-58bgeS7So8V93MhhnKogbraor8xdrTncil+b6IoIXkTIr3blJNAE7bU4tn/iJvy2J7rjxQmKFRaxKrWdKUZpqg==", "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^3.3.0", + "loader-utils": "^1.1.0", + "lodash": "^4.17.11", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.0.2", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } } }, - "shallow-compare": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz", - "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" }, - "shallowequal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", - "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "react-reconciler": { + "version": "0.20.4", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.20.4.tgz", + "integrity": "sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA==", + "optional": true, "requires": { - "shebang-regex": "1.0.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "react-side-effect": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", + "integrity": "sha512-Z2ZJE4p/jIfvUpiUMRydEVpQRf2f8GMHczT6qLcARmX7QRb28JDBTpnM2g/i5y/p7ZDEXYGHWg0RbhikE+hJRw==", "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "exenv": "^1.2.1", + "shallowequal": "^1.0.1" } }, - "sift": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/sift/-/sift-5.1.0.tgz", - "integrity": "sha1-G78t+w63HlbEzH+1Z/vRNRtlAV4=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "react-typography": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/react-typography/-/react-typography-0.16.19.tgz", + "integrity": "sha512-kV2qLEsdm0x9P4YXQEDVc88tDb4Vg0h/vdVZGgbqaRn8ERvNzV76JHUeOby3vvcUYU5MPd5Kz5DPH9Bhp4I/iw==" }, - "signedsource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", - "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=" + "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" + } }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "read-chunk": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", + "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", "requires": { - "is-arrayish": "0.3.2" + "pify": "^4.0.1", + "with-open-file": "^0.1.6" }, "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "ansi-styles": "3.2.1", - "astral-regex": "1.0.0", - "is-fullwidth-code-point": "2.0.0" - }, - "dependencies": { - "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.1" - } - }, - "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=" - } + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.2", - "use": "3.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.6" - } - } + "find-up": "^2.0.0", + "read-pkg": "^2.0.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==", + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "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.2" - } - }, - "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.2" - } - }, - "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.2" - } - }, - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "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": { - "kind-of": "3.2.2" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, - "socket.io": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", - "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", "requires": { - "debug": "4.1.1", - "engine.io": "3.3.2", - "has-binary2": "1.0.3", - "socket.io-adapter": "1.1.1", - "socket.io-client": "2.2.0", - "socket.io-parser": "3.3.0" + "minimatch": "3.0.3" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "requires": { - "ms": "2.1.1" + "brace-expansion": "^1.0.0" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" - }, - "socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "3.1.0", - "engine.io-client": "3.3.2", - "has-binary2": "1.0.3", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "3.3.0", - "to-array": "0.1.4" - }, - "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" - } - } + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" } }, - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "redux": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", + "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", "requires": { - "component-emitter": "1.2.1", - "debug": "3.1.0", - "isarray": "2.0.1" + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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==", "requires": { - "ms": "2.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" } } }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.3.2" + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, + "regenerator-transform": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", + "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "requires": { + "private": "^0.1.6" + } + }, + "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" }, "dependencies": { - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "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" + } + }, + "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": { - "websocket-driver": "0.7.0" + "is-plain-object": "^2.0.4" } } } }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.4.4" - } + "regexp-tree": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", + "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==" }, - "source-list-map": { + "regexpp": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", "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" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" } }, - "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=" - }, - "space-separated-tokens": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz", - "integrity": "sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA==", + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", "requires": { - "trim": "0.0.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { - "spdx-license-ids": "1.2.2" + "rc": "^1.0.1" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" }, - "spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "requires": { - "debug": "4.1.1", - "handle-thing": "2.0.0", - "http-deceiver": "1.2.7", - "select-hose": "2.0.0", - "spdy-transport": "3.0.0" + "jsesc": "~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==", - "requires": { - "ms": "2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "relay-runtime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-2.0.0.tgz", + "integrity": "sha512-o/LPFHTI6+3FLJXM3Ec4N6hzkKYILVHYRJThNX0UQlMnqjTVPR6NO4qFE2QzzEiUS+lys+qfnvBzSmNbSh1zWQ==", "requires": { - "debug": "4.1.1", - "detect-node": "2.0.4", - "hpack.js": "2.1.6", - "obuf": "1.1.2", - "readable-stream": "3.3.0", - "wbuf": "1.7.3" + "@babel/runtime": "^7.0.0", + "fbjs": "^1.0.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.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "fbjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", + "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", "requires": { - "inherits": "2.0.3", - "string_decoder": "1.2.0", - "util-deprecate": "1.0.2" + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" } }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "5.1.1" - } + "ua-parser-js": { + "version": "0.7.19", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", + "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" } } }, - "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==", + "remark": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", + "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", "requires": { - "extend-shallow": "3.0.2" - }, - "dependencies": { - "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" - } - }, - "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" - } - } + "remark-parse": "^5.0.0", + "remark-stringify": "^5.0.0", + "unified": "^6.0.0" + } + }, + "remark-parse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", + "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-retext": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.2.tgz", + "integrity": "sha512-+48KzJdSXvsPupY5pj5AY7oBUSiDOqFPZBKebX5WemrMyIG+RImIt9hgeqelluVDd1kooHen33K/aybTPyoI9g==", + "requires": { + "mdast-util-to-nlcst": "^3.2.0" + } + }, + "remark-stringify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", + "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "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=" + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "srcset": { + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "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=" + }, + "requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", - "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "requires": { - "array-uniq": "1.0.3", - "number-is-nan": "1.0.1" + "path-parse": "^1.0.6" } }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "resolve-from": "^3.0.0" } }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "requires": { - "figgy-pudding": "3.5.1" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, - "stack-utils": { + "responselike": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" - }, - "stackframe": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", - "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" - }, - "state-toggle": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", - "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "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.6" - } - } + "lowercase-keys": "^1.0.0" } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - } + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "retext-english": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.2.tgz", + "integrity": "sha512-iWffdWUvJngqaRlE570SaYRgQbn4/QVBfGa/XseEBuBazymnyW24o37oLPY0vm+PJdLmDghnjZX0UbkZSZF0Cg==", "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "1.0.2", - "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.2" - } - }, - "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.1" - } - } + "parse-english": "^4.0.0", + "unherit": "^1.0.4" } }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" }, - "string-similarity": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", - "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==", + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "requires": { - "lodash.every": "4.6.0", - "lodash.flattendeep": "4.4.0", - "lodash.foreach": "4.5.0", - "lodash.map": "4.6.0", - "lodash.maxby": "4.6.0" + "glob": "^7.1.3" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "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=" - }, - "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" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "character-entities-html4": "1.1.2", - "character-entities-legacy": "1.1.2", - "is-alphanumerical": "1.0.2", - "is-hexadecimal": "1.0.2" + "is-promise": "^2.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=", + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "requires": { - "ansi-regex": "2.1.1" + "aproba": "^1.1.1" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" }, - "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "requires": { - "loader-utils": "1.2.3", - "schema-utils": "0.4.7" + "rx-lite": "*" } }, - "style-to-object": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.2.tgz", - "integrity": "sha512-GcbtvfsqyKmIPpHeOHZ5Rmwsx2MDJct4W9apmTGcbPTbpA2FcgTFl2Z43Hm4Qb61MWGPNK8Chki7ITiY7lLOow==", + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "requires": { - "css": "2.2.4" + "tslib": "^1.9.0" } }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "browserslist": "4.5.4", - "postcss": "7.0.14", - "postcss-selector-parser": "3.1.1" - }, - "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "requires": { - "caniuse-lite": "1.0.30000957", - "electron-to-chromium": "1.3.124", - "node-releases": "1.1.13" - } - }, - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "requires": { - "dot-prop": "4.2.0", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - } + "ret": "~0.1.10" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "svgo": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.1.tgz", - "integrity": "sha512-Y1+LyT4/y1ms4/0yxPMSlvx6dIbgklE9w8CIOnfeoFGB74MEkq8inSfEr6NhocTaFbyYp0a1dvNgRKGRmEBlzA==", + "sanitize-html": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.0.tgz", + "integrity": "sha512-BpxXkBoAG+uKCHjoXFmox6kCSYpnulABoGcZ/R3QyY9ndXbIM5S94eOr1IqnzTG8TnbmXaxWoDDzKC5eJv7fEQ==", "requires": { - "chalk": "2.4.2", - "coa": "2.0.2", - "css-select": "2.0.2", - "css-select-base-adapter": "0.1.1", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "1.1.0", - "csso": "3.5.1", - "js-yaml": "3.13.1", - "mkdirp": "0.5.1", - "object.values": "1.1.0", - "sax": "1.2.4", - "stable": "0.1.8", - "unquote": "1.1.1", - "util.promisify": "1.0.0" + "chalk": "^2.4.1", + "htmlparser2": "^3.10.0", + "lodash.clonedeep": "^4.5.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.mergewith": "^4.6.1", + "postcss": "^7.0.5", + "srcset": "^1.0.0", + "xtend": "^4.0.1" }, "dependencies": { "ansi-styles": { @@ -13512,7 +11654,7 @@ "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.1" + "color-convert": "^1.9.0" } }, "chalk": { @@ -13520,37 +11662,9 @@ "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.5.0" - } - }, - "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.3", - "domutils": "1.7.0", - "nth-check": "1.0.2" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "1.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "supports-color": { @@ -13558,2032 +11672,2220 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" - } - } - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, - "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", - "requires": { - "ajv": "6.10.0", - "lodash": "4.17.11", - "slice-ansi": "2.1.0", - "string-width": "3.1.0" - }, - "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==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "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.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.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" + "has-flag": "^3.0.0" } } } }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==" + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { - "execa": "0.7.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", "requires": { - "commander": "2.20.0", - "source-map": "0.6.1", - "source-map-support": "0.5.11" - }, - "dependencies": { - "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.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", - "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" - } - } + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" } }, - "terser-webpack-plugin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", - "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "scroll-behavior": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/scroll-behavior/-/scroll-behavior-0.9.10.tgz", + "integrity": "sha512-JVJQkBkqMLEM4ATtbHTKare97zhz/qlla9mNttFYY/bcpyOb4BuBGEQ/N9AQWXvshzf6zo9jP60TlphnJ4YPoQ==", "requires": { - "cacache": "11.3.2", - "find-cache-dir": "2.1.0", - "schema-utils": "1.0.0", - "serialize-javascript": "1.6.1", - "source-map": "0.6.1", - "terser": "3.17.0", - "webpack-sources": "1.3.0", - "worker-farm": "1.6.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "6.10.0", - "ajv-errors": "1.0.1", - "ajv-keywords": "3.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "dom-helpers": "^3.2.1", + "invariant": "^2.2.2" } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" }, "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "1.0.2", - "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.2" - } - }, - "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.1" - } + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==" + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", "requires": { - "setimmediate": "1.0.5" + "node-forge": "0.7.5" } }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, - "tiny-emitter": { + "semver-diff": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "optional": true - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "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.2.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "semver": "^5.0.3" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "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" - } + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, - "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" - } + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, - "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=", + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "kind-of": "3.2.2" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" } } }, - "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", - "requires": { - "hoek": "4.2.1" - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "psl": "1.1.31", - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, - "trim-lines": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.1.tgz", - "integrity": "sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg==" + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "trim-newlines": { + "set-value": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, - "trim-trailing-lines": { + "setprototypeof": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", - "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==" - }, - "trough": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.3.tgz", - "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, - "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" - } - }, - "ts-invariant": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.2.tgz", - "integrity": "sha512-QsY8BCaRnHiB5T6iE4DPlJMAKEG3gzMiUco9FEt1jUXQf0XP6zi0idT0i0rMTu8A326JqNSDsmlkA9dRSh1TRg==", + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { - "tslib": "1.9.3" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "ts-pnp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.0.1.tgz", - "integrity": "sha512-Zzg9XH0anaqhNSlDRibNC8Kp+B9KNM0uRIpLpGkGyrgRIttA7zZBhotTSEoEyuDrz3QW2LGtu2dxuk34HzIGnQ==" - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "shallow-compare": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz", + "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + "shallowequal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", + "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "safe-buffer": "5.1.1" + "shebang-regex": "^1.0.0" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "requires": { - "prelude-ls": "1.1.2" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.22" - } + "sift": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-5.1.0.tgz", + "integrity": "sha1-G78t+w63HlbEzH+1Z/vRNRtlAV4=" }, - "type-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz", - "integrity": "sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI=" + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=" }, - "typography": { - "version": "0.16.19", - "resolved": "https://registry.npmjs.org/typography/-/typography-0.16.19.tgz", - "integrity": "sha512-zfsyjPPB1RaK8TzU3REta6EGDZa++YQ6g/CWw7hy/8xQK1qyzFWisMIw5J+Yg1KyiVgcchmxlgMcMA6JAJ9oew==", + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { - "compass-vertical-rhythm": "1.4.5", - "decamelize": "1.2.0", - "gray-percentage": "2.0.0", - "lodash": "4.17.4", - "modularscale": "1.0.2", - "object-assign": "4.1.1", - "typography-normalize": "0.16.19" + "is-arrayish": "^0.3.1" }, "dependencies": { - "compass-vertical-rhythm": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/compass-vertical-rhythm/-/compass-vertical-rhythm-1.4.5.tgz", - "integrity": "sha512-bJo3IYX7xmmZCDYjrT2XolaiNjGZ4E2JvUGxpdU0ecbH4ZLK786wvc8aHKVrGrKct9JlkmJbUi8YLrQWvOc+uA==", - "requires": { - "convert-css-length": "1.0.1", - "object-assign": "4.1.1", - "parse-unit": "1.0.1" - } - }, - "typography-normalize": { - "version": "0.16.19", - "resolved": "https://registry.npmjs.org/typography-normalize/-/typography-normalize-0.16.19.tgz", - "integrity": "sha512-vtnSv/uGBZVbd4e/ZhZB9HKBgKKlWQUXw74+ADIHHxzKp27CEf8PSR8TX1zF2qSyQ9/qMdqLwXYz8yRQFq9JLQ==" + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" } } }, - "typography-theme-github": { - "version": "0.16.19", - "resolved": "https://registry.npmjs.org/typography-theme-github/-/typography-theme-github-0.16.19.tgz", - "integrity": "sha512-kDfFjbeh2JW3buPub1JUA39AIKQrZhMuEeqJo6P+9c9JOEMLUBPvcHGrNd+wtAuZlVehPbqG6bcW6KAANHrsGw==", - "requires": { - "gray-percentage": "2.0.0" - } - }, - "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" - }, - "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=" - }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "requires": { - "sprintf-js": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "unherit": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", - "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", - "requires": { - "inherits": "2.0.3", - "xtend": "4.0.1" - } + "sisteransi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", + "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==" }, - "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==" + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, - "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==", + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.4", - "unicode-property-aliases-ecmascript": "1.0.5" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + } } }, - "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" - }, - "unified": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", - "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "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": { - "bail": "1.0.3", - "extend": "3.0.2", - "is-plain-obj": "1.1.0", - "trough": "1.0.3", - "vfile": "2.3.0", - "x-is-string": "0.1.0" + "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" + } + } } }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "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": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "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": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "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": { - "unique-slug": "2.0.1" + "kind-of": "^3.2.0" } }, - "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "socket.io": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", + "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", "requires": { - "imurmurhash": "0.1.4" + "debug": "~4.1.0", + "engine.io": "~3.3.1", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.2.0", + "socket.io-parser": "~3.3.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.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } } }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + }, + "socket.io-client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", "requires": { - "crypto-random-string": "1.0.0" + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "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" + } + } } }, - "unist-builder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.3.tgz", - "integrity": "sha512-/KB8GEaoeHRyIqClL+Kam+Y5NWJ6yEiPsAfv1M+O1p+aKGgjR89WwoEHKTyOj17L6kAlqtKpAgv2nWvdbQDEig==", + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", "requires": { - "object-assign": "4.1.1" + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "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" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } } }, - "unist-util-generated": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.3.tgz", - "integrity": "sha512-qlPeDqnQnd84KIqwphzOR+l02cxjDzvEYEBl84EjmKRrX4eUmjyAo8xJv1SCDhJqNjyHRnBMZWNKAiBtXE6hBg==" - }, - "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" - }, - "unist-util-modify-children": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.3.tgz", - "integrity": "sha512-Aw3Us+NPrJGYWyLhcaqYzgxd/pryIanDNHVVvwdtTEEQ3Yfa/+sjnT2EeAAHbtTMAaYEdPW3XN6jxbzVWAo/BQ==", + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", "requires": { - "array-iterate": "1.1.2" + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + } } }, - "unist-util-position": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.2.tgz", - "integrity": "sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g==" - }, - "unist-util-remove-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", - "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "requires": { - "unist-util-visit": "1.4.0" + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" } }, - "unist-util-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-1.5.0.tgz", - "integrity": "sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=", + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "requires": { - "css-selector-parser": "1.3.0", - "debug": "2.6.9", - "nth-check": "1.0.1" + "is-plain-obj": "^1.0.0" } }, - "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, - "unist-util-visit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", - "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "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.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "requires": { - "unist-util-visit-parents": "2.0.1" + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, - "unist-util-visit-children": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.2.tgz", - "integrity": "sha512-q4t6aprUcSQ2/+xlswuh2wUKwUUuMmDjSkfwkMjeVwCXc8NqX8g0FSmNf68CznCmbkrsOPDUR0wj14bCFXXqbA==" - }, - "unist-util-visit-parents": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", - "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "requires": { - "unist-util-is": "2.1.2" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { - "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + "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=" + }, + "space-separated-tokens": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz", + "integrity": "sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA==", + "requires": { + "trim": "0.0.1" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "^1.0.2" + } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" }, "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.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" - } - } + "ms": "^2.1.1" } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "requires": { - "boxen": "1.3.0", - "chalk": "2.4.2", - "configstore": "3.1.2", - "import-lazy": "2.1.0", - "is-ci": "1.2.1", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" }, "dependencies": { - "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==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "color-convert": "1.9.1" + "ms": "^2.1.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "readable-stream": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", + "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "requires": { - "has-flag": "3.0.0" + "safe-buffer": "~5.1.0" } } } }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "2.1.1" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "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": { - "loader-utils": "1.2.3", - "mime": "2.4.1", - "schema-utils": "1.0.0" + "extend-shallow": "^3.0.0" }, "dependencies": { - "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + "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" + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "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": { - "ajv": "6.10.0", - "ajv-errors": "1.0.1", - "ajv-keywords": "3.4.0" + "is-plain-object": "^2.0.4" } } } }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", - "requires": { - "querystringify": "2.1.1", - "requires-port": "1.0.0" - } + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "url-parse-lax": { + "srcset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, - "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": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", + "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", "requires": { - "inherits": "2.0.3" + "array-uniq": "^1.0.2", + "number-is-nan": "^1.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "requires": { - "define-properties": "1.1.3", - "object.getownpropertydescriptors": "2.0.3" + "figgy-pudding": "^3.5.1" } }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" }, - "v8-compile-cache": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", - "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==" + "stackframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", + "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" }, - "valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + "state-toggle": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", + "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==" }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "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" + } + } } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, - "vfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", - "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "requires": { - "is-buffer": "1.1.6", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "1.1.2", - "vfile-message": "1.1.1" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, - "vfile-location": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.4.tgz", - "integrity": "sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==" - }, - "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "requires": { - "unist-util-stringify-position": "1.1.2" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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" + } + }, + "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" + } + } } }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "optional": true, "requires": { - "indexof": "0.0.1" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "optional": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "string-similarity": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", + "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==", "requires": { - "loose-envify": "1.3.1" + "lodash.every": "^4.6.0", + "lodash.flattendeep": "^4.4.0", + "lodash.foreach": "^4.5.0", + "lodash.map": "^4.6.0", + "lodash.maxby": "^4.6.0" } }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "chokidar": "2.1.5", - "graceful-fs": "4.1.11", - "neo-async": "2.6.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { - "anymatch": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "3.1.10", - "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.1.0" - } - } - } + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "arr-diff": { + "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } - } - }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.1", - "normalize-path": "3.0.0", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.2" + "ansi-regex": "^3.0.0" } - }, - "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.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.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=" + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + } + }, + "style-to-object": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.2.tgz", + "integrity": "sha512-GcbtvfsqyKmIPpHeOHZ5Rmwsx2MDJct4W9apmTGcbPTbpA2FcgTFl2Z43Hm4Qb61MWGPNK8Chki7ITiY7lLOow==", + "requires": { + "css": "2.2.4" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", + "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", + "requires": { + "caniuse-lite": "^1.0.30000967", + "electron-to-chromium": "^1.3.133", + "node-releases": "^1.1.19" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "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" - } - } + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "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" + } + }, + "svgo": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz", + "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==", + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.28", + "css-url-regex": "^1.1.0", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.2" - } - }, - "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.1" - } - } + "dom-serializer": "0", + "domelementtype": "1" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.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.1" - } - } + "boolbase": "~1.0.0" } + } + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "table": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", + "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "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==" }, - "glob-parent": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "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.1" - } - } + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "is-accessor-descriptor": { + "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" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + } + }, + "terser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", + "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "terser-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.0.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "kind-of": "6.0.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "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" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "kind-of": "6.0.2" + "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" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "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" + } + } + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "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=" + }, + "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" + } + }, + "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" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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==", + "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-extglob": "2.1.1" + "is-plain-object": "^2.0.4" } - }, + } + } + }, + "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" + }, + "dependencies": { "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "^3.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + } + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "requires": { + "hoek": "6.x.x" + } + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "trim-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.1.tgz", + "integrity": "sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg==" + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "trim-trailing-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", + "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==" + }, + "trough": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.3.tgz", + "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==" + }, + "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" + } + }, + "ts-pnp": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.2.tgz", + "integrity": "sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA==" + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "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" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "type-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz", + "integrity": "sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typography": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography/-/typography-0.16.19.tgz", + "integrity": "sha512-zfsyjPPB1RaK8TzU3REta6EGDZa++YQ6g/CWw7hy/8xQK1qyzFWisMIw5J+Yg1KyiVgcchmxlgMcMA6JAJ9oew==", + "requires": { + "compass-vertical-rhythm": "^1.4.5", + "decamelize": "^1.2.0", + "gray-percentage": "^2.0.0", + "lodash": "^4.13.1", + "modularscale": "^1.0.2", + "object-assign": "^4.1.0", + "typography-normalize": "^0.16.19" + }, + "dependencies": { + "compass-vertical-rhythm": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/compass-vertical-rhythm/-/compass-vertical-rhythm-1.4.5.tgz", + "integrity": "sha512-bJo3IYX7xmmZCDYjrT2XolaiNjGZ4E2JvUGxpdU0ecbH4ZLK786wvc8aHKVrGrKct9JlkmJbUi8YLrQWvOc+uA==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "convert-css-length": "^1.0.1", + "object-assign": "^4.1.0", + "parse-unit": "^1.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==" - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "typography-normalize": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography-normalize/-/typography-normalize-0.16.19.tgz", + "integrity": "sha512-vtnSv/uGBZVbd4e/ZhZB9HKBgKKlWQUXw74+ADIHHxzKp27CEf8PSR8TX1zF2qSyQ9/qMdqLwXYz8yRQFq9JLQ==" + } + } + }, + "typography-theme-github": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography-theme-github/-/typography-theme-github-0.16.19.tgz", + "integrity": "sha512-kDfFjbeh2JW3buPub1JUA39AIKQrZhMuEeqJo6P+9c9JOEMLUBPvcHGrNd+wtAuZlVehPbqG6bcW6KAANHrsGw==", + "requires": { + "gray-percentage": "^2.0.0" + } + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + }, + "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=" + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "unherit": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", + "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", + "requires": { + "inherits": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "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==" + }, + "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==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + }, + "unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "requires": { - "graceful-fs": "4.1.11", - "micromatch": "3.1.10", - "readable-stream": "2.3.3" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "requires": { - "minimalistic-assert": "1.0.1" + "unique-slug": "^2.0.0" } }, - "web-namespaces": { + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unist-builder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.3.tgz", + "integrity": "sha512-/KB8GEaoeHRyIqClL+Kam+Y5NWJ6yEiPsAfv1M+O1p+aKGgjR89WwoEHKTyOj17L6kAlqtKpAgv2nWvdbQDEig==", + "requires": { + "object-assign": "^4.1.0" + } + }, + "unist-util-generated": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.3.tgz", + "integrity": "sha512-qlPeDqnQnd84KIqwphzOR+l02cxjDzvEYEBl84EjmKRrX4eUmjyAo8xJv1SCDhJqNjyHRnBMZWNKAiBtXE6hBg==" + }, + "unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + }, + "unist-util-modify-children": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.3.tgz", + "integrity": "sha512-Aw3Us+NPrJGYWyLhcaqYzgxd/pryIanDNHVVvwdtTEEQ3Yfa/+sjnT2EeAAHbtTMAaYEdPW3XN6jxbzVWAo/BQ==", + "requires": { + "array-iterate": "^1.0.0" + } + }, + "unist-util-position": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.2.tgz", + "integrity": "sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g==" + }, + "unist-util-remove-position": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.2.tgz", - "integrity": "sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg==" + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", + "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "requires": { + "unist-util-visit": "^1.1.0" + } }, - "webpack": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", - "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "unist-util-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-1.5.0.tgz", + "integrity": "sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=", "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "5.7.3", - "acorn-dynamic-import": "3.0.0", - "ajv": "6.10.0", - "ajv-keywords": "3.4.0", - "chrome-trace-event": "1.0.0", - "enhanced-resolve": "4.1.0", - "eslint-scope": "4.0.3", - "json-parse-better-errors": "1.0.2", - "loader-runner": "2.4.0", - "loader-utils": "1.2.3", - "memory-fs": "0.4.1", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "neo-async": "2.6.0", - "node-libs-browser": "2.2.0", - "schema-utils": "0.4.7", - "tapable": "1.1.1", - "terser-webpack-plugin": "1.2.3", - "watchpack": "1.6.0", - "webpack-sources": "1.3.0" + "css-selector-parser": "^1.1.0", + "debug": "^2.2.0", + "nth-check": "^1.0.1" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + }, + "unist-util-visit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", + "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-children": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.2.tgz", + "integrity": "sha512-q4t6aprUcSQ2/+xlswuh2wUKwUUuMmDjSkfwkMjeVwCXc8NqX8g0FSmNf68CznCmbkrsOPDUR0wj14bCFXXqbA==" + }, + "unist-util-visit-parents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", + "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "requires": { + "unist-util-is": "^2.1.2" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "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.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + } + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "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": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "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==", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "requires": { - "is-plain-object": "2.0.4" + "isarray": "1.0.0" } } } }, - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "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.2" - } - }, - "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.1" - } - } - } + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.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.1" - } - } + "string-width": "^2.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==", + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "kind-of": "6.0.2" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, - "is-data-descriptor": { + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "cli-boxes": { "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.2" - } + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "ci-info": "^1.5.0" } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "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=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "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": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "v8-compile-cache": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", + "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==" + }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==" + }, + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-location": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.4.tgz", + "integrity": "sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==" + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "web-namespaces": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.2.tgz", + "integrity": "sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg==" + }, + "webpack": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", + "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } } } }, "webpack-dev-middleware": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz", - "integrity": "sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", + "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", "requires": { - "memory-fs": "0.4.1", - "mime": "2.4.1", - "range-parser": "1.2.0", - "webpack-log": "2.0.0" + "memory-fs": "^0.4.1", + "mime": "^2.4.2", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" }, "dependencies": { "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==" } } }, "webpack-dev-server": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz", - "integrity": "sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.4.1.tgz", + "integrity": "sha512-CRqZQX2ryMtrg0r3TXQPpNh76eM1HD3Wmu6zDBxIKi/d2y+4aa28Ia8weNT0bfgWpY6Vs3Oq/K8+DjfbR+tWYw==", "requires": { "ansi-html": "0.0.7", - "bonjour": "3.5.0", - "chokidar": "2.1.5", - "compression": "1.7.4", - "connect-history-api-fallback": "1.6.0", - "debug": "4.1.1", - "del": "3.0.0", - "express": "4.16.4", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "2.0.0", - "internal-ip": "4.3.0", - "ip": "1.1.5", - "killable": "1.0.1", - "loglevel": "1.6.1", - "opn": "5.5.0", - "portfinder": "1.0.20", - "schema-utils": "1.0.0", - "selfsigned": "1.10.4", - "semver": "5.7.0", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "4.0.0", - "strip-ansi": "3.0.1", - "supports-color": "6.1.0", - "url": "0.11.0", - "webpack-dev-middleware": "3.6.2", - "webpack-log": "2.0.0", - "yargs": "12.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "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.10", - "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.1.0" - } - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "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.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "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.1" - } - } - } - }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.1", - "normalize-path": "3.0.0", - "path-is-absolute": "1.0.1", - "readdirp": "2.2.1", - "upath": "1.1.2" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.0", - "shebang-command": "1.2.0", - "which": "1.3.1" - } - }, - "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" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "requires": { - "xregexp": "4.0.0" - } - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "requires": { - "original": "1.0.2" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "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.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "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" - } - }, - "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.6" - } - }, - "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.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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "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.1.0" - } - }, - "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==" - } + "bonjour": "^3.5.0", + "chokidar": "^2.1.6", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.0", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.1", + "opn": "^5.5.0", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.0.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + }, + "dependencies": { + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "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==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "is-plain-object": "2.0.4" + "ansi-regex": "^3.0.0" } } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "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.2" - } - }, - "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.1" - } + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" } } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.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.1" - } - } + "ms": "^2.1.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "requires": { + "original": "^1.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "find-up": { @@ -15591,7 +13893,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "get-stream": { @@ -15599,26 +13901,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.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.2" - }, - "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.1" - } - } + "pump": "^3.0.0" } }, "invert-kv": { @@ -15626,79 +13909,33 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" }, - "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.2" - } - }, - "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.2" - } - }, - "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" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "is-path-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", + "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==" }, - "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==", + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "requires": { - "is-extglob": "2.1.1" + "is-path-inside": "^2.1.0" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } + "path-is-inside": "^1.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "requires": { - "invert-kv": "2.0.0" + "invert-kv": "^2.0.0" } }, "locate-path": { @@ -15706,8 +13943,8 @@ "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" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "mem": { @@ -15715,29 +13952,9 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "requires": { - "map-age-cleaner": "0.1.3", - "mimic-fn": "2.1.0", - "p-is-promise": "2.0.0" - } - }, - "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.2", - "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.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "mimic-fn": { @@ -15745,6 +13962,11 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -15755,9 +13977,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "requires": { - "execa": "1.0.0", - "lcid": "2.0.0", - "mem": "4.3.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, "p-limit": { @@ -15765,7 +13987,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -15773,50 +13995,50 @@ "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.2.0" + "p-limit": "^2.0.0" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, "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==" }, - "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.3.3" - } + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "6.10.0", - "ajv-errors": "1.0.1", - "ajv-keywords": "3.4.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", + "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" }, "sockjs-client": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "requires": { - "debug": "3.2.6", - "eventsource": "1.0.7", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.4.4" + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" }, "dependencies": { "debug": { @@ -15824,13 +14046,8 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.1" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -15839,47 +14056,48 @@ "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" + "has-flag": "^3.0.0" } }, "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "requires": { - "cliui": "4.1.0", - "decamelize": "2.0.0", - "find-up": "3.0.0", - "get-caller-file": "1.0.3", - "os-locale": "3.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "10.1.0" + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "requires": { - "camelcase": "4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "webpack-hot-middleware": { - "version": "2.24.3", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.24.3.tgz", - "integrity": "sha512-pPlmcdoR2Fn6UhYjAhp1g/IJy1Yc9hD+T6O9mjRcWV2pFbBjIFoJXhP0CoD0xPOhWJuWXuZXGBga9ybbOdzXpg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", + "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", "requires": { "ansi-html": "0.0.7", - "html-entities": "1.2.1", - "querystring": "0.2.0", - "strip-ansi": "3.0.1" + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" } }, "webpack-log": { @@ -15887,8 +14105,8 @@ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", "requires": { - "ansi-colors": "3.2.4", - "uuid": "3.3.2" + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" } }, "webpack-merge": { @@ -15896,14 +14114,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", "requires": { - "lodash": "4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } + "lodash": "^4.17.5" } }, "webpack-sources": { @@ -15911,8 +14122,8 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", "requires": { - "source-list-map": "2.0.1", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -15932,8 +14143,8 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "requires": { - "http-parser-js": "0.5.0", - "websocket-extensions": "0.1.3" + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { @@ -15951,7 +14162,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -15964,7 +14175,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "with-open-file": { @@ -15972,9 +14183,9 @@ "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.6.tgz", "integrity": "sha512-SQS05JekbtwQSgCYlBsZn/+m2gpn4zWsqpCYIrCHva0+ojXcnmUEPsBN6Ipoz3vmY/81k5PvYEWSxER2g4BTqA==", "requires": { - "p-finally": "1.0.0", - "p-try": "2.2.0", - "pify": "4.0.1" + "p-finally": "^1.0.0", + "p-try": "^2.1.0", + "pify": "^4.0.1" }, "dependencies": { "p-try": { @@ -15995,11 +14206,11 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "requires": { - "errno": "0.1.7" + "errno": "~0.1.7" } }, "wrap-ansi": { @@ -16007,8 +14218,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -16016,9 +14227,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -16033,17 +14244,17 @@ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "ws": { @@ -16051,7 +14262,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "requires": { - "async-limiter": "1.0.0" + "async-limiter": "~1.0.0" } }, "x-is-string": { @@ -16069,15 +14280,10 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==" - }, "xstate": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.4.0.tgz", - "integrity": "sha512-MS638X5zCzEAZA/UOW9fUHSg4xAGfiHFkGMjtU5j/gmb1PtGBAVImv0iWqRZNwVqTALxxtQz655BVyNSNz2ThA==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.6.0.tgz", + "integrity": "sha512-1bPy5an0QLUX3GiqtJB68VgBrLIotxZwpItDBO3vbakgzEY0D8UG1hsbM4MJM3BN1Y43pnac3ChmPL5s+Bca0A==" }, "xtend": { "version": "4.0.1", @@ -16099,7 +14305,7 @@ "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.5.0.tgz", "integrity": "sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A==", "requires": { - "js-yaml": "3.13.1" + "js-yaml": "^3.5.2" } }, "yargs": { @@ -16107,19 +14313,19 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.3", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" } }, "yargs-parser": { @@ -16127,7 +14333,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } }, "yeast": { @@ -16135,30 +14341,36 @@ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" }, + "yoga-layout-prebuilt": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.3.tgz", + "integrity": "sha512-9SNQpwuEh2NucU83i2KMZnONVudZ86YNcFk9tq74YaqrQfgJWO3yB9uzH1tAg8iqh5c9F5j0wuyJ2z72wcum2w==", + "optional": true + }, "yurnalist": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-1.0.5.tgz", "integrity": "sha512-EuLjqX3Q15iVM0UtZa5Ju536uRmklKd2kKhdE5D5fIh8RZmh+pJ8c6wj2oGo0TA+T/Ii2o79cIHCTMfciW8jlA==", "requires": { - "babel-runtime": "6.26.0", - "chalk": "2.4.2", - "cli-table3": "0.5.1", - "debug": "4.1.1", - "deep-equal": "1.0.1", - "detect-indent": "5.0.0", - "inquirer": "6.2.2", - "invariant": "2.2.2", - "is-builtin-module": "3.0.0", - "is-ci": "2.0.0", - "leven": "2.1.0", - "loud-rejection": "1.6.0", - "node-emoji": "1.10.0", - "object-path": "0.11.4", - "read": "1.0.7", - "rimraf": "2.6.3", - "semver": "5.4.1", - "strip-ansi": "5.2.0", - "strip-bom": "3.0.0" + "babel-runtime": "^6.26.0", + "chalk": "^2.1.0", + "cli-table3": "^0.5.1", + "debug": "^4.1.0", + "deep-equal": "^1.0.1", + "detect-indent": "^5.0.0", + "inquirer": "^6.2.0", + "invariant": "^2.2.0", + "is-builtin-module": "^3.0.0", + "is-ci": "^2.0.0", + "leven": "^2.0.0", + "loud-rejection": "^1.2.0", + "node-emoji": "^1.6.1", + "object-path": "^0.11.2", + "read": "^1.0.7", + "rimraf": "^2.5.0", + "semver": "^5.1.0", + "strip-ansi": "^5.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -16166,56 +14378,25 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "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.1" - } - }, "builtin-modules": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz", - "integrity": "sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==" - }, - "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.5.0" - } + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==" }, "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": "^2.1.1" } }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - }, "is-builtin-module": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.0.0.tgz", "integrity": "sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw==", "requires": { - "builtin-modules": "3.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "2.0.0" + "builtin-modules": "^3.0.0" } }, "ms": { @@ -16228,33 +14409,11 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.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" + "ansi-regex": "^4.1.0" } } } }, - "zen-observable": { - "version": "0.8.13", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.13.tgz", - "integrity": "sha512-fa+6aDUVvavYsefZw0zaZ/v3ckEtMgCFi30sn91SEZea4y/6jQp05E3omjkX91zV6RVdn15fqnFZ6RKjRGbp2g==" - }, - "zen-observable-ts": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.18.tgz", - "integrity": "sha512-q7d05s75Rn1j39U5Oapg3HI2wzriVwERVo4N7uFGpIYuHB9ff02P/E92P9B8T7QVC93jCMHpbXH7X0eVR5LA7A==", - "requires": { - "tslib": "1.9.3", - "zen-observable": "0.8.13" - } - }, "zwitch": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.3.tgz", diff --git a/www/package.json b/www/package.json index fb432cd7f..4989c375f 100644 --- a/www/package.json +++ b/www/package.json @@ -6,7 +6,7 @@ "author": "Niklas von Hertzen", "dependencies": { "cpy-cli": "^2.0.0", - "gatsby": "^2.3.14", + "gatsby": "^2.7.1", "gatsby-link": "^2.0.16", "gatsby-plugin-catch-links": "^2.0.13", "gatsby-plugin-glamor": "^2.0.9", diff --git a/www/src/preview.ts b/www/src/preview.ts index 1e3447ed8..eb22f195f 100644 --- a/www/src/preview.ts +++ b/www/src/preview.ts @@ -1,4 +1,4 @@ -import * as results from './results.json' ; +import * as results from './results.json'; const testList: TestList = results; const testSelector: HTMLSelectElement | null = document.querySelector('#test_selector'); @@ -12,10 +12,10 @@ interface Test { platform: { name: string; version: string; - } - "devicePixelRatio": number; - "id": string; - "screenshot": string; + }; + devicePixelRatio: number; + id: string; + screenshot: string; } type TestList = {[key: string]: Test[]}; @@ -76,7 +76,10 @@ window.addEventListener('keydown', e => { browserSelector.dispatchEvent(event); e.preventDefault(); } else if (e.keyCode === RIGHT_ARROW) { - browserSelector.selectedIndex = Math.min(browserSelector.children.length - 1, browserSelector.selectedIndex + 1); + browserSelector.selectedIndex = Math.min( + browserSelector.children.length - 1, + browserSelector.selectedIndex + 1 + ); const event = new Event('change'); browserSelector.dispatchEvent(event); e.preventDefault(); @@ -85,21 +88,29 @@ window.addEventListener('keydown', e => { }); if (testSelector && browserSelector) { - testSelector.addEventListener('change', () => { - selectTest(testSelector.value); - }, false); + testSelector.addEventListener( + 'change', + () => { + selectTest(testSelector.value); + }, + false + ); - browserSelector.addEventListener('change', () => { - testList[testSelector.value].some(browser => { - if (browser.id === browserSelector.value) { - if (browser) { - onBrowserChange(browser); + browserSelector.addEventListener( + 'change', + () => { + testList[testSelector.value].some(browser => { + if (browser.id === browserSelector.value) { + if (browser) { + onBrowserChange(browser); + } + return true; } - return true; - } - return false; - }); - }, false); + return false; + }); + }, + false + ); const tests: string[] = Object.keys(testList); tests.forEach((testName, i) => { From 5f31b741778e805da1a3db42548e49a09714067d Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 25 May 2019 21:53:50 -0700 Subject: [PATCH 232/377] feat: box-shadow rendering (#1848) * feat: box-shadow rendering * test: add box-shadow test --- src/css/index.ts | 3 + src/css/property-descriptors/box-shadow.ts | 59 +++++++++++ src/render/bezier-curve.ts | 9 ++ src/render/canvas/canvas-renderer.ts | 58 +++++++++- src/render/path.ts | 17 +++ src/render/vector.ts | 4 + tests/reftests/background/box-shadow.html | 118 +++++++++++++++++++++ 7 files changed, 264 insertions(+), 4 deletions(-) create mode 100644 src/css/property-descriptors/box-shadow.ts create mode 100644 tests/reftests/background/box-shadow.html diff --git a/src/css/index.ts b/src/css/index.ts index 27393d0d0..46db9a775 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -72,6 +72,7 @@ import {content} from './property-descriptors/content'; import {counterIncrement} from './property-descriptors/counter-increment'; import {counterReset} from './property-descriptors/counter-reset'; import {quotes} from './property-descriptors/quotes'; +import {boxShadow} from './property-descriptors/box-shadow'; export class CSSParsedDeclaration { backgroundClip: ReturnType; @@ -97,6 +98,7 @@ export class CSSParsedDeclaration { borderRightWidth: ReturnType; borderBottomWidth: ReturnType; borderLeftWidth: ReturnType; + boxShadow: ReturnType; color: Color; display: ReturnType; float: ReturnType; @@ -158,6 +160,7 @@ export class CSSParsedDeclaration { this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth); this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth); this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth); + this.boxShadow = parse(boxShadow, declaration.boxShadow); this.color = parse(color, declaration.color); this.display = parse(display, declaration.display); this.float = parse(float, declaration.cssFloat); diff --git a/src/css/property-descriptors/box-shadow.ts b/src/css/property-descriptors/box-shadow.ts new file mode 100644 index 000000000..8a4253685 --- /dev/null +++ b/src/css/property-descriptors/box-shadow.ts @@ -0,0 +1,59 @@ +import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor'; +import {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser'; +import {ZERO_LENGTH} from '../types/length-percentage'; +import {color, Color} from '../types/color'; +import {isLength, Length} from '../types/length'; + +export type BoxShadow = BoxShadowItem[]; +interface BoxShadowItem { + inset: boolean; + color: Color; + offsetX: Length; + offsetY: Length; + blur: Length; + spread: Length; +} + +export const boxShadow: IPropertyListDescriptor = { + name: 'box-shadow', + initialValue: 'none', + type: PropertyDescriptorParsingType.LIST, + prefix: false, + parse: (tokens: CSSValue[]): BoxShadow => { + if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) { + return []; + } + + return parseFunctionArgs(tokens).map((values: CSSValue[]) => { + const shadow: BoxShadowItem = { + color: 0x000000ff, + offsetX: ZERO_LENGTH, + offsetY: ZERO_LENGTH, + blur: ZERO_LENGTH, + spread: ZERO_LENGTH, + inset: false + }; + let c = 0; + for (let i = 0; i < values.length; i++) { + const token = values[i]; + if (isIdentWithValue(token, 'inset')) { + shadow.inset = true; + } else if (isLength(token)) { + if (c === 0) { + shadow.offsetX = token; + } else if (c === 1) { + shadow.offsetY = token; + } else if (c === 2) { + shadow.blur = token; + } else { + shadow.spread = token; + } + c++; + } else { + shadow.color = color.parse(token); + } + } + return shadow; + }); + } +}; diff --git a/src/render/bezier-curve.ts b/src/render/bezier-curve.ts index c6bebd030..13dbc6b50 100644 --- a/src/render/bezier-curve.ts +++ b/src/render/bezier-curve.ts @@ -30,6 +30,15 @@ export class BezierCurve implements IPath { return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end); } + add(deltaX: number, deltaY: number): BezierCurve { + return new BezierCurve( + this.start.add(deltaX, deltaY), + this.startControl.add(deltaX, deltaY), + this.endControl.add(deltaX, deltaY), + this.end.add(deltaX, deltaY) + ); + } + reverse(): BezierCurve { return new BezierCurve(this.end, this.endControl, this.startControl, this.start); } diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 05c8c5ab1..c9067bf15 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -5,7 +5,7 @@ import {ElementContainer} from '../../dom/element-container'; import {BORDER_STYLE} from '../../css/property-descriptors/border-style'; import {CSSParsedDeclaration} from '../../css/index'; import {TextContainer} from '../../dom/text-container'; -import {Path} from '../path'; +import {Path, transformPath} from '../path'; import {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip'; import {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves'; import {isBezierCurve} from '../bezier-curve'; @@ -55,6 +55,8 @@ export interface RenderOptions { cache: Cache; } +const MASK_OFFSET = 10000; + export class CanvasRenderer { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; @@ -471,9 +473,24 @@ export class CanvasRenderer { } } + mask(paths: Path[]) { + this.ctx.beginPath(); + this.ctx.moveTo(0, 0); + this.ctx.lineTo(this.canvas.width, 0); + this.ctx.lineTo(this.canvas.width, this.canvas.height); + this.ctx.lineTo(0, this.canvas.height); + this.ctx.lineTo(0, 0); + this.formatPath(paths.slice(0).reverse()); + this.ctx.closePath(); + } + path(paths: Path[]) { this.ctx.beginPath(); + this.formatPath(paths); + this.ctx.closePath(); + } + formatPath(paths: Path[]) { paths.forEach((point, index) => { const start: Vector = isBezierCurve(point) ? point.start : point; if (index === 0) { @@ -493,8 +510,6 @@ export class CanvasRenderer { ); } }); - - this.ctx.closePath(); } renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number) { @@ -626,7 +641,7 @@ export class CanvasRenderer { paint.curves ); - if (hasBackground) { + if (hasBackground || styles.boxShadow.length) { this.ctx.save(); this.path(backgroundPaintingArea); this.ctx.clip(); @@ -639,6 +654,41 @@ export class CanvasRenderer { await this.renderBackgroundImage(paint.container); this.ctx.restore(); + + styles.boxShadow + .slice(0) + .reverse() + .forEach(shadow => { + this.ctx.save(); + const borderBoxArea = calculateBorderBoxPath(paint.curves); + const maskOffset = shadow.inset ? 0 : MASK_OFFSET; + const shadowPaintingArea = transformPath( + borderBoxArea, + -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, + (shadow.inset ? 1 : -1) * shadow.spread.number, + shadow.spread.number * (shadow.inset ? -2 : 2), + shadow.spread.number * (shadow.inset ? -2 : 2) + ); + + if (shadow.inset) { + this.path(borderBoxArea); + this.ctx.clip(); + this.mask(shadowPaintingArea); + } else { + this.mask(borderBoxArea); + this.ctx.clip(); + this.path(shadowPaintingArea); + } + + this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset; + this.ctx.shadowOffsetY = shadow.offsetY.number; + this.ctx.shadowColor = asString(shadow.color); + this.ctx.shadowBlur = shadow.blur.number; + this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)'; + + this.ctx.fill(); + this.ctx.restore(); + }); } let side = 0; diff --git a/src/render/path.ts b/src/render/path.ts index 61c8672bb..9174078d6 100644 --- a/src/render/path.ts +++ b/src/render/path.ts @@ -7,6 +7,7 @@ export enum PathType { export interface IPath { type: PathType; + add(deltaX: number, deltaY: number): IPath; } export const equalPath = (a: Path[], b: Path[]): boolean => { @@ -17,4 +18,20 @@ export const equalPath = (a: Path[], b: Path[]): boolean => { return false; }; +export const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => { + return path.map((point, index) => { + switch (index) { + case 0: + return point.add(deltaX, deltaY); + case 1: + return point.add(deltaX + deltaW, deltaY); + case 2: + return point.add(deltaX + deltaW, deltaY + deltaH); + case 3: + return point.add(deltaX, deltaY + deltaH); + } + return point; + }); +}; + export type Path = Vector | BezierCurve; diff --git a/src/render/vector.ts b/src/render/vector.ts index 0a08ee044..a55ec3476 100644 --- a/src/render/vector.ts +++ b/src/render/vector.ts @@ -10,6 +10,10 @@ export class Vector implements IPath { this.x = x; this.y = y; } + + add(deltaX: number, deltaY: number): Vector { + return new Vector(this.x + deltaX, this.y + deltaY); + } } export const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR; diff --git a/tests/reftests/background/box-shadow.html b/tests/reftests/background/box-shadow.html new file mode 100644 index 000000000..98aec844d --- /dev/null +++ b/tests/reftests/background/box-shadow.html @@ -0,0 +1,118 @@ + + + + + box-shadow tests + + + + +
            0 0 0 0.5em;
            +
            0 0 1em;
            +
            1em 0.5em;
            +
            1em 0.5em 1em;
            +
            0 2em 1em -0.7em;
            +
            0.3em 0.3em lightgreen;
            +
            0.3em 0.3em 0 0.6em lightgreen;
            +
            0 2em 0 -0.9em lightgreen;
            +
            2em 1.5em 0 -0.7em lightgreen;
            +
            9em 1.2em 0 -0.6em lightgreen;
            +
            -27.3em 0 lightgreen;
            +
            0 2em 0 -1em lightgreen;
            +
            0 0 1em maroon;
            +
            0 0 1em 0.5em maroon;
            +
            0 0 1em 1em maroon;
            +
            -0.4em -0.4em 1em olive;
            +
            0.4em 0.4em 1em olive;
            +
            0.4em 0.4em 1em -0.2em olive;
            +
            0.4em 0.4em 1em 0.4em olive;
            +
            0 1.5em 0.5em -1em olive;
            +
            inset 0.2em 0.4em red, inset + -1em -0.7em red; +
            +
            inset 11em 0 red;
            +
            inset -1em 0 red;
            +
            inset 13em 0 3em + -3em orange,inset -3em 0 3em -3em blue; +
            +
            inset 11em 0 2em orange;
            +
            inset 0 0.3em red;
            +
            inset 0 -1.1em red;
            +
            inset 1em 0 1em -1em blue;
            +
            inset 0 0 0.5em blue;
            +
            inset 0 0 2em blue;
            +
            inset 0 2em 3em -1em green;
            +
            inset 0 2em 3em -2em green;
            +
            inset 0 2em 3em -3em green;
            +
            inset 0 0 1em khaki;
            +
            inset 0 0 1em khaki, inset 0 0 1em khaki, inset 0 0 1em khaki, inset 0 0 1em khaki; +
            +
            inset 0 0 0.5em 0.5em khaki;
            +
            /* seamless if <blur-radius> ≤ <spread-radius> */
            +
            inset 0 0 0.5em + 0.5em khaki; +
            +
            inset 0 0 2em 2em + khaki; +
            +
            0 0 0.5em 0.5em teal;
            +
            inset 0 0 0.5em 0.5em indigo, + 0 0 0.5em 0.5em indigo; +
            +
            inset 0 0 1em black, inset 0 0 1em black, + inset 0 0 1em black, inset 0 0 1em black; +
            +
            inset 0 0 0.7em 0.5em black; + /* should be very similar to above */ +
            +
            inset 0 2em 3em + -1.5em green, + inset 0 -2em 3em -2em blue; +
            +
            inset 1em 1em 2em -1em blue;
            +
            inset 1em 1em 2em + -1em blue, + inset -1em -1em 2em -1em red; +
            +
            + inset 0 2em 3em -2em white, + inset 0 -2em 3em -2.5em black; +
            +
            + inset 1em 1em 1em -1em white, + inset -1em -1em 1em -1em black; +
            +
            + inset -1em -1em 1em -1em black, + inset 1em 1em 1em -1em white; +
            +
            inset -0.3em -0.3em 0.6em rgba(0,0,0,0.5), + inset 0.3em 0.3em 0.6em rgba(256,256,256,0.7); +
            +
            inset 0.3em 0.3em 0.6em rgba(256,256,256,0.5), + inset -0.3em -0.3em 0.6em rgba(0,0,0,0.5); +
            +
            0.2em 0.2em 0.7em black, inset + 0 0 0.7em red; +
            + + + From 409674fba6f8038eb174b9c89360ef8b342971e9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 26 May 2019 14:08:56 -0700 Subject: [PATCH 233/377] fix: multi token overflow #1850 (#1851) --- src/css/index.ts | 9 ++++--- src/css/property-descriptors/overflow.ts | 33 +++++++++++++----------- src/render/stacking-context.ts | 4 +-- tests/reftests/overflow/overflow.html | 4 +++ 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/css/index.ts b/src/css/index.ts index 46db9a775..b7fe5fa73 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -40,7 +40,7 @@ import {listStyleImage} from './property-descriptors/list-style-image'; import {listStylePosition} from './property-descriptors/list-style-position'; import {listStyleType} from './property-descriptors/list-style-type'; import {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin'; -import {overflow} from './property-descriptors/overflow'; +import {overflow, OVERFLOW} from './property-descriptors/overflow'; import {overflowWrap} from './property-descriptors/overflow-wrap'; import {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding'; import {textAlign} from './property-descriptors/text-align'; @@ -118,7 +118,8 @@ export class CSSParsedDeclaration { marginBottom: CSSValue; marginLeft: CSSValue; opacity: ReturnType; - overflow: ReturnType; + overflowX: OVERFLOW; + overflowY: OVERFLOW; overflowWrap: ReturnType; paddingTop: LengthPercentage; paddingRight: LengthPercentage; @@ -180,7 +181,9 @@ export class CSSParsedDeclaration { this.marginBottom = parse(marginBottom, declaration.marginBottom); this.marginLeft = parse(marginLeft, declaration.marginLeft); this.opacity = parse(opacity, declaration.opacity); - this.overflow = parse(overflow, declaration.overflow); + const overflowTuple = parse(overflow, declaration.overflow); + this.overflowX = overflowTuple[0]; + this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]; this.overflowWrap = parse(overflowWrap, declaration.overflowWrap); this.paddingTop = parse(paddingTop, declaration.paddingTop); this.paddingRight = parse(paddingRight, declaration.paddingRight); diff --git a/src/css/property-descriptors/overflow.ts b/src/css/property-descriptors/overflow.ts index b5d1f29ee..5acb838ac 100644 --- a/src/css/property-descriptors/overflow.ts +++ b/src/css/property-descriptors/overflow.ts @@ -1,4 +1,5 @@ -import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {CSSValue, isIdentToken} from '../syntax/parser'; export enum OVERFLOW { VISIBLE = 0, HIDDEN = 1, @@ -6,22 +7,24 @@ export enum OVERFLOW { AUTO = 3 } -export const overflow: IPropertyIdentValueDescriptor = { +export const overflow: IPropertyListDescriptor = { name: 'overflow', initialValue: 'visible', prefix: false, - type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (overflow: string) => { - switch (overflow) { - case 'hidden': - return OVERFLOW.HIDDEN; - case 'scroll': - return OVERFLOW.SCROLL; - case 'auto': - return OVERFLOW.AUTO; - case 'visible': - default: - return OVERFLOW.VISIBLE; - } + type: PropertyDescriptorParsingType.LIST, + parse: (tokens: CSSValue[]): OVERFLOW[] => { + return tokens.filter(isIdentToken).map(overflow => { + switch (overflow.value) { + case 'hidden': + return OVERFLOW.HIDDEN; + case 'scroll': + return OVERFLOW.SCROLL; + case 'auto': + return OVERFLOW.AUTO; + case 'visible': + default: + return OVERFLOW.VISIBLE; + } + }); } }; diff --git a/src/render/stacking-context.ts b/src/render/stacking-context.ts index dd156d58c..713670977 100644 --- a/src/render/stacking-context.ts +++ b/src/render/stacking-context.ts @@ -48,7 +48,7 @@ export class ElementPaint { this.effects.push(new TransformEffect(offsetX, offsetY, matrix)); } - if (element.styles.overflow !== OVERFLOW.VISIBLE) { + if (element.styles.overflowX !== OVERFLOW.VISIBLE) { const borderBox = calculateBorderBoxPath(this.curves); const paddingBox = calculatePaddingBoxPath(this.curves); @@ -63,7 +63,7 @@ export class ElementPaint { getParentEffects(): IElementEffect[] { const effects = this.effects.slice(0); - if (this.container.styles.overflow !== OVERFLOW.VISIBLE) { + if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) { const borderBox = calculateBorderBoxPath(this.curves); const paddingBox = calculatePaddingBoxPath(this.curves); if (!equalPath(borderBox, paddingBox)) { diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index e924044d4..43618a56c 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -74,6 +74,10 @@ auto

            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.

            +
            + visible hidden +

            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.

            +

            Overflow: visible

            Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
            From 28dc05c4a3ae610a35ee84232ea04bd251d50591 Mon Sep 17 00:00:00 2001 From: CI Date: Wed, 29 May 2019 02:44:57 +0000 Subject: [PATCH 234/377] chore(release): 1.0.0-rc.2 --- CHANGELOG.md | 22 ++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcc284d97..88ccf6fee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0-rc.2](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2019-05-29) + + +### ci + +* refactor browser tests (#1804) ([a7d881019bfe1fd6404c341ca1c6fa69e0274ef5](https://github.com/niklasvh/html2canvas/commit/a7d881019bfe1fd6404c341ca1c6fa69e0274ef5)), closes [#1804](https://github.com/niklasvh/html2canvas/issues/1804) + +### docs + +* fix README documentation ([20a797cbeb21baca4ce5b9a0642a5959cdf94a51](https://github.com/niklasvh/html2canvas/commit/20a797cbeb21baca4ce5b9a0642a5959cdf94a51)) +* remove dead donation link (fix #1802) ([43058241b420a5dabe94b0a4e4f6534d16a75ec0](https://github.com/niklasvh/html2canvas/commit/43058241b420a5dabe94b0a4e4f6534d16a75ec0)), closes [#1802](https://github.com/niklasvh/html2canvas/issues/1802) + +### fix + +* multi token overflow #1850 (#1851) ([409674fba6f8038eb174b9c89360ef8b342971e9](https://github.com/niklasvh/html2canvas/commit/409674fba6f8038eb174b9c89360ef8b342971e9)), closes [#1850](https://github.com/niklasvh/html2canvas/issues/1850) [#1851](https://github.com/niklasvh/html2canvas/issues/1851) + +### test + +* include reftests previewer with docs website (#1799) ([cdc4ca8296570bf842e937c6fb7cc32a1ce2bc09](https://github.com/niklasvh/html2canvas/commit/cdc4ca8296570bf842e937c6fb7cc32a1ce2bc09)), closes [#1799](https://github.com/niklasvh/html2canvas/issues/1799) + + + # [1.0.0-rc.1](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.0...v1.0.0-rc.1) (2019-04-10) diff --git a/package-lock.json b/package-lock.json index 80b733b0e..0838abbfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index cc71a60ed..3c15b6272 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From cae44a6f0a6649bd8a7c4250a20792bb5c2e5b42 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 29 May 2019 21:11:50 -0700 Subject: [PATCH 235/377] fix: typescript options type definition (#1861) --- src/core/cache-storage.ts | 2 +- src/index.ts | 99 +++++++++++---------- src/render/canvas/canvas-renderer.ts | 9 +- src/render/canvas/foreignobject-renderer.ts | 6 +- 4 files changed, 62 insertions(+), 54 deletions(-) diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 01a38b8bb..3c6da82da 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -61,7 +61,7 @@ export class CacheStorage { } } -interface ResourceOptions { +export interface ResourceOptions { imageTimeout: number; useCORS: boolean; allowTaint: boolean; diff --git a/src/index.ts b/src/index.ts index ae14ea64a..b03322369 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,25 +4,22 @@ import {Parser} from './css/syntax/parser'; import {CloneOptions, DocumentCloner} from './dom/document-cloner'; import {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser'; import {Logger} from './core/logger'; -import {CacheStorage} from './core/cache-storage'; +import {CacheStorage, ResourceOptions} from './core/cache-storage'; import {CanvasRenderer, RenderOptions} from './render/canvas/canvas-renderer'; import {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer'; export type Options = CloneOptions & - RenderOptions & { - allowTaint: boolean; + RenderOptions & + ResourceOptions & { backgroundColor: string; foreignObjectRendering: boolean; - imageTimeout: number; logging: boolean; - proxy?: string; removeContainer?: boolean; - useCORS: boolean; }; const parseColor = (value: string): Color => color.parse(Parser.create(value).parseComponentValue()); -const html2canvas = (element: HTMLElement, options: Options): Promise => { +const html2canvas = (element: HTMLElement, options: Partial = {}): Promise => { return renderElement(element, options); }; @@ -30,7 +27,7 @@ export default html2canvas; CacheStorage.setContext(window); -const renderElement = async (element: HTMLElement, opts: Options): Promise => { +const renderElement = async (element: HTMLElement, opts: Partial): Promise => { const ownerDocument = element.ownerDocument; if (!ownerDocument) { @@ -43,50 +40,43 @@ const renderElement = async (element: HTMLElement, opts: Options): Promise Date: Wed, 29 May 2019 22:26:51 -0700 Subject: [PATCH 236/377] fix: stack exceeding for css tokenizer (#1862) * fix: stack exceeding for css tokenizer * fix: token string recursion --- src/css/syntax/tokenizer.ts | 39 ++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/css/syntax/tokenizer.ts b/src/css/syntax/tokenizer.ts index dda49851a..20491f773 100644 --- a/src/css/syntax/tokenizer.ts +++ b/src/css/syntax/tokenizer.ts @@ -316,7 +316,7 @@ export class Tokenizer { } write(chunk: string) { - this._value.push(...toCodePoints(chunk)); + this._value = this._value.concat(toCodePoints(chunk)); } read(): CSSToken[] { @@ -370,7 +370,6 @@ export class Tokenizer { return this.consumeNumericToken(); } break; - break; case COMMA: return COMMA_TOKEN; case HYPHEN_MINUS: @@ -472,7 +471,6 @@ export class Tokenizer { } this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); - break; case VERTICAL_LINE: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); @@ -655,32 +653,51 @@ export class Tokenizer { } } + private consumeStringSlice(count: number): string { + const SLICE_STACK_SIZE = 60000; + let value = ''; + while (count > 0) { + const amount = Math.min(SLICE_STACK_SIZE, count); + value += fromCodePoint(...this._value.splice(0, amount)); + count -= amount; + } + this._value.shift(); + + return value; + } + private consumeStringToken(endingCodePoint: number): StringValueToken | Token { let value = ''; + let i = 0; do { - const codePoint = this.consumeCodePoint(); - if (codePoint === EOF || codePoint === endingCodePoint) { + const codePoint = this._value[i]; + if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) { + value += this.consumeStringSlice(i); return {type: TokenType.STRING_TOKEN, value}; } if (codePoint === LINE_FEED) { - this.reconsumeCodePoint(codePoint); + this._value.splice(0, i); return BAD_STRING_TOKEN; } if (codePoint === REVERSE_SOLIDUS) { - const next = this.peekCodePoint(0); - if (next !== EOF) { + const next = this._value[i + 1]; + if (next !== EOF && next !== undefined) { if (next === LINE_FEED) { - this.consumeCodePoint(); + value += this.consumeStringSlice(i); + i = -1; + this._value.shift(); } else if (isValidEscape(codePoint, next)) { + value += this.consumeStringSlice(i); value += fromCodePoint(this.consumeEscapedCodePoint()); + i = -1; } } - } else { - value += fromCodePoint(codePoint); } + + i++; } while (true); } From 86a650bfd573509b704cda64f992488bb9555569 Mon Sep 17 00:00:00 2001 From: CI Date: Thu, 30 May 2019 05:31:15 +0000 Subject: [PATCH 237/377] chore(release): 1.0.0-rc.3 --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88ccf6fee..ba3731fe5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0-rc.3](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.2...v1.0.0-rc.3) (2019-05-30) + + +### fix + +* stack exceeding for css tokenizer (#1862) ([cbaecdca28cfaf9bd854e1b0c005cc8058208b36](https://github.com/niklasvh/html2canvas/commit/cbaecdca28cfaf9bd854e1b0c005cc8058208b36)), closes [#1862](https://github.com/niklasvh/html2canvas/issues/1862) +* typescript options type definition (#1861) ([cae44a6f0a6649bd8a7c4250a20792bb5c2e5b42](https://github.com/niklasvh/html2canvas/commit/cae44a6f0a6649bd8a7c4250a20792bb5c2e5b42)), closes [#1861](https://github.com/niklasvh/html2canvas/issues/1861) + + + # [1.0.0-rc.2](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.1...v1.0.0-rc.2) (2019-05-29) diff --git a/package-lock.json b/package-lock.json index 0838abbfe..6da57024e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.2", + "version": "1.0.0-rc.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3c15b6272..2900c4a83 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.2", + "version": "1.0.0-rc.3", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 61f4819e02102b112513d57b16ec7d37e989af20 Mon Sep 17 00:00:00 2001 From: Valentin Date: Tue, 18 Jun 2019 06:22:05 +0200 Subject: [PATCH 238/377] feat: ignore unsupported image functions (#1873) --- src/css/property-descriptors/background-image.ts | 6 +++--- src/css/syntax/parser.ts | 2 +- src/css/syntax/tokenizer.ts | 2 +- src/css/types/color.ts | 6 +++--- src/css/types/functions/-webkit-gradient.ts | 4 ++-- src/css/types/image.ts | 8 +++++--- src/dom/document-cloner.ts | 6 +++--- 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/css/property-descriptors/background-image.ts b/src/css/property-descriptors/background-image.ts index 701ed7751..0d7e406ca 100644 --- a/src/css/property-descriptors/background-image.ts +++ b/src/css/property-descriptors/background-image.ts @@ -1,7 +1,7 @@ import {TokenType} from '../syntax/tokenizer'; -import {ICSSImage, image} from '../types/image'; +import {ICSSImage, image, isSupportedImage} from '../types/image'; import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; -import {CSSValue, nonFunctionArgSeperator} from '../syntax/parser'; +import {CSSValue, nonFunctionArgSeparator} from '../syntax/parser'; export const backgroundImage: IPropertyListDescriptor = { name: 'background-image', @@ -19,6 +19,6 @@ export const backgroundImage: IPropertyListDescriptor = { return []; } - return tokens.filter(nonFunctionArgSeperator).map(image.parse); + return tokens.filter(value => nonFunctionArgSeparator(value) && isSupportedImage(value)).map(image.parse); } }; diff --git a/src/css/syntax/parser.ts b/src/css/syntax/parser.ts index 5013af52b..83b8a6c16 100644 --- a/src/css/syntax/parser.ts +++ b/src/css/syntax/parser.ts @@ -149,7 +149,7 @@ export const isIdentWithValue = (token: CSSValue, value: string): boolean => isIdentToken(token) && token.value === value; export const nonWhiteSpace = (token: CSSValue) => token.type !== TokenType.WHITESPACE_TOKEN; -export const nonFunctionArgSeperator = (token: CSSValue) => +export const nonFunctionArgSeparator = (token: CSSValue) => token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN; export const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => { diff --git a/src/css/syntax/tokenizer.ts b/src/css/syntax/tokenizer.ts index 20491f773..b449b8495 100644 --- a/src/css/syntax/tokenizer.ts +++ b/src/css/syntax/tokenizer.ts @@ -696,7 +696,7 @@ export class Tokenizer { } } } - + i++; } while (true); } diff --git a/src/css/types/color.ts b/src/css/types/color.ts index bf8ade5ad..ebc17c149 100644 --- a/src/css/types/color.ts +++ b/src/css/types/color.ts @@ -1,4 +1,4 @@ -import {CSSValue, nonFunctionArgSeperator} from '../syntax/parser'; +import {CSSValue, nonFunctionArgSeparator} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; import {ITypeDescriptor} from '../ITypeDescriptor'; import {angle, deg} from './angle'; @@ -86,7 +86,7 @@ const getTokenColorValue = (token: CSSValue, i: number): number => { }; const rgb = (args: CSSValue[]): number => { - const tokens = args.filter(nonFunctionArgSeperator); + const tokens = args.filter(nonFunctionArgSeparator); if (tokens.length === 3) { const [r, g, b] = tokens.map(getTokenColorValue); @@ -121,7 +121,7 @@ function hue2rgb(t1: number, t2: number, hue: number): number { } const hsl = (args: CSSValue[]): number => { - const tokens = args.filter(nonFunctionArgSeperator); + const tokens = args.filter(nonFunctionArgSeparator); const [hue, saturation, lightness, alpha] = tokens; const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2); diff --git a/src/css/types/functions/-webkit-gradient.ts b/src/css/types/functions/-webkit-gradient.ts index ad373cc31..233fa52c6 100644 --- a/src/css/types/functions/-webkit-gradient.ts +++ b/src/css/types/functions/-webkit-gradient.ts @@ -1,4 +1,4 @@ -import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeperator, parseFunctionArgs} from '../../syntax/parser'; +import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser'; import { CSSImageType, CSSLinearGradientImage, @@ -40,7 +40,7 @@ export const webkitGradient = (tokens: CSSValue[]): CSSLinearGradientImage | CSS const color = colorType.parse(firstToken.values[0]); stops.push({stop: HUNDRED_PERCENT, color}); } else if (firstToken.name === 'color-stop') { - const values = firstToken.values.filter(nonFunctionArgSeperator); + const values = firstToken.values.filter(nonFunctionArgSeparator); if (values.length === 2) { const color = colorType.parse(values[1]); const stop = values[0]; diff --git a/src/css/types/image.ts b/src/css/types/image.ts index f44275183..631a9462b 100644 --- a/src/css/types/image.ts +++ b/src/css/types/image.ts @@ -98,9 +98,11 @@ export const image: ITypeDescriptor = { } }; -const SUPPORTED_IMAGE_FUNCTIONS: { - [key: string]: (args: CSSValue[]) => ICSSImage; -} = { +export function isSupportedImage(value: CSSValue) { + return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name]; +} + +const SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = { 'linear-gradient': linearGradient, '-moz-linear-gradient': prefixLinearGradient, '-ms-linear-gradient': prefixLinearGradient, diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 72a359a9a..360084aee 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -12,7 +12,7 @@ import { isTextNode } from './node-parser'; import {Logger} from '../core/logger'; -import {isIdentToken, nonFunctionArgSeperator} from '../css/syntax/parser'; +import {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser'; import {TokenType} from '../css/syntax/tokenizer'; import {CounterState, createCounterText} from '../css/types/functions/counter'; import {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type'; @@ -355,7 +355,7 @@ export class DocumentCloner { ); } } else if (token.name === 'counter') { - const [counter, counterStyle] = token.values.filter(nonFunctionArgSeperator); + const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator); if (counter && isIdentToken(counter)) { const counterState = this.counters.getCounterValue(counter.value); const counterType = @@ -368,7 +368,7 @@ export class DocumentCloner { ); } } else if (token.name === 'counters') { - const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeperator); + const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator); if (counter && isIdentToken(counter)) { const counterStates = this.counters.getCounterValues(counter.value); const counterType = From 81dcf7b6be66920260a60908aa4b86e7530f6e17 Mon Sep 17 00:00:00 2001 From: Radics Laszlo Date: Tue, 18 Jun 2019 06:23:45 +0200 Subject: [PATCH 239/377] fix: zero size iframe rendering (#1863) --- .../iframe-element-container.ts | 4 ++-- src/render/canvas/canvas-renderer.ts | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/dom/replaced-elements/iframe-element-container.ts b/src/dom/replaced-elements/iframe-element-container.ts index 06fcccca4..001ed956c 100644 --- a/src/dom/replaced-elements/iframe-element-container.ts +++ b/src/dom/replaced-elements/iframe-element-container.ts @@ -15,8 +15,8 @@ export class IFrameElementContainer extends ElementContainer { constructor(iframe: HTMLIFrameElement) { super(iframe); this.src = iframe.src; - this.width = parseInt(iframe.width, 10); - this.height = parseInt(iframe.height, 10); + this.width = parseInt(iframe.width, 10) || 0; + this.height = parseInt(iframe.height, 10) || 0; this.backgroundColor = this.styles.backgroundColor; try { if ( diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 0026654c3..d15ed1e4f 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -306,17 +306,19 @@ export class CanvasRenderer { }); const canvas = await iframeRenderer.render(container.tree); - this.ctx.drawImage( - canvas, - 0, - 0, - container.width, - container.width, - container.bounds.left, - container.bounds.top, - container.bounds.width, - container.bounds.height - ); + if (container.width && container.height) { + this.ctx.drawImage( + canvas, + 0, + 0, + container.width, + container.height, + container.bounds.left, + container.bounds.top, + container.bounds.width, + container.bounds.height + ); + } } if (container instanceof InputElementContainer) { From 9a63797aa7fb81454008745d2a1c069ca24339a4 Mon Sep 17 00:00:00 2001 From: Jason Cooke Date: Tue, 18 Jun 2019 16:24:34 +1200 Subject: [PATCH 240/377] docs: fix typo (#1864) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 306267bb6..8b63c738f 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ support [older browsers](http://caniuse.com/#search=promise) that do not nativel To render an `element` with html2canvas, simply call: ` html2canvas(element[, options]);` -The function returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) containing the `` element. Simply add a promise fullfillment handler to the promise using `then`: +The function returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) containing the `` element. Simply add a promise fulfillment handler to the promise using `then`: html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); From ee3ca35636e9b362ffec2bf47329f7f08dbbc6ce Mon Sep 17 00:00:00 2001 From: David Molnar Date: Sun, 22 Sep 2019 04:32:42 +0200 Subject: [PATCH 241/377] add missing -ms-grid display property to support IE grid layouts (#1926) --- src/css/property-descriptors/display.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/css/property-descriptors/display.ts b/src/css/property-descriptors/display.ts index dc59a6bb2..c1d2186b4 100644 --- a/src/css/property-descriptors/display.ts +++ b/src/css/property-descriptors/display.ts @@ -65,6 +65,7 @@ const parseDisplayValue = (display: string): Display => { case '-webkit-flex': return DISPLAY.FLEX; case 'grid': + case '-ms-grid': return DISPLAY.GRID; case 'ruby': return DISPLAY.RUBY; From d4b58960dc97bac27a40187da1fc129ca3776034 Mon Sep 17 00:00:00 2001 From: RickBetting Date: Sun, 22 Sep 2019 04:33:48 +0200 Subject: [PATCH 242/377] Update canvas-renderer.ts (#2004) * Update canvas-renderer.ts Fixed an issue were a page wouldn't render. Line 581 (now 582) threw exception: "Uncaught (in promise) DOMException: Failed to execute 'createPattern' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0." * Update canvas-renderer.ts --- src/render/canvas/canvas-renderer.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index d15ed1e4f..eb95e3c65 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -578,8 +578,10 @@ export class CanvasRenderer { ctx.fillStyle = gradient; ctx.fillRect(0, 0, width, height); - const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern; - this.renderRepeat(path, pattern, x, y); + if ((width > 0) && (height > 0)) { + const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern; + this.renderRepeat(path, pattern, x, y); + } } else if (isRadialGradient(backgroundImage)) { const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [ null, From eedb81ef9e114366a7e286e975659360cf9d0983 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 21 Sep 2019 20:33:54 -0700 Subject: [PATCH 243/377] fix: correctly render partial borders (fix #1920) (#2010) --- src/render/canvas/canvas-renderer.ts | 3 ++- tests/reftests/border/solid.html | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index eb95e3c65..0196d3e16 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -701,8 +701,9 @@ export class CanvasRenderer { let side = 0; for (const border of borders) { if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color)) { - await this.renderBorder(border.color, side++, paint.curves); + await this.renderBorder(border.color, side, paint.curves); } + side++; } } diff --git a/tests/reftests/border/solid.html b/tests/reftests/border/solid.html index 4f3acb4c6..b689661b3 100644 --- a/tests/reftests/border/solid.html +++ b/tests/reftests/border/solid.html @@ -40,6 +40,12 @@ border-bottom-width: 50px; } + .box6 { + border-style: none solid none solid; + border-color: #807d32; + border-width: 50px; + } + html { background: #3a84c3; } @@ -51,5 +57,6 @@
             
             
             
            +
             
            From 00555cf1efddfed5877811d8a03a326f9943ab06 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 21 Sep 2019 21:12:36 -0700 Subject: [PATCH 244/377] fix: nested z-index ordering (#2011) * fix zindex bug * test: add z-index reftest for #1978 * fix: z-index ordering early exit --- src/render/stacking-context.ts | 5 ++ tests/reftests/zindex/z-index19.html | 71 ++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 tests/reftests/zindex/z-index19.html diff --git a/src/render/stacking-context.ts b/src/render/stacking-context.ts index 713670977..32497e344 100644 --- a/src/render/stacking-context.ts +++ b/src/render/stacking-context.ts @@ -104,8 +104,11 @@ const parseStackTree = ( parentStack.negativeZIndex.some((current, i) => { if (order > current.element.container.styles.zIndex.order) { index = i; + return false; + } else if (index > 0) { return true; } + return false; }); parentStack.negativeZIndex.splice(index, 0, stack); @@ -114,6 +117,8 @@ const parseStackTree = ( parentStack.positiveZIndex.some((current, i) => { if (order > current.element.container.styles.zIndex.order) { index = i + 1; + return false; + } else if (index > 0) { return true; } diff --git a/tests/reftests/zindex/z-index19.html b/tests/reftests/zindex/z-index19.html new file mode 100644 index 000000000..0db694948 --- /dev/null +++ b/tests/reftests/zindex/z-index19.html @@ -0,0 +1,71 @@ + + + + + z-index19 + + + + +
            +
            +
            +
            +
            +
            +
            +
            + + From 7d3456b78c37e7333db087601805b32ec7ca0253 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 21 Sep 2019 21:45:05 -0700 Subject: [PATCH 245/377] fix: null backgroundColor option as transparent (#2012) --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index b03322369..271f5102c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -101,7 +101,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom : COLORS.TRANSPARENT; const bgColor = opts.backgroundColor; - const defaultBackgroundColor = typeof bgColor === 'string' ? parseColor(bgColor) : 0xffffffff; + const defaultBackgroundColor = typeof bgColor === 'string' ? parseColor(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff; const backgroundColor = element === ownerDocument.documentElement From 99f105cb6683afc89621c2010313c1940e397fae Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 22 Sep 2019 05:11:36 +0000 Subject: [PATCH 246/377] chore(release): 1.0.0-rc.4 --- CHANGELOG.md | 20 ++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba3731fe5..bdfde2e93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0-rc.4](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.3...v1.0.0-rc.4) (2019-09-22) + + +### docs + +* fix typo (#1864) ([9a63797aa7fb81454008745d2a1c069ca24339a4](https://github.com/niklasvh/html2canvas/commit/9a63797aa7fb81454008745d2a1c069ca24339a4)), closes [#1864](https://github.com/niklasvh/html2canvas/issues/1864) + +### feat + +* ignore unsupported image functions (#1873) ([61f4819e02102b112513d57b16ec7d37e989af20](https://github.com/niklasvh/html2canvas/commit/61f4819e02102b112513d57b16ec7d37e989af20)), closes [#1873](https://github.com/niklasvh/html2canvas/issues/1873) + +### fix + +* correctly render partial borders (fix #1920) (#2010) ([eedb81ef9e114366a7e286e975659360cf9d0983](https://github.com/niklasvh/html2canvas/commit/eedb81ef9e114366a7e286e975659360cf9d0983)), closes [#1920](https://github.com/niklasvh/html2canvas/issues/1920) [#2010](https://github.com/niklasvh/html2canvas/issues/2010) +* nested z-index ordering (#2011) ([00555cf1efddfed5877811d8a03a326f9943ab06](https://github.com/niklasvh/html2canvas/commit/00555cf1efddfed5877811d8a03a326f9943ab06)), closes [#2011](https://github.com/niklasvh/html2canvas/issues/2011) [#1978](https://github.com/niklasvh/html2canvas/issues/1978) +* null backgroundColor option as transparent (#2012) ([7d3456b78c37e7333db087601805b32ec7ca0253](https://github.com/niklasvh/html2canvas/commit/7d3456b78c37e7333db087601805b32ec7ca0253)), closes [#2012](https://github.com/niklasvh/html2canvas/issues/2012) +* zero size iframe rendering (#1863) ([81dcf7b6be66920260a60908aa4b86e7530f6e17](https://github.com/niklasvh/html2canvas/commit/81dcf7b6be66920260a60908aa4b86e7530f6e17)), closes [#1863](https://github.com/niklasvh/html2canvas/issues/1863) + + + # [1.0.0-rc.3](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.2...v1.0.0-rc.3) (2019-05-30) diff --git a/package-lock.json b/package-lock.json index 6da57024e..4ddd819e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.3", + "version": "1.0.0-rc.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2900c4a83..6a6020290 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.3", + "version": "1.0.0-rc.4", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 34b06d6365603c3b16664ab7804efe94c7945946 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 25 Sep 2019 03:37:59 -0700 Subject: [PATCH 247/377] fix: correctly respect logging option (#2013) * test: update to using jest for unit tests * remove mocha types * revert to using mocha for testrunner.ts * add logger unit testing * fix reftest previewer scaling * fix LoggerOptions to interface * fix linting --- jest.config.js | 5 + package-lock.json | 2620 ++++++++++++++++- package.json | 5 +- src/core/__mocks__/cache-storage.ts | 22 + src/core/__mocks__/features.ts | 8 + src/core/__tests__/cache-storage.ts | 45 +- src/core/__tests__/logger.ts | 27 + src/core/__tests__/mock-context.ts | 45 - src/core/logger.ts | 45 +- .../__tests__/background-tests.ts | 8 +- src/css/types/__tests__/image-tests.ts | 3 + src/index.ts | 7 +- src/render/canvas/canvas-renderer.ts | 8 +- tests/rollup.config.ts | 2 +- tests/tsconfig.json | 6 + tsconfig.json | 2 +- www/src/preview.ts | 2 + 17 files changed, 2624 insertions(+), 236 deletions(-) create mode 100644 jest.config.js create mode 100644 src/core/__mocks__/cache-storage.ts create mode 100644 src/core/__mocks__/features.ts create mode 100644 src/core/__tests__/logger.ts delete mode 100644 src/core/__tests__/mock-context.ts create mode 100644 tests/tsconfig.json diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..1c28cf7b8 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'jsdom', + roots: ['src'] +}; diff --git a/package-lock.json b/package-lock.json index 4ddd819e2..dede688df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,9 +23,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "slash": { @@ -86,9 +86,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "minimist": { @@ -131,9 +131,9 @@ "dev": true }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -180,9 +180,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -259,9 +259,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -291,9 +291,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -593,9 +593,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -1125,9 +1125,9 @@ "dev": true }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "ms": { @@ -1150,9 +1150,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "to-fast-properties": { @@ -1163,6 +1163,277 @@ } } }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, "@jimp/bmp": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.0.tgz", @@ -1487,6 +1758,47 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "@types/babel__core": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", + "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, "@types/chai": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", @@ -1522,6 +1834,46 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.18", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", + "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -1535,9 +1887,9 @@ "dev": true }, "@types/mocha": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz", - "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", "dev": true }, "@types/node": { @@ -1573,6 +1925,27 @@ "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", "dev": true }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", + "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "dev": true + }, "@typescript-eslint/eslint-plugin": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", @@ -1814,6 +2187,12 @@ "through": ">=2.2.7 <3" } }, + "abab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", + "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "dev": true + }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -1836,12 +2215,28 @@ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", "dev": true }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, "acorn-jsx": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", "dev": true }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, "adm-zip": { "version": "0.4.13", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", @@ -2238,6 +2633,12 @@ "teen_process": "^1.3.0" }, "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, "node-simctl": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", @@ -2407,6 +2808,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -2538,9 +2945,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -2643,6 +3050,29 @@ } } }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, "babel-loader": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", @@ -2757,52 +3187,128 @@ "integrity": "sha1-1Ke+7++7UOPyc0mQqCokhs+eue4=", "dev": true }, - "babel-runtime": { - "version": "5.8.24", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", - "integrity": "sha1-MBSmsBvUy3RyDxOSUlOuDZJoFHs=", - "dev": true, - "requires": { - "core-js": "^1.0.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "5.8.24", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", + "integrity": "sha1-MBSmsBvUy3RyDxOSUlOuDZJoFHs=", + "dev": true, + "requires": { + "core-js": "^1.0.0" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true @@ -3034,6 +3540,29 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -3111,6 +3640,24 @@ "pako": "~1.0.5" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -3360,6 +3907,15 @@ "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", "dev": true }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -3904,6 +4460,12 @@ } } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -4677,6 +5239,21 @@ "base64-arraybuffer": "^0.2.0" } }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, "csv-parser": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-1.12.1.tgz", @@ -4747,6 +5324,30 @@ } } }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "date-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", @@ -4956,6 +5557,12 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -5000,6 +5607,15 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -5352,6 +5968,34 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "eslint": { "version": "5.16.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", @@ -5508,10 +6152,13 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } }, "eslint-visitor-keys": { "version": "1.0.0", @@ -5600,6 +6247,12 @@ "safe-buffer": "^5.1.1" } }, + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", + "dev": true + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -5621,6 +6274,12 @@ "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", "dev": true }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -5665,6 +6324,20 @@ "homedir-polyfill": "^1.0.1" } }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, "express": { "version": "4.16.4", "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", @@ -5763,9 +6436,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { @@ -5935,6 +6608,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, "fd-slicer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", @@ -7660,6 +8342,12 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, "handlebars": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", @@ -7896,6 +8584,15 @@ "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", "dev": true }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, "html2canvas-proxy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/html2canvas-proxy/-/html2canvas-proxy-1.0.1.tgz", @@ -8282,6 +8979,15 @@ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -8343,6 +9049,12 @@ "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -8498,47 +9210,1025 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "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" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "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 + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "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==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "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==", + "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + } + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "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==", + "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "buffer-alloc": "^1.2.0" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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 + } + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "jimp": { @@ -8607,6 +10297,54 @@ "dev": true, "optional": true }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, "jsftp": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/jsftp/-/jsftp-2.1.3.tgz", @@ -9084,9 +10822,9 @@ "dev": true }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "micromatch": { @@ -9278,6 +11016,12 @@ "is-buffer": "^1.1.5" } }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -9296,6 +11040,12 @@ "invert-kv": "^1.0.0" } }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, "leven": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", @@ -9346,6 +11096,30 @@ "xtend": "^4.0.0" } }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -9374,9 +11148,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash._reinterpolate": { @@ -9385,6 +11159,18 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.template": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", @@ -9508,6 +11294,15 @@ "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", "dev": true }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, "mamacro": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", @@ -9669,6 +11464,12 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "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 + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -9824,9 +11625,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -10392,6 +12193,12 @@ } } }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, "node-libs-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", @@ -10441,6 +12248,33 @@ } } }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "node-releases": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", @@ -10539,6 +12373,12 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -10761,6 +12601,15 @@ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10791,6 +12640,12 @@ "p-limit": "^1.1.0" } }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -10896,6 +12751,12 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", @@ -10974,6 +12835,15 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, "pathval": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", @@ -11058,6 +12928,15 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pixelmatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", @@ -11101,6 +12980,12 @@ } } }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, "pngjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", @@ -11140,6 +13025,26 @@ "fast-diff": "^1.1.2" } }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "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==", + "dev": true + } + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -11179,6 +13084,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "prompts": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", + "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.3" + } + }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -11347,6 +13262,78 @@ "unpipe": "1.0.0" } }, + "react-is": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "dev": true + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -11362,6 +13349,15 @@ "util-deprecate": "~1.0.1" } }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, "redent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", @@ -11547,6 +13543,17 @@ "lodash": "^4.17.11" } }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -11805,15 +13812,28 @@ } }, "rollup-pluginutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", - "integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", + "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.0", - "micromatch": "^3.1.10" + "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 + } } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -11862,6 +13882,74 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "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" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "sauce-connect-launcher": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-1.2.5.tgz", @@ -12036,9 +14124,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -12107,12 +14195,24 @@ "jsonify": "~0.0.0" } }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "sisteransi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", + "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "dev": true + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -12499,6 +14599,12 @@ "safe-buffer": "^5.1.1" } }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, "standard-version": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-5.0.2.tgz", @@ -12832,9 +14938,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true } } @@ -12862,6 +14968,33 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -12972,6 +15105,12 @@ "has-flag": "^3.0.0" } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "table": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", @@ -13397,6 +15536,26 @@ } } }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + } + } + }, "text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -13409,6 +15568,12 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -13471,6 +15636,12 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", @@ -13558,6 +15729,23 @@ } } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -13585,6 +15773,56 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "ts-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", + "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, "ts-loader": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz", @@ -13800,38 +16038,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { @@ -14094,12 +16309,30 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, "walkdir": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", "dev": true }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -14111,6 +16344,12 @@ "neo-async": "^2.5.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { "version": "4.29.6", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", @@ -14427,6 +16666,43 @@ } } }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -14513,6 +16789,26 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -14525,6 +16821,12 @@ "xtend": "^4.0.0" } }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, "xml-parse-from-string": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", diff --git a/package.json b/package.json index 6a6020290..2f65888c7 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@babel/preset-flow": "^7.0.0", "@types/chai": "^4.1.7", "@types/glob": "^7.1.1", + "@types/jest": "^24.0.18", "@types/mocha": "^5.2.6", "@types/node": "^11.13.2", "@types/platform": "^1.3.2", @@ -53,6 +54,7 @@ "filenamify-url": "1.0.0", "glob": "7.1.3", "html2canvas-proxy": "1.0.1", + "jest": "^24.9.0", "jquery": "^3.4.0", "js-polyfills": "^0.1.42", "karma": "^4.0.1", @@ -79,6 +81,7 @@ "serve-index": "^1.9.1", "slash": "1.0.0", "standard-version": "^5.0.2", + "ts-jest": "^24.1.0", "ts-loader": "^5.3.3", "ts-node": "^8.0.3", "typescript": "^3.4.3", @@ -99,7 +102,7 @@ "format": "prettier --write \"{src,www/src,tests,scripts}/**/*.ts\"", "lint": "eslint src/**/*.ts", "test": "npm run lint && npm run unittest && npm run karma", - "unittest": "mocha --require ts-node/register src/**/__tests__/*.ts", + "unittest": "jest", "karma": "node karma", "watch": "rollup -c rollup.config.ts -w", "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts", diff --git a/src/core/__mocks__/cache-storage.ts b/src/core/__mocks__/cache-storage.ts new file mode 100644 index 000000000..864e00289 --- /dev/null +++ b/src/core/__mocks__/cache-storage.ts @@ -0,0 +1,22 @@ +class MockCache { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private readonly _cache: {[key: string]: Promise}; + + constructor() { + this._cache = {}; + } + + addImage(src: string): Promise { + const result = Promise.resolve(); + this._cache[src] = result; + return result; + } +} + +const current = new MockCache(); + +export class CacheStorage { + static getInstance(): MockCache { + return current; + } +} diff --git a/src/core/__mocks__/features.ts b/src/core/__mocks__/features.ts new file mode 100644 index 000000000..58b59ccfe --- /dev/null +++ b/src/core/__mocks__/features.ts @@ -0,0 +1,8 @@ +export const FEATURES = { + SUPPORT_RANGE_BOUNDS: true, + SUPPORT_SVG_DRAWING: true, + SUPPORT_FOREIGNOBJECT_DRAWING: true, + SUPPORT_CORS_IMAGES: true, + SUPPORT_RESPONSE_TYPE: true, + SUPPORT_CORS_XHR: true +}; diff --git a/src/core/__tests__/cache-storage.ts b/src/core/__tests__/cache-storage.ts index 69a3b12e9..c73828420 100644 --- a/src/core/__tests__/cache-storage.ts +++ b/src/core/__tests__/cache-storage.ts @@ -1,6 +1,49 @@ import {deepStrictEqual, fail} from 'assert'; import {FEATURES} from '../features'; -import {createMockContext, proxy} from './mock-context'; +import {CacheStorage} from '../cache-storage'; +import {Logger} from '../logger'; + +const proxy = 'http://example.com/proxy'; + +const createMockContext = (origin: string, opts = {}) => { + const context = { + location: { + href: origin + }, + document: { + createElement(_name: string) { + let _href = ''; + return { + set href(value: string) { + _href = value; + }, + get href() { + return _href; + }, + get protocol() { + return new URL(_href).protocol; + }, + get hostname() { + return new URL(_href).hostname; + }, + get port() { + return new URL(_href).port; + } + }; + } + } + }; + + CacheStorage.setContext(context as Window); + Logger.create({id: 'test', enabled: false}); + return CacheStorage.create('test', { + imageTimeout: 0, + useCORS: false, + allowTaint: false, + proxy, + ...opts + }); +}; const images: ImageMock[] = []; const xhr: XMLHttpRequestMock[] = []; diff --git a/src/core/__tests__/logger.ts b/src/core/__tests__/logger.ts new file mode 100644 index 000000000..ff921f5c5 --- /dev/null +++ b/src/core/__tests__/logger.ts @@ -0,0 +1,27 @@ +import {Logger} from '../logger'; + +describe('logger', () => { + let infoSpy: any; + + beforeEach(() => { + infoSpy = jest.spyOn(console, 'info').mockImplementation(() => {}); + }); + + afterEach(() => { + infoSpy.mockRestore(); + }); + + it('should call console.info when logger enabled', () => { + const id = Math.random().toString(); + const logger = new Logger({id, enabled: true}); + logger.info('testing'); + expect(infoSpy).toHaveBeenLastCalledWith(id, expect.stringMatching(/\d+ms/), 'testing'); + }); + + it("shouldn't call console.info when logger disabled", () => { + const id = Math.random().toString(); + const logger = new Logger({id, enabled: false}); + logger.info('testing'); + expect(infoSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/src/core/__tests__/mock-context.ts b/src/core/__tests__/mock-context.ts deleted file mode 100644 index 354727361..000000000 --- a/src/core/__tests__/mock-context.ts +++ /dev/null @@ -1,45 +0,0 @@ -import {CacheStorage} from '../cache-storage'; -import {URL} from 'url'; -import {Logger} from '../logger'; - -export const proxy = 'http://example.com/proxy'; - -export const createMockContext = (origin: string, opts = {}) => { - const context = { - location: { - href: origin - }, - document: { - createElement(_name: string) { - let _href = ''; - return { - set href(value: string) { - _href = value; - }, - get href() { - return _href; - }, - get protocol() { - return new URL(_href).protocol; - }, - get hostname() { - return new URL(_href).hostname; - }, - get port() { - return new URL(_href).port; - } - }; - } - } - }; - - CacheStorage.setContext(context as Window); - Logger.create('test'); - return CacheStorage.create('test', { - imageTimeout: 0, - useCORS: false, - allowTaint: false, - proxy, - ...opts - }); -}; diff --git a/src/core/logger.ts b/src/core/logger.ts index cebf7caf3..f47980a7e 100644 --- a/src/core/logger.ts +++ b/src/core/logger.ts @@ -1,22 +1,31 @@ +export interface LoggerOptions { + id: string; + enabled: boolean; +} + export class Logger { static instances: {[key: string]: Logger} = {}; private readonly id: string; + private readonly enabled: boolean; private readonly start: number; - constructor(id: string) { + constructor({id, enabled}: LoggerOptions) { this.id = id; + this.enabled = enabled; this.start = Date.now(); } // eslint-disable-next-line @typescript-eslint/no-explicit-any debug(...args: any) { - // eslint-disable-next-line no-console - if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') { + if (this.enabled) { // eslint-disable-next-line no-console - console.debug(this.id, `${this.getTime()}ms`, ...args); - } else { - this.info(...args); + if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') { + // eslint-disable-next-line no-console + console.debug(this.id, `${this.getTime()}ms`, ...args); + } else { + this.info(...args); + } } } @@ -24,8 +33,8 @@ export class Logger { return Date.now() - this.start; } - static create(id: string) { - Logger.instances[id] = new Logger(id); + static create(options: LoggerOptions) { + Logger.instances[options.id] = new Logger(options); } static destroy(id: string) { @@ -42,21 +51,25 @@ export class Logger { // eslint-disable-next-line @typescript-eslint/no-explicit-any info(...args: any) { - // eslint-disable-next-line no-console - if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') { + if (this.enabled) { // eslint-disable-next-line no-console - console.info(this.id, `${this.getTime()}ms`, ...args); + if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') { + // eslint-disable-next-line no-console + console.info(this.id, `${this.getTime()}ms`, ...args); + } } } // eslint-disable-next-line @typescript-eslint/no-explicit-any error(...args: any) { - // eslint-disable-next-line no-console - if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') { + if (this.enabled) { // eslint-disable-next-line no-console - console.error(this.id, `${this.getTime()}ms`, ...args); - } else { - this.info(...args); + if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') { + // eslint-disable-next-line no-console + console.error(this.id, `${this.getTime()}ms`, ...args); + } else { + this.info(...args); + } } } } diff --git a/src/css/property-descriptors/__tests__/background-tests.ts b/src/css/property-descriptors/__tests__/background-tests.ts index 28f1ae0ec..552ee8c07 100644 --- a/src/css/property-descriptors/__tests__/background-tests.ts +++ b/src/css/property-descriptors/__tests__/background-tests.ts @@ -4,15 +4,13 @@ import {backgroundImage} from '../background-image'; import {CSSImageType} from '../../types/image'; import {pack} from '../../types/color'; import {deg} from '../../types/angle'; -import {createMockContext} from '../../../core/__tests__/mock-context'; -import {CacheStorage} from '../../../core/cache-storage'; + +jest.mock('../../../core/cache-storage'); +jest.mock('../../../core/features'); const backgroundImageParse = (value: string) => backgroundImage.parse(Parser.parseValues(value)); describe('property-descriptors', () => { - before(() => { - CacheStorage.attachInstance(createMockContext('http://example.com')); - }); describe('background-image', () => { it('none', () => deepStrictEqual(backgroundImageParse('none'), [])); diff --git a/src/css/types/__tests__/image-tests.ts b/src/css/types/__tests__/image-tests.ts index 24a5d9e91..9e3c067f4 100644 --- a/src/css/types/__tests__/image-tests.ts +++ b/src/css/types/__tests__/image-tests.ts @@ -8,6 +8,9 @@ import {deg} from '../angle'; const parse = (value: string) => image.parse(Parser.parseValue(value)); const colorParse = (value: string) => color.parse(Parser.parseValue(value)); +jest.mock('../../../core/cache-storage'); +jest.mock('../../../core/features'); + describe('types', () => { describe('', () => { describe('parsing', () => { diff --git a/src/index.ts b/src/index.ts index 271f5102c..7e4707309 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,7 +11,7 @@ import {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer'; export type Options = CloneOptions & RenderOptions & ResourceOptions & { - backgroundColor: string; + backgroundColor: string | null; foreignObjectRendering: boolean; logging: boolean; removeContainer?: boolean; @@ -76,7 +76,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom const windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight); - Logger.create(instanceName); + Logger.create({id: instanceName, enabled: options.logging}); Logger.getInstance(instanceName).debug(`Starting document clone`); const documentCloner = new DocumentCloner(element, { id: instanceName, @@ -101,7 +101,8 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom : COLORS.TRANSPARENT; const bgColor = opts.backgroundColor; - const defaultBackgroundColor = typeof bgColor === 'string' ? parseColor(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff; + const defaultBackgroundColor = + typeof bgColor === 'string' ? parseColor(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff; const backgroundColor = element === ownerDocument.documentElement diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 0196d3e16..87303c191 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -578,10 +578,10 @@ export class CanvasRenderer { ctx.fillStyle = gradient; ctx.fillRect(0, 0, width, height); - if ((width > 0) && (height > 0)) { - const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern; - this.renderRepeat(path, pattern, x, y); - } + if (width > 0 && height > 0) { + const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern; + this.renderRepeat(path, pattern, x, y); + } } else if (isRadialGradient(backgroundImage)) { const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [ null, diff --git a/tests/rollup.config.ts b/tests/rollup.config.ts index 32509d02c..58b40a656 100644 --- a/tests/rollup.config.ts +++ b/tests/rollup.config.ts @@ -36,7 +36,7 @@ export default { // Allow json resolution json(), // Compile TypeScript files - typescript({useTsconfigDeclarationDir: true}), + typescript({useTsconfigDeclarationDir: true, tsconfig: resolve(__dirname, 'tsconfig.json')}), // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) commonjs({ include: 'node_modules/**', diff --git a/tests/tsconfig.json b/tests/tsconfig.json new file mode 100644 index 000000000..168f06002 --- /dev/null +++ b/tests/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "types": ["node", "mocha"] + } +} diff --git a/tsconfig.json b/tsconfig.json index e314348a5..7d251ff6e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "strictNullChecks": true, "strictPropertyInitialization": true, "resolveJsonModule": true, - "typeRoots": [ "./types", "./node_modules/@types"], + "types": ["node", "jest"], "target": "es5", "lib": ["es2015", "dom"], "sourceMap": true, diff --git a/www/src/preview.ts b/www/src/preview.ts index eb22f195f..6d21d3b80 100644 --- a/www/src/preview.ts +++ b/www/src/preview.ts @@ -42,6 +42,8 @@ function onBrowserChange(browserTest: Test) { previewImage.src = `/results/${browserTest.screenshot}.png`; if (browserTest.devicePixelRatio > 1) { previewImage.style.transform = `scale(${1 / browserTest.devicePixelRatio})`; + } else { + previewImage.style.transform = ''; } } } From 076492042a73d67b30e4562f2964200e07d25f5e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 25 Sep 2019 23:34:18 -0700 Subject: [PATCH 248/377] fix: using existing canvas option (#2017) * refactor: document cleanup to DocumentCloner * fix: using existing canvas option * fix: lint errors * fix: preview transform origin --- examples/existing_canvas.html | 2 +- src/__tests__/index.ts | 91 ++++++++++++++++++++++++++++ src/core/__mocks__/logger.ts | 17 ++++++ src/css/layout/__mocks__/bounds.ts | 4 ++ src/dom/__mocks__/document-cloner.ts | 16 +++++ src/dom/document-cloner.ts | 8 +++ src/index.ts | 11 +--- src/render/canvas/canvas-renderer.ts | 10 +-- www/src/preview.ts | 2 + 9 files changed, 147 insertions(+), 14 deletions(-) create mode 100644 src/__tests__/index.ts create mode 100644 src/core/__mocks__/logger.ts create mode 100644 src/css/layout/__mocks__/bounds.ts create mode 100644 src/dom/__mocks__/document-cloner.ts diff --git a/examples/existing_canvas.html b/examples/existing_canvas.html index ac7be534e..baa743eed 100644 --- a/examples/existing_canvas.html +++ b/examples/existing_canvas.html @@ -42,7 +42,7 @@

            Existing canvas:

            ctx.stroke(); document.querySelector("button").addEventListener("click", function() { - html2canvas(document.querySelector("#content"), {canvas: canvas}).then(function(canvas) { + html2canvas(document.querySelector("#content"), {canvas: canvas, scale: 1}).then(function(canvas) { console.log('Drew on the existing canvas'); }); }, false); diff --git a/src/__tests__/index.ts b/src/__tests__/index.ts new file mode 100644 index 000000000..1cc77085e --- /dev/null +++ b/src/__tests__/index.ts @@ -0,0 +1,91 @@ +import html2canvas from '../index'; + +import {CanvasRenderer} from '../render/canvas/canvas-renderer'; +import {DocumentCloner} from '../dom/document-cloner'; +import {COLORS} from '../css/types/color'; + +jest.mock('../core/logger'); +jest.mock('../css/layout/bounds'); +jest.mock('../dom/document-cloner'); +jest.mock('../dom/node-parser', () => { + return { + isBodyElement: () => false, + isHTMLElement: () => false, + parseTree: jest.fn().mockImplementation(() => { + return {styles: {}}; + }) + }; +}); + +jest.mock('../render/stacking-context'); +jest.mock('../render/canvas/canvas-renderer'); + +describe('html2canvas', () => { + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + const element = { + ownerDocument: { + defaultView: { + pageXOffset: 12, + pageYOffset: 34 + } + } + } as HTMLElement; + + it('should render with an element', async () => { + DocumentCloner.destroy = jest.fn().mockReturnValue(true); + await html2canvas(element); + expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.objectContaining({ + backgroundColor: 0xffffffff, + scale: 1, + height: 50, + width: 200, + x: 0, + y: 0, + scrollX: 12, + scrollY: 34, + canvas: undefined + }) + ); + expect(DocumentCloner.destroy).toBeCalled(); + }); + + it('should have transparent background with backgroundColor: null', async () => { + await html2canvas(element, {backgroundColor: null}); + expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.objectContaining({ + backgroundColor: COLORS.TRANSPARENT + }) + ); + }); + + it('should use existing canvas when given as option', async () => { + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + const canvas = {} as HTMLCanvasElement; + await html2canvas(element, {canvas}); + expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.objectContaining({ + canvas + }) + ); + }); + + it('should not remove cloned window when removeContainer: false', async () => { + DocumentCloner.destroy = jest.fn(); + await html2canvas(element, {removeContainer: false}); + expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.objectContaining({ + backgroundColor: 0xffffffff, + scale: 1, + height: 50, + width: 200, + x: 0, + y: 0, + scrollX: 12, + scrollY: 34, + canvas: undefined + }) + ); + expect(DocumentCloner.destroy).not.toBeCalled(); + }); +}); diff --git a/src/core/__mocks__/logger.ts b/src/core/__mocks__/logger.ts new file mode 100644 index 000000000..8819bcdc8 --- /dev/null +++ b/src/core/__mocks__/logger.ts @@ -0,0 +1,17 @@ +export class Logger { + debug() {} + + static create() {} + + static destroy() {} + + static getInstance(): Logger { + return logger; + } + + info() {} + + error() {} +} + +const logger = new Logger(); diff --git a/src/css/layout/__mocks__/bounds.ts b/src/css/layout/__mocks__/bounds.ts new file mode 100644 index 000000000..34daef70f --- /dev/null +++ b/src/css/layout/__mocks__/bounds.ts @@ -0,0 +1,4 @@ +export const {Bounds} = jest.requireActual('../bounds'); +export const parseBounds = () => { + return new Bounds(0, 0, 200, 50); +}; diff --git a/src/dom/__mocks__/document-cloner.ts b/src/dom/__mocks__/document-cloner.ts new file mode 100644 index 000000000..366ceeccf --- /dev/null +++ b/src/dom/__mocks__/document-cloner.ts @@ -0,0 +1,16 @@ +export class DocumentCloner { + clonedReferenceElement?: HTMLElement; + + constructor() { + // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion + this.clonedReferenceElement = {} as HTMLElement; + } + + toIFrame() { + return Promise.resolve({}); + } + + static destroy() { + return true; + } +} diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 360084aee..54e7ba45b 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -410,6 +410,14 @@ export class DocumentCloner { : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; return anonymousReplacedElement; } + + static destroy(container: HTMLIFrameElement): boolean { + if (container.parentNode) { + container.parentNode.removeChild(container); + return true; + } + return false; + } } enum PseudoElementType { diff --git a/src/index.ts b/src/index.ts index 7e4707309..ee5e9a165 100644 --- a/src/index.ts +++ b/src/index.ts @@ -116,6 +116,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom const renderOptions = { id: instanceName, cache: options.cache, + canvas: options.canvas, backgroundColor, scale: options.scale, x: options.x, @@ -153,7 +154,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom } if (options.removeContainer === true) { - if (!cleanContainer(container)) { + if (!DocumentCloner.destroy(container)) { Logger.getInstance(instanceName).error(`Cannot detach cloned iframe as it is not in the DOM anymore`); } } @@ -163,11 +164,3 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom CacheStorage.destroy(instanceName); return canvas; }; - -const cleanContainer = (container: HTMLIFrameElement): boolean => { - if (container.parentNode) { - container.parentNode.removeChild(container); - return true; - } - return false; -}; diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 87303c191..93ca92340 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -71,10 +71,12 @@ export class CanvasRenderer { this.canvas = options.canvas ? options.canvas : document.createElement('canvas'); this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D; this.options = options; - this.canvas.width = Math.floor(options.width * options.scale); - this.canvas.height = Math.floor(options.height * options.scale); - this.canvas.style.width = `${options.width}px`; - this.canvas.style.height = `${options.height}px`; + if (!options.canvas) { + this.canvas.width = Math.floor(options.width * options.scale); + this.canvas.height = Math.floor(options.height * options.scale); + this.canvas.style.width = `${options.width}px`; + this.canvas.style.height = `${options.height}px`; + } this.fontMetrics = new FontMetrics(document); this.ctx.scale(this.options.scale, this.options.scale); this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY); diff --git a/www/src/preview.ts b/www/src/preview.ts index 6d21d3b80..d780a1944 100644 --- a/www/src/preview.ts +++ b/www/src/preview.ts @@ -42,8 +42,10 @@ function onBrowserChange(browserTest: Test) { previewImage.src = `/results/${browserTest.screenshot}.png`; if (browserTest.devicePixelRatio > 1) { previewImage.style.transform = `scale(${1 / browserTest.devicePixelRatio})`; + previewImage.style.transformOrigin = 'top left'; } else { previewImage.style.transform = ''; + previewImage.style.transformOrigin = ''; } } } From 3f599103fb139f218ffe917800e74af2c7cc7ad5 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 27 Sep 2019 06:42:13 -0700 Subject: [PATCH 249/377] fix: safari pseudo element content parsing (#2018) * fix: await for fonts to be ready in document clone * fix: safari pseudo element content parsing * fix: safari counter-increment / counter-reset --- src/css/types/functions/counter.ts | 22 +++++++++++++--------- src/dom/document-cloner.ts | 9 +++++++-- src/global.d.ts | 4 ++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/css/types/functions/counter.ts b/src/css/types/functions/counter.ts index e8e1601ae..062d84e73 100644 --- a/src/css/types/functions/counter.ts +++ b/src/css/types/functions/counter.ts @@ -30,25 +30,29 @@ export class CounterState { parse(style: CSSParsedCounterDeclaration): string[] { const counterIncrement = style.counterIncrement; const counterReset = style.counterReset; + let canReset = true; if (counterIncrement !== null) { counterIncrement.forEach(entry => { const counter = this.counters[entry.counter]; - if (counter) { + if (counter && entry.increment !== 0) { + canReset = false; counter[Math.max(0, counter.length - 1)] += entry.increment; } }); } const counterNames: string[] = []; - counterReset.forEach(entry => { - let counter = this.counters[entry.counter]; - counterNames.push(entry.counter); - if (!counter) { - counter = this.counters[entry.counter] = []; - } - counter.push(entry.reset); - }); + if (canReset) { + counterReset.forEach(entry => { + let counter = this.counters[entry.counter]; + counterNames.push(entry.counter); + if (!counter) { + counter = this.counters[entry.counter] = []; + } + counter.push(entry.reset); + }); + } return counterNames; } diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 54e7ba45b..ae1c4cfd5 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -71,7 +71,7 @@ export class DocumentCloner { if window url is about:blank, we can assign the url to current by writing onto the document */ - const iframeLoad = iframeLoader(iframe).then(() => { + const iframeLoad = iframeLoader(iframe).then(async () => { this.scrolledElements.forEach(restoreNodeScroll); if (cloneWindow) { cloneWindow.scrollTo(windowSize.left, windowSize.top); @@ -91,6 +91,10 @@ export class DocumentCloner { return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`); } + if (documentClone.fonts && documentClone.fonts.ready) { + await documentClone.fonts.ready; + } + if (typeof onclone === 'function') { return Promise.resolve() .then(() => onclone(documentClone)) @@ -398,7 +402,8 @@ export class DocumentCloner { ); break; default: - // console.log('ident', token, declaration); + // safari doesn't parse string tokens correctly because of lack of quotes + anonymousReplacedElement.appendChild(document.createTextNode(token.value)); } } }); diff --git a/src/global.d.ts b/src/global.d.ts index 90096c4ba..a94aa9617 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -7,3 +7,7 @@ interface CSSStyleDeclaration { interface DocumentType extends Node, ChildNode { readonly internalSubset: string | null; } + +interface Document { + fonts: any; +} From 8c04f94bc9da1fe45a8161845a7398607f0a7531 Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 27 Sep 2019 13:58:48 +0000 Subject: [PATCH 250/377] chore(release): 1.0.0-rc.5 --- CHANGELOG.md | 11 +++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdfde2e93..44d0a3e44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0-rc.5](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.4...v1.0.0-rc.5) (2019-09-27) + + +### fix + +* correctly respect logging option (#2013) ([34b06d6365603c3b16664ab7804efe94c7945946](https://github.com/niklasvh/html2canvas/commit/34b06d6365603c3b16664ab7804efe94c7945946)), closes [#2013](https://github.com/niklasvh/html2canvas/issues/2013) +* safari pseudo element content parsing (#2018) ([3f599103fb139f218ffe917800e74af2c7cc7ad5](https://github.com/niklasvh/html2canvas/commit/3f599103fb139f218ffe917800e74af2c7cc7ad5)), closes [#2018](https://github.com/niklasvh/html2canvas/issues/2018) +* using existing canvas option (#2017) ([076492042a73d67b30e4562f2964200e07d25f5e](https://github.com/niklasvh/html2canvas/commit/076492042a73d67b30e4562f2964200e07d25f5e)), closes [#2017](https://github.com/niklasvh/html2canvas/issues/2017) + + + # [1.0.0-rc.4](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.3...v1.0.0-rc.4) (2019-09-22) diff --git a/package-lock.json b/package-lock.json index dede688df..d13ddcc18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.4", + "version": "1.0.0-rc.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2f65888c7..5aeb86ccd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.4", + "version": "1.0.0-rc.5", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From e4d52a1ac6c7a91a37988f7b3340eea15b50ed85 Mon Sep 17 00:00:00 2001 From: Liwen Guo Date: Tue, 26 Nov 2019 05:16:07 +0100 Subject: [PATCH 251/377] Fix error in server-side rendering (#2039) --- src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index ee5e9a165..e6bc7a82e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,7 +25,9 @@ const html2canvas = (element: HTMLElement, options: Partial = {}): Prom export default html2canvas; -CacheStorage.setContext(window); +if (typeof window !== "undefined") { + CacheStorage.setContext(window); +} const renderElement = async (element: HTMLElement, opts: Partial): Promise => { const ownerDocument = element.ownerDocument; From f139b513c5cf9673dc727fd47124e0d779891e3a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 25 Nov 2019 20:55:28 -0800 Subject: [PATCH 252/377] fix: #1868 Clone node, Setting className for SVG element raises error (#2079) * fix: #1868 Clone node, Setting className for SVG element raises error * fix: svg element type information --- src/dom/document-cloner.ts | 10 +++++++++- src/dom/node-parser.ts | 3 ++- tests/reftests/images/svg/native_only.html | 5 ++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index ae1c4cfd5..9603ef2a3 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -8,6 +8,7 @@ import { isScriptElement, isSelectElement, isStyleElement, + isSVGElementNode, isTextareaElement, isTextNode } from './node-parser'; @@ -409,10 +410,17 @@ export class DocumentCloner { }); anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; - clone.className += + const newClassName = pseudoElt === PseudoElementType.BEFORE ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}` : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`; + + if (isSVGElementNode(clone)) { + clone.className.baseValue += newClassName; + } else { + clone.className += newClassName; + } + return anonymousReplacedElement; } diff --git a/src/dom/node-parser.ts b/src/dom/node-parser.ts index 238115edf..791247b26 100644 --- a/src/dom/node-parser.ts +++ b/src/dom/node-parser.ts @@ -103,7 +103,8 @@ export const isTextNode = (node: Node): node is Text => node.nodeType === Node.T export const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE; export const isHTMLElementNode = (node: Node): node is HTMLElement => typeof (node as HTMLElement).style !== 'undefined'; - +export const isSVGElementNode = (element: Element): element is SVGElement => + typeof (element as SVGElement).className === 'object'; export const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI'; export const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL'; export const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT'; diff --git a/tests/reftests/images/svg/native_only.html b/tests/reftests/images/svg/native_only.html index 8ab8f5d13..a6a7c255b 100644 --- a/tests/reftests/images/svg/native_only.html +++ b/tests/reftests/images/svg/native_only.html @@ -11,13 +11,16 @@ body { font-family: Arial; } + svg:before { + content: " "; + }
            - + Date: Tue, 14 Apr 2020 11:15:13 +0100 Subject: [PATCH 253/377] Migrate base Chrome profiles to ChromeHeadless (#2203) --- karma.conf.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index dd84a05b5..e8b05b3ed 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -88,7 +88,7 @@ module.exports = function(config) { base: 'Safari' }, Chrome_Stable: { - base: 'Chrome' + base: 'ChromeHeadless' }, Firefox_Stable: { base: 'Firefox' @@ -99,7 +99,7 @@ module.exports = function(config) { const customLaunchers = ciLauncher ? {target_browser: ciLauncher} : { stable_chrome: { - base: 'Chrome' + base: 'ChromeHeadless' }, stable_firefox: { base: 'Firefox' From c366e8790d346ea981b24b7425aef6bf6d7ebcec Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 15 Apr 2020 06:03:04 +0100 Subject: [PATCH 254/377] ci: Azure Pipelines: upgrade from macOS 10.13 -> 10.14 (#2204) --- azure-pipelines.yml | 9 +- ci/browser-tests.yml | 3 + karma.conf.js | 13 +- package-lock.json | 1572 +++++++++++++++++++++++++++++++++++++----- package.json | 4 +- 5 files changed, 1438 insertions(+), 163 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 44a5d2b77..34019b547 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -74,28 +74,29 @@ jobs: parameters: name: Browser_Tests_OSX_Safari_IOS_9 displayName: iOS Simulator Safari 9 - vmImage: 'macOS-10.13' + vmImage: 'macOS-10.14' targetBrowser: Safari_IOS_9 - template: ci/browser-tests.yml parameters: name: Browser_Tests_OSX_Safari_IOS_10 displayName: iOS Simulator Safari 10 - vmImage: 'macOS-10.13' + vmImage: 'macOS-10.14' targetBrowser: Safari_IOS_10 - template: ci/browser-tests.yml parameters: name: Browser_Tests_OSX_Safari_IOS_12 displayName: iOS Simulator Safari 12 - vmImage: 'macOS-10.13' + vmImage: 'macOS-10.14' targetBrowser: Safari_IOS_12 + xcodeSelection: '/Applications/Xcode_10.1.app' - template: ci/browser-tests.yml parameters: name: Browser_Tests_OSX_Safari_Stable displayName: OSX Safari Stable - vmImage: 'macOS-10.13' + vmImage: 'macOS-10.14' targetBrowser: Safari_Stable - template: ci/browser-tests.yml diff --git a/ci/browser-tests.yml b/ci/browser-tests.yml index 5b8e8321e..5ee2b9199 100644 --- a/ci/browser-tests.yml +++ b/ci/browser-tests.yml @@ -31,6 +31,9 @@ jobs: inputs: artifactName: build downloadPath: $(System.DefaultWorkingDirectory) + - ${{ if ne(parameters.xcodeSelection, '') }}: + - script: sudo xcode-select -s "${{ parameters.xcodeSelection }}" + displayName: 'Switch Xcode' - ${{ if not(eq(parameters.xvfb, 'true')) }}: - script: npm run karma displayName: 'Run browser tests' diff --git a/karma.conf.js b/karma.conf.js index e8b05b3ed..36c2a245d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -4,6 +4,7 @@ const path = require('path'); const simctl = require('node-simctl'); const iosSimulator = require('appium-ios-simulator'); +const listenAddress = 'localhost'; const port = 9876; const log = require('karma/lib/logger').create('launcher:MobileSafari'); @@ -13,16 +14,19 @@ module.exports = function(config) { Safari_IOS_9: { base: 'MobileSafari', name: 'iPhone 5s', + platform: 'iOS', sdk: '9.0' }, Safari_IOS_10: { base: 'MobileSafari', name: 'iPhone 5s', + platform: 'iOS', sdk: '10.0' }, Safari_IOS_12: { base: 'MobileSafari', name: 'iPhone 5s', + platform: 'iOS', sdk: '12.1' }, SauceLabs_IE9: { @@ -85,7 +89,7 @@ module.exports = function(config) { flags: ['-extoff'] }, Safari_Stable: { - base: 'Safari' + base: 'SafariNative' }, Chrome_Stable: { base: 'ChromeHeadless' @@ -125,8 +129,8 @@ module.exports = function(config) { } baseBrowserDecorator(this); this.on('start', url => { - simctl.getDevices().then(devices => { - const d = devices[args.sdk].find(d => { + simctl.getDevices(args.sdk, args.platform).then(devices => { + const d = devices.find(d => { return d.name === args.name; }); @@ -208,6 +212,9 @@ module.exports = function(config) { outputDir: 'tmp/junit/' }, + // web server listen address, + listenAddress, + // web server port port, diff --git a/package-lock.json b/package-lock.json index d13ddcc18..cdbef2c07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1528,6 +1528,50 @@ "core-js": "^2.5.7" } }, + "@jimp/plugin-circle": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.9.8.tgz", + "integrity": "sha512-+UStXUPCzPqzTixLC8eVqcFcEa6TS+BEM/6/hyM11TDb9sbiMGeUtgpwZP/euR5H5gfpAQDA1Ppzqhh5fuMDlw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@jimp/utils": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", + "integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, "@jimp/plugin-color": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.0.tgz", @@ -1589,6 +1633,50 @@ "core-js": "^2.5.7" } }, + "@jimp/plugin-fisheye": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.9.8.tgz", + "integrity": "sha512-VnsalrD05f4pxG1msjnkwIFi5QveOqRm4y7VkoZKNX+iqs4TvRnH5+HpBnfdMzX/RXBi+Lf/kpTtuZgbOu/QWw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@jimp/utils": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", + "integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, "@jimp/plugin-flip": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.0.tgz", @@ -1680,6 +1768,94 @@ "core-js": "^2.5.7" } }, + "@jimp/plugin-shadow": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.9.8.tgz", + "integrity": "sha512-t/pE+QS3r1ZUxGIQNmwWDI3c5+/hLU+gxXD+C3EEC47/qk3gTBHpj/xDdGQBoObdT/HRjR048vC2BgBfzjj2hg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@jimp/utils": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", + "integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@jimp/plugin-threshold": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.9.8.tgz", + "integrity": "sha512-WWmC3lnIwOTPvkKu55w4DUY8Ehlzf3nU98bY0QtIzkqxkAOZU5m+lvgC/JxO5FyGiA57j9FLMIf0LsWkjARj7g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@jimp/utils": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", + "integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, "@jimp/plugins": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.1.tgz", @@ -3376,6 +3552,12 @@ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, + "base64-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-1.0.0.tgz", + "integrity": "sha512-BQQZftaO48FcE1Kof9CmXMFaAdqkcNorgc8CxesZv9nMbbTF1EFyQe89UOuh//QMmdtfUDXyO8rgUalemL5ODA==", + "dev": true + }, "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", @@ -10981,10 +11163,10 @@ } } }, - "karma-safari-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz", - "integrity": "sha1-lpgqLMR9BmquccVTursoMZEVos4=", + "karma-safarinative-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-safarinative-launcher/-/karma-safarinative-launcher-1.1.0.tgz", + "integrity": "sha512-vdMjdQDHkSUbOZc8Zq2K5bBC0yJGFEgfrKRJTqt0Um0SC1Rt8drS2wcN6UA3h4LgsL3f1pMcmRSvKucbJE8Qdg==", "dev": true }, "karma-sauce-launcher": { @@ -11016,6 +11198,15 @@ "is-buffer": "^1.1.5" } }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -11159,6 +11350,30 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -11196,6 +11411,12 @@ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", "dev": true }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -11945,6 +12166,12 @@ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -12293,168 +12520,1175 @@ } }, "node-simctl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-5.0.0.tgz", - "integrity": "sha512-yHCCIP81WTvcul9qL5t/evk/eKIBtQ0kGdDfU+rkPQVLm8Wavy2g2NV5p1DqVm1ZBWRTvH2x+2b0Nwezim7klg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-5.3.0.tgz", + "integrity": "sha512-5EJPsorg+ZLxeLk6Cc5Q3hI4WcWkWSWkqQnJEJf3DrM9UekGvpgOUE8uZtr8dTtY/GZCsI30Ksusqm+zGq3NsA==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "appium-support": "^2.26.0", - "appium-xcode": "^3.1.0", + "appium-support": "^2.37.0", + "appium-xcode": "^3.8.0", "asyncbox": "^2.3.1", "lodash": "^4.2.1", + "semver": "^7.0.0", "source-map-support": "^0.5.5", "teen_process": "^1.5.1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.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==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "@jimp/bmp": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.9.8.tgz", + "integrity": "sha512-CZYQPEC3iUBMuaGWrtIG+GKNl93q/PkdudrCKJR/B96dfNngsmoosEm3LuFgJHEcJIfvnJkNqKw74l+zEiqCbg==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "bmp-js": "^0.1.0", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } } - } - } - }, - "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { + }, + "@jimp/core": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.9.8.tgz", + "integrity": "sha512-N4GCjcXb0QwR5GBABDK2xQ3cKyaF7LlCYeJEG9mV7G/ynBoRqJe4JA6YKU9Ww9imGkci/4A594nQo8tUIqdcBw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^3.4.1", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "@jimp/custom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.9.8.tgz", + "integrity": "sha512-1UpJjI7fhX02BWLJ/KEqPwkHH60eNkCNeD6hEd+IZdTwLXfZCfFiM5BVlpgiZYZJSsVoRiAL4ne2Q5mCiKPKyw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/gif": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.9.8.tgz", + "integrity": "sha512-LEbfpcO1sBJIQCJHchZjNlyNxzPjZQQ4X32klpQHZJG58n9FvL7Uuh1rpkrJRbqv3cU3P0ENNtTrsBDxsYwcfA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1", + "omggif": "^1.0.9" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/jpeg": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.9.8.tgz", + "integrity": "sha512-5u29SUzbZ32ZMmOaz3gO0hXatwSCnsvEAXRCKZoPPgbsPoyFAiZKVxjfLzjkeQF6awkvJ8hZni5chM15SNMg+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1", + "jpeg-js": "^0.3.4" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-blit": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.9.8.tgz", + "integrity": "sha512-6xTDomxJybhBcby1IUVaPydZFhxf+V0DRgfDlVK81kR9kSCoshJpzWqDuWrMqjNEPspPE7jRQwHMs0FdU7mVwQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-blur": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.9.8.tgz", + "integrity": "sha512-dqbxuNFBRbmt35iIRacdgma7nlXklmPThsKcGWNTDmqb/hniK5IC+0xSPzBV4qMI2fLGP39LWHqqDZ0xDz14dA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-color": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.9.8.tgz", + "integrity": "sha512-SDHxOQsJHpt75hk6+sSlCPc2B3UJlXosFW+iLZ11xX1Qr0IdDtbfYlIoPmjKQFIDUNzqLSue/z7sKQ1OMZr/QA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-contain": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.9.8.tgz", + "integrity": "sha512-oK52CPt7efozuLYCML7qOmpFeDt3zpU8qq8UZlnjsDs15reU6L8EiUbwYpJvzoEnEOh1ZqamB8F/gymViEO5og==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-cover": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.9.8.tgz", + "integrity": "sha512-nnamtHzMrNd5j5HRSPd1VzpZ8v9YYtUJPtvCdHOOiIjqG72jxJ2kTBlsS3oG5XS64h/2MJwpl/fmmMs1Tj1CmQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-crop": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.9.8.tgz", + "integrity": "sha512-Nv/6AIp4aJmbSIH2uiIqm+kSoShKM8eaX2fyrUTj811kio0hwD3f/vIxrWebvAqwDZjAFIAmMufFoFCVg6caoQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-displace": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.9.8.tgz", + "integrity": "sha512-0OgPjkOVa2xdbqI8P6gBKX/UK36RbaYVrFyXL8Jy9oNF69+LYWyTskuCu9YbGxzlCVjY/JFqQOvrKDbxgMYAKA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-dither": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.9.8.tgz", + "integrity": "sha512-jGM/4ByniZJnmV2fv8hKwyyydXZe/YzvgBcnB8XxzCq8kVR3Imcn+qnd2PEPZzIPKOTH4Cig/zo9Vk9Bs+m5FQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-flip": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.9.8.tgz", + "integrity": "sha512-XbiZ4OfHD6woc0f6Sk7XxB6a7IyMjTRQ4pNU7APjaNxsl3L6qZC8qfCQphWVe3DHx7f3y7jEiPMvNnqRDP1xgA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-gaussian": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.9.8.tgz", + "integrity": "sha512-ZBl5RA6+4XAD+mtqLfiG7u+qd8W5yqq3RBNca8eFqUSVo1v+eB2tzeLel0CWfVC/z6cw93Awm/nVnm6/CL2Oew==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-invert": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.9.8.tgz", + "integrity": "sha512-ESploqCoF6qUv5IWhVLaO5fEcrYZEsAWPFflh6ROiD2mmFKQxfeK+vHnk3IDLHtUwWTkAZQNbk89BVq7xvaNpQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-mask": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.9.8.tgz", + "integrity": "sha512-zSvEisTV4iGsBReitEdnQuGJq9/1xB5mPATadYZmIlp8r5HpD72HQb0WdEtb51/pu9Odt8KAxUf0ASg/PRVUiQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-normalize": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.9.8.tgz", + "integrity": "sha512-dPFBfwTa67K1tRw1leCidQT25R3ozrTUUOpO4jcGFHqXvBTWaR8sML1qxdfOBWs164mE5YpfdTvu6MM/junvCg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-print": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.9.8.tgz", + "integrity": "sha512-nLLPv1/faehRsOjecXXUb6kzhRcZzImO55XuFZ0c90ZyoiHm4UFREwO5sKxHGvpLXS6RnkhvSav4+IWD2qGbEQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1", + "load-bmfont": "^1.4.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-resize": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.9.8.tgz", + "integrity": "sha512-L80NZ+HKsiKFyeDc6AfneC4+5XACrdL2vnyAVfAAsb3pmamgT/jDInWvvGhyI0Y76vx2w6XikplzEznW/QQvWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-rotate": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.9.8.tgz", + "integrity": "sha512-bpqzQheISYnBXKyU1lIj46uR7mRs0UhgEREWK70HnvFJSlRshdcoNMIrKamyrJeFdJrkYPSfR/a6D0d5zsWf1Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugin-scale": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.9.8.tgz", + "integrity": "sha512-QU3ZS4Lre8nN66U9dKCOC4FNfaOh/QJFYUmQPKpPS924oYbtnm4OlmsdfpK2hVMSVVyVOis8M+xpA1rDBnIp7w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/plugins": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.9.8.tgz", + "integrity": "sha512-tD+cxS9SuEZaQ1hhAkNKw9TkUAqfoBAhdWPBrEZDr/GvGPrvJR4pYmmpSYhc5IZmMbXfQayHTTGqjj8D18bToA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.9.8", + "@jimp/plugin-blur": "^0.9.8", + "@jimp/plugin-circle": "^0.9.8", + "@jimp/plugin-color": "^0.9.8", + "@jimp/plugin-contain": "^0.9.8", + "@jimp/plugin-cover": "^0.9.8", + "@jimp/plugin-crop": "^0.9.8", + "@jimp/plugin-displace": "^0.9.8", + "@jimp/plugin-dither": "^0.9.8", + "@jimp/plugin-fisheye": "^0.9.8", + "@jimp/plugin-flip": "^0.9.8", + "@jimp/plugin-gaussian": "^0.9.8", + "@jimp/plugin-invert": "^0.9.8", + "@jimp/plugin-mask": "^0.9.8", + "@jimp/plugin-normalize": "^0.9.8", + "@jimp/plugin-print": "^0.9.8", + "@jimp/plugin-resize": "^0.9.8", + "@jimp/plugin-rotate": "^0.9.8", + "@jimp/plugin-scale": "^0.9.8", + "@jimp/plugin-shadow": "^0.9.8", + "@jimp/plugin-threshold": "^0.9.8", + "core-js": "^3.4.1", + "timm": "^1.6.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/png": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.9.8.tgz", + "integrity": "sha512-9CqR8d40zQCDhbnXHqcwkAMnvlV0vk9xSyE6LHjkYHS7x18Unsz5txQdsaEkEcXxCrOQSoWyITfLezlrWXRJAA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.9.8", + "core-js": "^3.4.1", + "pngjs": "^3.3.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/tiff": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.9.8.tgz", + "integrity": "sha512-eMxcpJivJqMByn2dZxUHLeh6qvVs5J/52kBF3TFa3C922OJ97D9l1C1h0WKUCBqFMWzMYapQQ4vwnLgpJ5tkow==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1", + "utif": "^2.0.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/types": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.9.8.tgz", + "integrity": "sha512-H5y/uqt0lqJ/ZN8pWqFG+pv8jPAppMKkTMByuC8YBIjWSsornwv44hjiWl93sbYhduLZY8ubz/CbX9jH2X6EwA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.9.8", + "@jimp/gif": "^0.9.8", + "@jimp/jpeg": "^0.9.8", + "@jimp/png": "^0.9.8", + "@jimp/tiff": "^0.9.8", + "core-js": "^3.4.1", + "timm": "^1.6.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "@jimp/utils": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.9.8.tgz", + "integrity": "sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "core-js": "^3.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "appium-support": { + "version": "2.43.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.43.0.tgz", + "integrity": "sha512-HELlIM6J0CI/ALHKbr8Z8TNjrnyw1QVdzLKCUX/l4Gw/MmaS4QvHNpuy3Bdd0MCxX/aw76q2F58HmCiwzHtAkg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "archiver": "^3.1.1", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.2", + "extract-zip": "^1.6.0", + "glob": "^7.1.2", + "jimp": "^0.9.0", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lodash": "^4.2.1", + "md5-file": "^4.0.0", + "mjpeg-server": "^0.3.0", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^3.0.0", + "request": "^2.83.0", + "request-promise": "^4.2.2", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^7.0.2", + "which": "^2.0.0", + "yauzl": "^2.7.0" + } + }, + "appium-xcode": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", + "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" + } + }, + "archiver": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", + "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^2.6.3", + "buffer-crc32": "^0.2.1", + "glob": "^7.1.4", + "readable-stream": "^3.4.0", + "tar-stream": "^2.1.0", + "zip-stream": "^2.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, + "bl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", + "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, + "buffer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "compress-commons": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", + "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^3.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "crc32-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", + "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^3.4.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "jimp": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.9.8.tgz", + "integrity": "sha512-DHN4apKMwLIvD/TKO9tFfPuankNuVK98vCwHm/Jv9z5cJnrd38xhi+4I7IAGmDU3jIDlrEVhzTkFH1Ymv5yTQQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.9.8", + "@jimp/plugins": "^0.9.8", + "@jimp/types": "^0.9.8", + "core-js": "^3.4.1", + "regenerator-runtime": "^0.13.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", + "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "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 + }, + "tar-stream": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", + "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "dev": true, + "requires": { + "bl": "^4.0.1", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "zip-stream": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^2.1.1", + "readable-stream": "^3.4.0" + } + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.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==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", @@ -12980,6 +14214,12 @@ } } }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -13950,6 +15190,15 @@ } } }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "sauce-connect-launcher": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-1.2.5.tgz", @@ -15773,6 +17022,15 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, "ts-jest": { "version": "24.1.0", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", @@ -16207,6 +17465,12 @@ "tmp": "0.0.x" } }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, "utif": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", diff --git a/package.json b/package.json index 5aeb86ccd..f4406a38a 100644 --- a/package.json +++ b/package.json @@ -64,10 +64,10 @@ "karma-ie-launcher": "^1.0.0", "karma-junit-reporter": "^1.2.0", "karma-mocha": "^1.3.0", - "karma-safari-launcher": "^1.0.0", + "karma-safarinative-launcher": "^1.1.0", "karma-sauce-launcher": "^2.0.2", "mocha": "^6.1.4", - "node-simctl": "^5.0.0", + "node-simctl": "^5.3.0", "platform": "1.3.4", "prettier": "1.17.0", "replace-in-file": "^3.0.0", From 4dd4a69c7a2e46c54b5d223fbc94fa4066f19a3c Mon Sep 17 00:00:00 2001 From: James Addison Date: Sun, 19 Apr 2020 09:46:25 +0100 Subject: [PATCH 255/377] tests(reftests): Upgrade to fontawesome v5.13.0 (#2202) * support font-family names with numbers in (e.g. Font Awesome 5) * check for spaces in font family names first so generic font names don't get wrapped in quotes * Update reftest to use fontawesome 5.13.0 * Add fontawesome v4 shims * Revert "Merge remote-tracking branch 'grahamkane/master' into issue-1948-test-coverage" This reverts commit 5211ab4065f675d6b3a0896eaabef45fdca4f29f, reversing changes made to ae0bd29d37109023897514ef854cc54452f39eed. * Revert "Revert "Merge remote-tracking branch 'grahamkane/master' into issue-1948-test-coverage"" This reverts commit 4911fe25f4ba081f70a9871d6eafc4735f7685f3. * Revert "Merge remote-tracking branch 'grahamkane/master' into issue-1948-test-coverage" This reverts commit 5211ab4065f675d6b3a0896eaabef45fdca4f29f, reversing changes made to ae0bd29d37109023897514ef854cc54452f39eed. Co-authored-by: Graham Kane --- tests/reftests/text/fontawesome.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/reftests/text/fontawesome.html b/tests/reftests/text/fontawesome.html index 672e04a11..bd05df7aa 100644 --- a/tests/reftests/text/fontawesome.html +++ b/tests/reftests/text/fontawesome.html @@ -3,7 +3,8 @@ fontawesome icons - + + + + + +
            +
            +
            +
            + + From 1514220812cfb22d64d0974558d9c14fe90a41d3 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 9 Aug 2020 14:14:50 +0800 Subject: [PATCH 286/377] fix: external styles on svg elements (#2320) --- .../property-descriptors/__tests__/font-family.ts | 15 ++++----------- src/css/property-descriptors/font-family.ts | 2 +- src/dom/document-cloner.ts | 13 ++++++------- src/dom/node-parser.ts | 2 +- tests/reftests/images/svg/native_only.html | 11 +++++++++++ 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/css/property-descriptors/__tests__/font-family.ts b/src/css/property-descriptors/__tests__/font-family.ts index 4400bb214..f98a9ce49 100644 --- a/src/css/property-descriptors/__tests__/font-family.ts +++ b/src/css/property-descriptors/__tests__/font-family.ts @@ -6,26 +6,19 @@ const fontFamilyParse = (value: string) => fontFamily.parse(Parser.parseValues(v describe('property-descriptors', () => { describe('font-family', () => { - it('sans-serif', () => - deepEqual(fontFamilyParse('sans-serif'), [ - "sans-serif", - ])); + it('sans-serif', () => deepEqual(fontFamilyParse('sans-serif'), ['sans-serif'])); it('great fonts 40 library', () => - deepEqual(fontFamilyParse('great fonts 40 library'), [ - "'great fonts 40 library'", - ])); + deepEqual(fontFamilyParse('great fonts 40 library'), ["'great fonts 40 library'"])); it('preferred font, "quoted fallback font", font', () => deepEqual(fontFamilyParse('preferred font, "quoted fallback font", font'), [ "'preferred font'", "'quoted fallback font'", - "font" + 'font' ])); it("'escaping test\\'s font'", () => - deepEqual(fontFamilyParse("'escaping test\\'s font'"), [ - "'escaping test\'s font'", - ])); + deepEqual(fontFamilyParse("'escaping test\\'s font'"), ["'escaping test's font'"])); }); }); diff --git a/src/css/property-descriptors/font-family.ts b/src/css/property-descriptors/font-family.ts index 8ebab4fed..624166c35 100644 --- a/src/css/property-descriptors/font-family.ts +++ b/src/css/property-descriptors/font-family.ts @@ -32,6 +32,6 @@ export const fontFamily: IPropertyListDescriptor = { if (accumulator.length) { results.push(accumulator.join(' ')); } - return results.map(result => result.indexOf(' ') === -1 ? result : `'${result}'`); + return results.map(result => (result.indexOf(' ') === -1 ? result : `'${result}'`)); } }; diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index d3e347cf5..2e93a025b 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -116,7 +116,7 @@ export class DocumentCloner { return iframeLoad; } - createElementClone(node: HTMLElement): HTMLElement { + createElementClone(node: T): HTMLElement | SVGElement { if (isCanvasElement(node)) { return this.createCanvasClone(node); } @@ -129,8 +129,7 @@ export class DocumentCloner { return this.createStyleClone(node); } - const clone = node.cloneNode(false) as HTMLElement; - + const clone = node.cloneNode(false) as T; // @ts-ignore if (isImageElement(clone) && clone.loading === 'lazy') { // @ts-ignore @@ -266,14 +265,14 @@ export class DocumentCloner { const window = node.ownerDocument.defaultView; - if (isHTMLElementNode(node) && window) { + if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) { const clone = this.createElementClone(node); const style = window.getComputedStyle(node); const styleBefore = window.getComputedStyle(node, ':before'); const styleAfter = window.getComputedStyle(node, ':after'); - if (this.referenceElement === node) { + if (this.referenceElement === node && isHTMLElementNode(clone)) { this.clonedReferenceElement = clone; } if (isBodyElement(clone)) { @@ -307,7 +306,7 @@ export class DocumentCloner { this.counters.pop(counters); - if (style && this.options.copyStyles && !isIFrameElement(node)) { + if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) { copyCSSStyles(style, clone); } @@ -487,7 +486,7 @@ const iframeLoader = (iframe: HTMLIFrameElement): Promise => }); }; -export const copyCSSStyles = (style: CSSStyleDeclaration, target: HTMLElement): HTMLElement => { +export const copyCSSStyles = (style: CSSStyleDeclaration, target: T): T => { // Edge does not provide value for cssText for (let i = style.length - 1; i >= 0; i--) { const property = style.item(i); diff --git a/src/dom/node-parser.ts b/src/dom/node-parser.ts index 791247b26..adf4256fd 100644 --- a/src/dom/node-parser.ts +++ b/src/dom/node-parser.ts @@ -102,7 +102,7 @@ const createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles export const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE; export const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE; export const isHTMLElementNode = (node: Node): node is HTMLElement => - typeof (node as HTMLElement).style !== 'undefined'; + isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node); export const isSVGElementNode = (element: Element): element is SVGElement => typeof (element as SVGElement).className === 'object'; export const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI'; diff --git a/tests/reftests/images/svg/native_only.html b/tests/reftests/images/svg/native_only.html index a6a7c255b..95709a83d 100644 --- a/tests/reftests/images/svg/native_only.html +++ b/tests/reftests/images/svg/native_only.html @@ -15,6 +15,12 @@ content: " "; } + +
            @@ -28,6 +34,11 @@ style="fill:#40aa54;fill-opacity:1;stroke:#20552a;stroke-width:7.99999952;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> + + html + 2 + canvas +
            From 3982df1492bdc40a8e5fa16877cc0291883c8e1a Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 9 Aug 2020 14:49:12 +0000 Subject: [PATCH 287/377] chore(release): 1.0.0-rc.7 --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 194b5385e..18a1e8b86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0-rc.7](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.6...v1.0.0-rc.7) (2020-08-09) + + +### fix + +* concatenate contiguous font-family tokens (#2219) ([bacfadf](https://github.com/niklasvh/html2canvas/commit/bacfadff96d907d9e8ab4ef515ca6487de9e51fc)), closes [#2219](https://github.com/niklasvh/html2canvas/issues/2219) +* external styles on svg elements (#2320) ([1514220](https://github.com/niklasvh/html2canvas/commit/1514220812cfb22d64d0974558d9c14fe90a41d3)), closes [#2320](https://github.com/niklasvh/html2canvas/issues/2320) + + + # [1.0.0-rc.6](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.5...v1.0.0-rc.6) (2020-08-08) diff --git a/package-lock.json b/package-lock.json index a37c8fadd..717a74683 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 963354acc..cd361b225 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.6", + "version": "1.0.0-rc.7", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 82b7da558c342e7f53d298bb1d843a5db86c3b21 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 29 Dec 2020 12:29:00 +0800 Subject: [PATCH 288/377] fix: opacity with overflow hidden (#2450) --- src/render/canvas/canvas-renderer.ts | 7 +++++-- src/render/effects.ts | 23 ++++++++++++++++------- src/render/stacking-context.ts | 6 +++++- tests/reftests/overflow/overflow.html | 1 + 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 93ca92340..f6d3a4af1 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -22,7 +22,7 @@ import {contentBox} from '../box-sizing'; import {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container'; import {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container'; import {ReplacedElementContainer} from '../../dom/replaced-elements/index'; -import {EffectTarget, IElementEffect, isClipEffect, isTransformEffect} from '../effects'; +import {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects'; import {contains} from '../../core/bitwise'; import {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient'; import {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage'; @@ -99,6 +99,10 @@ export class CanvasRenderer { applyEffect(effect: IElementEffect) { this.ctx.save(); + if (isOpacityEffect(effect)) { + this.ctx.globalAlpha = effect.opacity; + } + if (isTransformEffect(effect)) { this.ctx.translate(effect.offsetX, effect.offsetY); this.ctx.transform( @@ -128,7 +132,6 @@ export class CanvasRenderer { async renderStack(stack: StackingContext) { const styles = stack.element.container.styles; if (styles.isVisible()) { - this.ctx.globalAlpha = styles.opacity; await this.renderStackContent(stack); } } diff --git a/src/render/effects.ts b/src/render/effects.ts index f9df190df..1bb428349 100644 --- a/src/render/effects.ts +++ b/src/render/effects.ts @@ -3,7 +3,8 @@ import {Path} from './path'; export const enum EffectType { TRANSFORM = 0, - CLIP = 1 + CLIP = 1, + OPACITY = 2 } export const enum EffectTarget { @@ -17,33 +18,41 @@ export interface IElementEffect { } export class TransformEffect implements IElementEffect { - readonly type: EffectType; - readonly target: number; + readonly type: EffectType = EffectType.TRANSFORM; + readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT; readonly offsetX: number; readonly offsetY: number; readonly matrix: Matrix; constructor(offsetX: number, offsetY: number, matrix: Matrix) { - this.type = EffectType.TRANSFORM; this.offsetX = offsetX; this.offsetY = offsetY; this.matrix = matrix; - this.target = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT; } } export class ClipEffect implements IElementEffect { - readonly type: EffectType; + readonly type: EffectType = EffectType.CLIP; readonly target: number; readonly path: Path[]; constructor(path: Path[], target: EffectTarget) { - this.type = EffectType.CLIP; this.target = target; this.path = path; } } +export class OpacityEffect implements IElementEffect { + readonly type: EffectType = EffectType.OPACITY; + readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT; + readonly opacity: number; + + constructor(opacity: number) { + this.opacity = opacity; + } +} + export const isTransformEffect = (effect: IElementEffect): effect is TransformEffect => effect.type === EffectType.TRANSFORM; export const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP; +export const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY; diff --git a/src/render/stacking-context.ts b/src/render/stacking-context.ts index 27787b619..5cba00bfd 100644 --- a/src/render/stacking-context.ts +++ b/src/render/stacking-context.ts @@ -1,7 +1,7 @@ import {ElementContainer, FLAGS} from '../dom/element-container'; import {contains} from '../core/bitwise'; import {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves'; -import {ClipEffect, EffectTarget, IElementEffect, TransformEffect} from './effects'; +import {ClipEffect, EffectTarget, IElementEffect, OpacityEffect, TransformEffect} from './effects'; import {OVERFLOW} from '../css/property-descriptors/overflow'; import {equalPath} from './path'; import {DISPLAY} from '../css/property-descriptors/display'; @@ -41,6 +41,10 @@ export class ElementPaint { this.container = element; this.effects = parentStack.slice(0); this.curves = new BoundCurves(element); + if (element.styles.opacity < 1) { + this.effects.push(new OpacityEffect(element.styles.opacity)); + } + if (element.styles.transform !== null) { const offsetX = element.bounds.left + element.styles.transformOrigin[0].number; const offsetY = element.bounds.top + element.styles.transformOrigin[1].number; diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index 43618a56c..6a9f0e9a6 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -128,5 +128,6 @@

            Overflow: hidden

            + From 7222aba1b42138c3d466525172411b3d9869095f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 29 Dec 2020 15:25:08 +0800 Subject: [PATCH 289/377] ci: update docs publish action (#2451) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43322644f..6efdad067 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -297,7 +297,7 @@ jobs: name: docs path: docs - name: Publish docs - uses: JamesIves/github-pages-deploy-action@3.5.9 + uses: JamesIves/github-pages-deploy-action@3.7.1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BRANCH: gh-pages From ba172678f07f962e9f54b398df087e86217d7a13 Mon Sep 17 00:00:00 2001 From: flyskyko Date: Fri, 7 May 2021 18:32:51 +0900 Subject: [PATCH 290/377] fix top right border radius (#2522) --- src/render/bound-curves.ts | 2 +- tests/reftests/border/radius.html | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/render/bound-curves.ts b/src/render/bound-curves.ts index 0b260bd4b..6f19899dd 100644 --- a/src/render/bound-curves.ts +++ b/src/render/bound-curves.ts @@ -91,7 +91,7 @@ export class BoundCurves { ? getCurvePoints( bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth), bounds.top + borderTopWidth, - topWidth > bounds.width + borderLeftWidth ? 0 : trh - borderLeftWidth, + topWidth > bounds.width + borderRightWidth ? 0 : trh - borderRightWidth, trv - borderTopWidth, CORNER.TOP_RIGHT ) diff --git a/tests/reftests/border/radius.html b/tests/reftests/border/radius.html index 37136e18f..1949c2fdf 100644 --- a/tests/reftests/border/radius.html +++ b/tests/reftests/border/radius.html @@ -63,6 +63,13 @@ border-radius: 200px; } + .box7 { + border-width: 10px 10px 10px 1px; + border-left-color: transparent; + border-top-color: red; + border-right-color: green; + } + .gauge{ display: inline-block; width: 100px; @@ -91,6 +98,7 @@
             
             
             
            +
             
            From ff35c7dbd33f863f5b614d778baf8cb1e8dded60 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 8 May 2021 18:32:03 +0800 Subject: [PATCH 291/377] test: update karma runner (#2524) * test: update karma runner * fix: Promise polyfill for testrunner --- karma.js | 103 - package-lock.json | 35888 ++++++++++++++++++++++++++++++++++-------- package.json | 21 +- tests/karma.ts | 32 + tests/server.js | 24 - tests/server.ts | 93 + tests/testrunner.ts | 81 +- tests/types.ts | 13 + 8 files changed, 29796 insertions(+), 6459 deletions(-) delete mode 100644 karma.js create mode 100644 tests/karma.ts delete mode 100644 tests/server.js create mode 100644 tests/server.ts create mode 100644 tests/types.ts diff --git a/karma.js b/karma.js deleted file mode 100644 index acd06a935..000000000 --- a/karma.js +++ /dev/null @@ -1,103 +0,0 @@ -const Server = require('karma').Server; -const cfg = require('karma').config; -const path = require('path'); -const proxy = require('html2canvas-proxy'); -const karmaConfig = cfg.parseConfig(path.resolve('./karma.conf.js')); -const server = new Server(karmaConfig, (exitCode) => { - console.log('Karma has exited with ' + exitCode); - process.exit(exitCode) -}); - -const fs = require('fs'); -const express = require('express'); -const bodyParser = require('body-parser'); -const cors = require('cors'); -const filenamifyUrl = require('filenamify-url'); - -const mkdirp = require('mkdirp'); -const screenshotFolder = './tmp/reftests'; -const metadataFolder = './tmp/reftests/metadata'; - -mkdirp.sync(path.resolve(__dirname, screenshotFolder)); -mkdirp.sync(path.resolve(__dirname, metadataFolder)); - -const CORS_PORT = 8081; -const corsApp = express(); -corsApp.use('/proxy', proxy()); -corsApp.use('/cors', cors(), express.static(path.resolve(__dirname))); -corsApp.use('/', express.static(path.resolve(__dirname, '/tests'))); -corsApp.use((error, req, res, next) => { - console.error(error); - next(); -}); - -process.on('uncaughtException', (err) => { - if(err.errno === 'EADDRINUSE') { - console.warn(err); - } else { - console.log(err); - process.exit(1); - } -}); - -corsApp.listen(CORS_PORT, () => { - console.log(`CORS server running on port ${CORS_PORT}`); -}); - -const app = express(); -app.use(cors()); -app.use((req, res, next) => { - // IE9 doesn't set headers for cross-domain ajax requests - if(typeof(req.headers['content-type']) === 'undefined'){ - req.headers['content-type'] = "application/json"; - } - next(); -}); -app.use( - bodyParser.json({ - limit: '15mb', - type: '*/*' - }) -); - -const prefix = 'data:image/png;base64,'; - -const writeScreenshot = (buffer, body) => { - const filename = `${filenamifyUrl( - body.test.replace(/^\/tests\/reftests\//, '').replace(/\.html$/, ''), - {replacement: '-'} - )}!${[process.env.TARGET_BROWSER, body.platform.name, body.platform.version].join('-')}`; - - fs.writeFileSync(path.resolve(__dirname, screenshotFolder, `${filename}.png`), buffer); - return filename; -}; - -app.post('/screenshot', (req, res) => { - if (!req.body || !req.body.screenshot) { - return res.sendStatus(400); - } - - const buffer = new Buffer(req.body.screenshot.substring(prefix.length), 'base64'); - const filename = writeScreenshot(buffer, req.body); - fs.writeFileSync(path.resolve(__dirname, metadataFolder, `${filename}.json`), JSON.stringify({ - windowWidth: req.body.windowWidth, - windowHeight: req.body.windowHeight, - platform: req.body.platform, - devicePixelRatio: req.body.devicePixelRatio, - test: req.body.test, - id: process.env.TARGET_BROWSER, - screenshot: filename - })); - return res.sendStatus(200); -}); - -app.use((error, req, res, next) => { - console.error(error); - next(); -}); - -const listener = app.listen(8000, () => { - server.start(); -}); - - diff --git a/package-lock.json b/package-lock.json index 717a74683..0a9df6cb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,96 @@ { "name": "html2canvas", "version": "1.0.0-rc.7", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@babel/cli": { + "packages": { + "": { + "version": "1.0.0-rc.7", + "license": "MIT", + "dependencies": { + "css-line-break": "1.1.1" + }, + "devDependencies": { + "@babel/cli": "^7.4.3", + "@babel/core": "^7.4.3", + "@babel/preset-env": "^7.4.3", + "@babel/preset-flow": "^7.0.0", + "@types/chai": "^4.1.7", + "@types/express": "^4.17.11", + "@types/glob": "^7.1.1", + "@types/jest": "^24.0.18", + "@types/karma": "^6.3.0", + "@types/mocha": "^5.2.6", + "@types/node": "^11.13.2", + "@types/platform": "^1.3.2", + "@types/promise-polyfill": "^6.0.3", + "@typescript-eslint/eslint-plugin": "^1.7.0", + "@typescript-eslint/parser": "^1.7.0", + "appium-ios-simulator": "^3.10.0", + "babel-eslint": "^10.0.1", + "babel-loader": "^8.0.5", + "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-dev-expression": "^0.2.1", + "base64-arraybuffer": "0.2.0", + "body-parser": "^1.18.3", + "chai": "4.1.1", + "chromeless": "^1.5.2", + "cors": "2.8.4", + "es6-promise": "^4.2.6", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-plugin-prettier": "3.0.1", + "express": "^4.17.1", + "filenamify-url": "1.0.0", + "glob": "7.1.3", + "html2canvas-proxy": "1.0.1", + "jest": "^24.9.0", + "jquery": "^3.5.1", + "js-polyfills": "^0.1.42", + "karma": "^6.3.2", + "karma-chrome-launcher": "^3.1.0", + "karma-edge-launcher": "^0.4.2", + "karma-firefox-launcher": "^2.1.0", + "karma-ie-launcher": "^1.0.0", + "karma-junit-reporter": "^2.0.1", + "karma-mocha": "^2.0.1", + "karma-safarinative-launcher": "^1.1.0", + "karma-sauce-launcher": "^2.0.2", + "mocha": "^6.1.4", + "node-simctl": "^5.3.0", + "platform": "1.3.4", + "prettier": "1.17.0", + "replace-in-file": "^3.0.0", + "rimraf": "2.6.1", + "rollup": "^1.10.1", + "rollup-plugin-commonjs": "^9.3.4", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-node-resolve": "^4.2.3", + "rollup-plugin-sourcemaps": "^0.4.2", + "rollup-plugin-typescript2": "^0.21.0", + "serve-index": "^1.9.1", + "slash": "1.0.0", + "standard-version": "^8.0.2", + "ts-jest": "^24.1.0", + "ts-loader": "^5.3.3", + "ts-node": "^8.0.3", + "typescript": "^3.4.3", + "uglify-js": "^3.5.11", + "uglifyjs-webpack-plugin": "^1.1.2", + "webpack": "^4.29.6", + "webpack-cli": "^3.3.12", + "yargs": "^17.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@babel/cli": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.3.tgz", "integrity": "sha512-cbC5H9iTDV9H7sMxK5rUm18UbdVPNTPqgdzmQAkOUP3YLysgDWLZaysVAfylK49rgTlzL01a6tXyq9rCb3yLhQ==", "dev": true, - "requires": { - "chokidar": "^2.0.4", + "dependencies": { "commander": "^2.8.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", @@ -21,36 +101,44 @@ "slash": "^2.0.0", "source-map": "^0.5.0" }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "optionalDependencies": { + "chokidar": "^2.0.4" } }, - "@babel/code-frame": { + "node_modules/@babel/cli/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/cli/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.0.0" } }, - "@babel/core": { + "node_modules/@babel/core": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.0", "@babel/helpers": "^7.4.3", @@ -66,244 +154,252 @@ "semver": "^5.4.1", "source-map": "^0.5.0" }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "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" - } - }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } + "ms": "^2.1.1" } }, - "@babel/generator": { + "node_modules/@babel/core/node_modules/json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/core/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/generator": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.4.0", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" + } + }, + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" }, - "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } + "engines": { + "node": ">=4" } }, - "@babel/helper-annotate-as-pure": { + "node_modules/@babel/generator/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-annotate-as-pure": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-explode-assignable-expression": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@babel/helper-call-delegate": { + "node_modules/@babel/helper-call-delegate": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-hoist-variables": "^7.4.0", "@babel/traverse": "^7.4.0", "@babel/types": "^7.4.0" } }, - "@babel/helper-define-map": { + "node_modules/@babel/helper-define-map": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-function-name": "^7.1.0", "@babel/types": "^7.4.0", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } } }, - "@babel/helper-explode-assignable-expression": { + "node_modules/@babel/helper-define-map/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", "dev": true, - "requires": { + "dependencies": { "@babel/traverse": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@babel/helper-function-name": { + "node_modules/@babel/helper-function-name": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-get-function-arity": "^7.0.0", "@babel/template": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@babel/helper-get-function-arity": { + "node_modules/@babel/helper-get-function-arity": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-hoist-variables": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.4.0" } }, - "@babel/helper-member-expression-to-functions": { + "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@babel/helper-module-imports": { + "node_modules/@babel/helper-module-imports": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@babel/helper-module-transforms": { + "node_modules/@babel/helper-module-transforms": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-simple-access": "^7.1.0", "@babel/helper-split-export-declaration": "^7.0.0", "@babel/template": "^7.2.2", "@babel/types": "^7.2.2", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } } }, - "@babel/helper-optimise-call-expression": { + "node_modules/@babel/helper-module-transforms/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-optimise-call-expression": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", "dev": true }, - "@babel/helper-regex": { + "node_modules/@babel/helper-regex": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", "dev": true, - "requires": { - "lodash": "^4.17.11" - }, "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } + "lodash": "^4.17.11" } }, - "@babel/helper-remap-async-to-generator": { + "node_modules/@babel/helper-regex/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-wrap-function": "^7.1.0", "@babel/template": "^7.1.0", @@ -311,301 +407,322 @@ "@babel/types": "^7.0.0" } }, - "@babel/helper-replace-supers": { + "node_modules/@babel/helper-replace-supers": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-member-expression-to-functions": "^7.0.0", "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/traverse": "^7.4.0", "@babel/types": "^7.4.0" } }, - "@babel/helper-simple-access": { + "node_modules/@babel/helper-simple-access": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.4.0" } }, - "@babel/helper-wrap-function": { + "node_modules/@babel/helper-wrap-function": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-function-name": "^7.1.0", "@babel/template": "^7.1.0", "@babel/traverse": "^7.1.0", "@babel/types": "^7.2.0" } }, - "@babel/helpers": { + "node_modules/@babel/helpers": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.4.0", "@babel/traverse": "^7.4.3", "@babel/types": "^7.4.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, - "requires": { + "dependencies": { "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, - "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-proposal-json-strings": { + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-json-strings": "^7.2.0" } }, - "@babel/plugin-proposal-object-rest-spread": { + "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { + "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, - "@babel/plugin-proposal-unicode-property-regex": { + "node_modules/@babel/plugin-proposal-unicode-property-regex": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.0.0", "regexpu-core": "^4.5.4" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex/node_modules/regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-syntax-async-generators": { + "node_modules/@babel/plugin-proposal-unicode-property-regex/node_modules/regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex/node_modules/regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-flow": { + "node_modules/@babel/plugin-syntax-flow": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-async-to-generator": { + "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-remap-async-to-generator": "^7.1.0" } }, - "@babel/plugin-transform-block-scoped-functions": { + "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-block-scoping": { + "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } } }, - "@babel/plugin-transform-classes": { + "node_modules/@babel/plugin-transform-block-scoping/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/plugin-transform-classes": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-define-map": "^7.4.0", "@babel/helper-function-name": "^7.1.0", @@ -614,367 +731,383 @@ "@babel/helper-replace-supers": "^7.4.0", "@babel/helper-split-export-declaration": "^7.4.0", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", - "dev": true - } } }, - "@babel/plugin-transform-computed-properties": { + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-destructuring": { + "node_modules/@babel/plugin-transform-destructuring": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-dotall-regex": { + "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.3", "regexpu-core": "^4.5.4" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex/node_modules/regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-transform-duplicate-keys": { + "node_modules/@babel/plugin-transform-dotall-regex/node_modules/regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "node_modules/@babel/plugin-transform-dotall-regex/node_modules/regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-exponentiation-operator": { + "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-flow-strip-types": { + "node_modules/@babel/plugin-transform-flow-strip-types": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz", "integrity": "sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-flow": "^7.2.0" } }, - "@babel/plugin-transform-for-of": { + "node_modules/@babel/plugin-transform-for-of": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-function-name": { + "node_modules/@babel/plugin-transform-function-name": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-function-name": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-literals": { + "node_modules/@babel/plugin-transform-literals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-member-expression-literals": { + "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-modules-amd": { + "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-modules-commonjs": { + "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.4.3", "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-simple-access": "^7.1.0" } }, - "@babel/plugin-transform-modules-systemjs": { + "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-hoist-variables": "^7.4.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-modules-umd": { + "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", "dev": true, - "requires": { + "dependencies": { "regexp-tree": "^0.1.0" } }, - "@babel/plugin-transform-new-target": { + "node_modules/@babel/plugin-transform-new-target": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-object-super": { + "node_modules/@babel/plugin-transform-object-super": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-replace-supers": "^7.1.0" } }, - "@babel/plugin-transform-parameters": { + "node_modules/@babel/plugin-transform-parameters": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-call-delegate": "^7.4.0", "@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-property-literals": { + "node_modules/@babel/plugin-transform-property-literals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-regenerator": { + "node_modules/@babel/plugin-transform-regenerator": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", "dev": true, - "requires": { + "dependencies": { "regenerator-transform": "^0.13.4" - }, + } + }, + "node_modules/@babel/plugin-transform-regenerator/node_modules/regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "dev": true, "dependencies": { - "regenerator-transform": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", - "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - } + "private": "^0.1.6" } }, - "@babel/plugin-transform-reserved-words": { + "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-shorthand-properties": { + "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-spread": { + "node_modules/@babel/plugin-transform-spread": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-sticky-regex": { + "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.0.0" } }, - "@babel/plugin-transform-template-literals": { + "node_modules/@babel/plugin-transform-template-literals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-typeof-symbol": { + "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-unicode-regex": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/helper-regex": "^7.4.3", "regexpu-core": "^4.5.4" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex/node_modules/regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex/node_modules/regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "node_modules/@babel/plugin-transform-unicode-regex/node_modules/regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "@babel/preset-env": { + "node_modules/@babel/preset-env": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz", "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.2.0", @@ -1023,63 +1156,67 @@ "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" - }, + } + }, + "node_modules/@babel/preset-env/node_modules/browserslist": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", + "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "dev": true, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } + "caniuse-lite": "^1.0.30000955", + "electron-to-chromium": "^1.3.122", + "node-releases": "^1.1.13" + }, + "bin": { + "browserslist": "cli.js" } }, - "@babel/preset-flow": { + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/preset-flow": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.0.0.tgz", "integrity": "sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-transform-flow-strip-types": "^7.0.0" } }, - "@babel/runtime": { + "node_modules/@babel/runtime": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", "dev": true, - "requires": { + "dependencies": { "regenerator-runtime": "^0.13.2" } }, - "@babel/template": { + "node_modules/@babel/template": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.4.0", "@babel/types": "^7.4.0" } }, - "@babel/traverse": { + "node_modules/@babel/traverse": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.0", "@babel/helper-function-name": "^7.1.0", @@ -1089,105 +1226,115 @@ "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" - }, + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "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" - } - }, - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", - "dev": true - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "ms": "^2.1.1" } }, - "@babel/types": { + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/traverse/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/@babel/types": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, - "requires": { + "dependencies": { "esutils": "^2.0.2", "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } } }, - "@cnakazawa/watch": { + "node_modules/@babel/types/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/@babel/types/node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cnakazawa/watch": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", "dev": true, - "requires": { + "dependencies": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" } }, - "@jest/console": { + "node_modules/@cnakazawa/watch/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/@jest/console": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, - "requires": { + "dependencies": { "@jest/source-map": "^24.9.0", "chalk": "^2.0.1", "slash": "^2.0.0" }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "@jest/core": { + "node_modules/@jest/console/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^24.7.1", "@jest/reporters": "^24.9.0", "@jest/test-result": "^24.9.0", @@ -1217,65 +1364,75 @@ "slash": "^2.0.0", "strip-ansi": "^5.0.0" }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "@jest/environment": { + "node_modules/@jest/environment": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, - "requires": { + "dependencies": { "@jest/fake-timers": "^24.9.0", "@jest/transform": "^24.9.0", "@jest/types": "^24.9.0", "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" } }, - "@jest/fake-timers": { + "node_modules/@jest/fake-timers": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^24.9.0", "jest-message-util": "^24.9.0", "jest-mock": "^24.9.0" + }, + "engines": { + "node": ">= 6" } }, - "@jest/reporters": { + "node_modules/@jest/reporters": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^24.9.0", "@jest/test-result": "^24.9.0", "@jest/transform": "^24.9.0", @@ -1298,75 +1455,86 @@ "source-map": "^0.6.0", "string-length": "^2.0.0" }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "@jest/source-map": { + "node_modules/@jest/reporters/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/source-map": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.1.15", "source-map": "^0.6.0" }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "@jest/test-result": { + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^24.9.0", "@jest/types": "^24.9.0", "@types/istanbul-lib-coverage": "^2.0.0" + }, + "engines": { + "node": ">= 6" } }, - "@jest/test-sequencer": { + "node_modules/@jest/test-sequencer": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, - "requires": { + "dependencies": { "@jest/test-result": "^24.9.0", "jest-haste-map": "^24.9.0", "jest-runner": "^24.9.0", "jest-runtime": "^24.9.0" + }, + "engines": { + "node": ">= 6" } }, - "@jest/transform": { + "node_modules/@jest/transform": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^24.9.0", "babel-plugin-istanbul": "^5.1.0", @@ -1384,2040 +1552,23987 @@ "source-map": "^0.6.1", "write-file-atomic": "2.4.1" }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "@jest/types": { + "node_modules/@jest/transform/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/types": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", "@types/yargs": "^13.0.0" + }, + "engines": { + "node": ">= 6" } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "node_modules/@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" } }, - "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "node_modules/@jimp/bmp/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@babel/types": "^7.0.0" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "node_modules/@jimp/bmp/node_modules/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 + }, + "node_modules/@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" } }, - "@types/babel__traverse": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", - "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "node_modules/@jimp/core/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@babel/types": "^7.3.0" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@types/chai": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", - "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==", + "node_modules/@jimp/core/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, - "@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==", - "dev": true + "node_modules/@jimp/core/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } }, - "@types/core-js": { - "version": "0.9.46", - "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", - "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", + "node_modules/@jimp/core/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, - "@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==", + "node_modules/@jimp/core/node_modules/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 }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true + "node_modules/@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "node_modules/@jimp/custom/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "node_modules/@jimp/custom/node_modules/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 }, - "@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "node_modules/@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" } }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "node_modules/@jimp/gif/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@types/jest": { - "version": "24.0.18", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", - "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "node_modules/@jimp/gif/node_modules/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 + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", "dev": true, - "requires": { - "@types/jest-diff": "*" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" } }, - "@types/jest-diff": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", - "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", - "dev": true + "node_modules/@jimp/jpeg/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "node_modules/@jimp/jpeg/node_modules/jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", "dev": true }, - "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "node_modules/@jimp/jpeg/node_modules/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 }, - "@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", - "dev": true + "node_modules/@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", - "dev": true + "node_modules/@jimp/plugin-blit/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "@types/node": { - "version": "11.13.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.2.tgz", - "integrity": "sha512-HOtU5KqROKT7qX/itKHuTtt5fV0iXbheQvrgbLNXFJQBY/eh+VS5vmmTAVlo3qIGMsypm0G4N1t2AXjy1ZicaQ==", + "node_modules/@jimp/plugin-blit/node_modules/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 }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true + "node_modules/@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@types/platform": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.2.tgz", - "integrity": "sha512-Tn6OuJDAG7bJbyi4R7HqcxXp1w2lmIxVXqyNhPt1Bm0FO2EWIi3CI87JVzF7ncqK0ZMPuUycS3wTMIk85EeF1Q==", - "dev": true + "node_modules/@jimp/plugin-blur/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "@types/promise-polyfill": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.3.tgz", - "integrity": "sha512-f/BFgF9a+cgsMseC7rpv9+9TAE3YNjhfYrtwCo/pIeCDDfQtE6PY0b5bao2eIIEpZCBUy8Y5ToXd4ObjPSJuFw==", + "node_modules/@jimp/plugin-blur/node_modules/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 }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "node_modules/@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", "dev": true, - "requires": { - "@types/node": "*" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@types/rimraf": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", - "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", - "dev": true + "node_modules/@jimp/plugin-circle/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "node_modules/@jimp/plugin-circle/node_modules/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 }, - "@types/yargs": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", - "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "node_modules/@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", "dev": true, - "requires": { - "@types/yargs-parser": "*" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" } }, - "@types/yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "node_modules/@jimp/plugin-color/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-color/node_modules/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 }, - "@typescript-eslint/eslint-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", - "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "node_modules/@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", "dev": true, - "requires": { - "@typescript-eslint/parser": "1.7.0", - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-utils": "^1.3.1", - "regexpp": "^2.0.1", - "requireindex": "^1.2.0", - "tsutils": "^3.7.0" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@typescript-eslint/parser": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", - "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "node_modules/@jimp/plugin-contain/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@typescript-eslint/typescript-estree": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", - "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "node_modules/@jimp/plugin-contain/node_modules/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 + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", "dev": true, - "requires": { - "lodash.unescape": "4.0.1", - "semver": "5.5.0" - }, "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "node_modules/@jimp/plugin-cover/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "node_modules/@jimp/plugin-cover/node_modules/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 }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true + "node_modules/@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "node_modules/@jimp/plugin-crop/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "node_modules/@jimp/plugin-crop/node_modules/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 }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "node_modules/@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "node_modules/@jimp/plugin-displace/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "node_modules/@jimp/plugin-displace/node_modules/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 + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "node_modules/@jimp/plugin-dither/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@xtuc/long": "4.2.2" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "node_modules/@jimp/plugin-dither/node_modules/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 }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "node_modules/@jimp/plugin-fisheye/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "node_modules/@jimp/plugin-fisheye/node_modules/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 + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "node_modules/@jimp/plugin-flip/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "node_modules/@jimp/plugin-flip/node_modules/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 + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "node_modules/@jimp/plugin-gaussian/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "node_modules/@jimp/plugin-gaussian/node_modules/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 }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "node_modules/@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/@jimp/plugin-invert/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "abab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", - "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "node_modules/@jimp/plugin-invert/node_modules/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 }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "node_modules/@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "node_modules/@jimp/plugin-mask/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-mask/node_modules/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 }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-normalize/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-normalize/node_modules/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 }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "node_modules/@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" } }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "node_modules/@jimp/plugin-print/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-print/node_modules/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 }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "node_modules/@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-resize/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-resize/node_modules/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 }, - "add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-rotate/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-rotate/node_modules/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 }, - "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "node_modules/@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-scale/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-scale/node_modules/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 }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-shadow/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-shadow/node_modules/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 }, - "aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", "dev": true, - "requires": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "node_modules/@jimp/plugin-threshold/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "dependencies": { + "regenerator-runtime": "^0.13.4" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "node_modules/@jimp/plugin-threshold/node_modules/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 }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "node_modules/@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + } + }, + "node_modules/@jimp/plugins/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugins/node_modules/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 }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "node_modules/@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + } + }, + "node_modules/@jimp/png/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/png/node_modules/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 }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "node_modules/@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + } + }, + "node_modules/@jimp/tiff/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/tiff/node_modules/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 }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + } + }, + "node_modules/@jimp/types/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/types/node_modules/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 }, - "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==", + "node_modules/@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", "dev": true, - "requires": { - "color-convert": "^1.9.0" + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" } }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "node_modules/@jimp/utils/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/utils/node_modules/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 }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "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==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "appium-ios-simulator": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", - "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", + "node_modules/@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "async-lock": "^1.0.0", - "asyncbox": "^2.3.1", - "bluebird": "^3.5.1", - "fkill": "^5.0.0", - "lodash": "^4.2.1", - "node-simctl": "^4.0.0", - "openssl-wrapper": "^0.3.4", - "semver": "^5.5.0", - "shell-quote": "^1.6.1", - "source-map-support": "^0.5.3", - "teen_process": "^1.3.0" - }, "dependencies": { - "@jimp/bmp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz", - "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "bmp-js": "^0.1.0", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/core": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz", - "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "core-js": "^3.4.1", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - }, - "dependencies": { - "@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" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "@jimp/custom": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz", - "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/gif": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz", - "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", + "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", + "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "node_modules/@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "node_modules/@types/core-js": { + "version": "0.9.46", + "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", + "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, + "node_modules/@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 + }, + "node_modules/@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "dependencies": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "24.0.18", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", + "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "dev": true, + "dependencies": { + "@types/jest-diff": "*" + } + }, + "node_modules/@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, + "node_modules/@types/karma": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.0.tgz", + "integrity": "sha512-NQ6AzL/0UhFKrK69R9aPV1a88MBau7F47Tr3Qwg8IlKALDVfRk9w+8r3VfOso0vrFT/IkztjfAPar090laUMdg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "log4js": "^6.2.1" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "node_modules/@types/mkdirp": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", + "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "11.13.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.2.tgz", + "integrity": "sha512-HOtU5KqROKT7qX/itKHuTtt5fV0iXbheQvrgbLNXFJQBY/eh+VS5vmmTAVlo3qIGMsypm0G4N1t2AXjy1ZicaQ==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/platform": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.2.tgz", + "integrity": "sha512-Tn6OuJDAG7bJbyi4R7HqcxXp1w2lmIxVXqyNhPt1Bm0FO2EWIi3CI87JVzF7ncqK0ZMPuUycS3wTMIk85EeF1Q==", + "dev": true + }, + "node_modules/@types/promise-polyfill": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.3.tgz", + "integrity": "sha512-f/BFgF9a+cgsMseC7rpv9+9TAE3YNjhfYrtwCo/pIeCDDfQtE6PY0b5bao2eIIEpZCBUy8Y5ToXd4ObjPSJuFw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/rimraf": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", + "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", + "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", + "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/parser": "1.7.0", + "@typescript-eslint/typescript-estree": "1.7.0", + "eslint-utils": "^1.3.1", + "regexpp": "^2.0.1", + "requireindex": "^1.2.0", + "tsutils": "^3.7.0" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", + "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "1.7.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", + "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "dev": true, + "dependencies": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "engines": { + "node": ">=6.14.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", + "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "node_modules/adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aggregate-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", + "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "dev": true, + "dependencies": { + "clean-stack": "^1.0.0", + "indent-string": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/appium-ios-simulator": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", + "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "async-lock": "^1.0.0", + "asyncbox": "^2.3.1", + "bluebird": "^3.5.1", + "fkill": "^5.0.0", + "lodash": "^4.2.1", + "node-simctl": "^4.0.0", + "openssl-wrapper": "^0.3.4", + "semver": "^5.5.0", + "shell-quote": "^1.6.1", + "source-map-support": "^0.5.3", + "teen_process": "^1.3.0" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-support": { + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", + "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/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 + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", + "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/appium-ios-simulator/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/appium-ios-simulator/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/appium-ios-simulator/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/appium-ios-simulator/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/appium-ios-simulator/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/appium-ios-simulator/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/appium-ios-simulator/node_modules/node-simctl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", + "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "asyncbox": "^2.3.1", + "lodash": "^4.2.1", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1" + } + }, + "node_modules/appium-ios-simulator/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/appium-ios-simulator/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/appium-ios-simulator/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/appium-ios-simulator/node_modules/teen_process": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", + "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "lodash": "^4.17.4", + "shell-quote": "^1.4.3", + "source-map-support": "^0.5.3" + } + }, + "node_modules/appium-ios-simulator/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/appium-ios-simulator/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/appium-ios-simulator/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/appium-ios-simulator/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/archiver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/archiver-utils/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archiver/node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "node_modules/array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "node_modules/array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "node_modules/array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "dependencies": { + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.11" + } + }, + "node_modules/async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true, + "optional": true + }, + "node_modules/async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "node_modules/async-lock": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.0.tgz", + "integrity": "sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ==", + "dev": true + }, + "node_modules/async/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/asyncbox": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-2.5.2.tgz", + "integrity": "sha512-fIN2NMNf3TUpgn2J4V3BqtwL8lWXrHon8OveR+NgJf/tKyk7v7jWWzcb0jRW0KanSgb09bF+xvE6K2rzRqisZQ==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "es6-mapify": "^1.1.0", + "lodash": "^4.17.4", + "source-map-support": "^0.5.5" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sdk": { + "version": "2.269.1", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.269.1.tgz", + "integrity": "sha512-oIKzffzGR8fA9uT181wyahXQK5yBqF+qzql+0XoFePcFo7l8m8L9MAq5J9QSFXRNFM8cThjnSQpFoesVNzh7Pg==", + "dev": true, + "dependencies": { + "buffer": "4.9.1", + "events": "1.1.1", + "ieee754": "1.1.8", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.1.0", + "xml2js": "0.4.17" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true + }, + "node_modules/axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "dependencies": { + "follow-redirects": "1.5.10" + } + }, + "node_modules/axios/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/axios/node_modules/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==", + "dev": true, + "dependencies": { + "debug": "=3.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-eslint/node_modules/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "dependencies": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">= 6.9" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-loader/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", + "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", + "dev": true, + "optionalDependencies": { + "chokidar": "^2.0.4" + } + }, + "node_modules/babel-plugin-dev-expression": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz", + "integrity": "sha1-1Ke+7++7UOPyc0mQqCokhs+eue4=", + "dev": true + }, + "node_modules/babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "dependencies": { + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-runtime": { + "version": "5.8.24", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", + "integrity": "sha1-MBSmsBvUy3RyDxOSUlOuDZJoFHs=", + "dev": true, + "dependencies": { + "core-js": "^1.0.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "node_modules/base64-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-1.0.0.tgz", + "integrity": "sha512-BQQZftaO48FcE1Kof9CmXMFaAdqkcNorgc8CxesZv9nMbbTF1EFyQe89UOuh//QMmdtfUDXyO8rgUalemL5ODA==", + "dev": true + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", + "dev": true, + "dependencies": { + "stream-buffers": "~2.2.0" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.0.tgz", + "integrity": "sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA==", + "dev": true, + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "node_modules/browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "dependencies": { + "resolve": "1.1.7" + } + }, + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/cacache/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callback-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", + "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "> 1.0.0 < 3.0.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30000957", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", + "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", + "dev": true + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chai": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", + "integrity": "sha1-ZuISeebzxkFf+CMYeCJ5AOIXGzk=", + "dev": true, + "dependencies": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^2.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "dev": true, + "optional": true, + "dependencies": { + "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" + } + }, + "node_modules/chokidar/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "optional": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/chokidar/node_modules/upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromeless": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/chromeless/-/chromeless-1.5.2.tgz", + "integrity": "sha512-lxQHERZOP1aD+8Uvj+P4xM72e4aNous5igOvs+w6gRrcOZ6oIuYaSTJWMuhnTSgQzhg0APsAsIQq+a+k/2Yvow==", + "dev": true, + "dependencies": { + "aws-sdk": "^2.177.0", + "bluebird": "^3.5.1", + "chrome-launcher": "^0.10.0", + "chrome-remote-interface": "^0.25.5", + "cuid": "^2.1.0", + "form-data": "^2.3.1", + "got": "^8.0.0", + "mqtt": "^2.15.0" + }, + "engines": { + "node": ">= 6.10.0" + } + }, + "node_modules/chromeless/node_modules/@types/node": { + "version": "9.6.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz", + "integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==", + "dev": true + }, + "node_modules/chromeless/node_modules/chrome-launcher": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.5.tgz", + "integrity": "sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g==", + "dev": true, + "dependencies": { + "@types/core-js": "^0.9.41", + "@types/mkdirp": "^0.3.29", + "@types/node": "^9.3.0", + "@types/rimraf": "^0.0.28", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + } + }, + "node_modules/chromeless/node_modules/chrome-remote-interface": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz", + "integrity": "sha512-6zI6LbR2IiGmduFZededaerEr9hHXabxT/L+fRrdq65a0CfyLMzpq0BKuZiqN0Upqcacsb6q2POj7fmobwBsEA==", + "dev": true, + "dependencies": { + "commander": "2.11.x", + "ws": "3.3.x" + }, + "bin": { + "chrome-remote-interface": "bin/client.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "node_modules/chromeless/node_modules/cuid": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", + "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==", + "dev": true + }, + "node_modules/chromeless/node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/chromeless/node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromeless/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "dependencies": { + "color-name": "1.1.1" + } + }, + "node_modules/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "node_modules/commist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.0.0.tgz", + "integrity": "sha1-wMNSUBz29S6RJOPvicmAbiAi6+8=", + "dev": true, + "dependencies": { + "leven": "^1.0.0", + "minimist": "^1.1.0" + } + }, + "node_modules/commist/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", + "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compress-commons/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "dependencies": { + "date-now": "^0.1.4" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.21.tgz", + "integrity": "sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^5.0.10", + "conventional-changelog-atom": "^2.0.7", + "conventional-changelog-codemirror": "^2.0.7", + "conventional-changelog-conventionalcommits": "^4.3.0", + "conventional-changelog-core": "^4.1.7", + "conventional-changelog-ember": "^2.0.8", + "conventional-changelog-eslint": "^3.0.8", + "conventional-changelog-express": "^2.0.5", + "conventional-changelog-jquery": "^3.0.10", + "conventional-changelog-jshint": "^2.0.7", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", + "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz", + "integrity": "sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz", + "integrity": "sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", + "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz", + "integrity": "sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^4.0.18", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "shelljs": "^0.8.3", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "dev": true, + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/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==", + "dev": true + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/conventional-changelog-core/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-changelog-core/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/conventional-changelog-core/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-changelog-core/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/conventional-changelog-core/node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", + "integrity": "sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz", + "integrity": "sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz", + "integrity": "sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz", + "integrity": "sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg==", + "dev": true, + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.8.tgz", + "integrity": "sha512-hB/iI0IiZwnZ+seYI+qEQ4b+EMQSEC8jGIvhO2Vpz1E5p8FgLz75OX8oB1xJWl+s4xBMB6f8zJr0tC/BL7YOjw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", + "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-changelog-writer/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/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==", + "dev": true + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-changelog-writer/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-changelog-writer/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", + "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", + "trim-off-newlines": "^1.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-commits-parser/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/conventional-commits-parser/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/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==", + "dev": true + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-commits-parser/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-commits-parser/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/conventional-commits-parser/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/conventional-commits-parser/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/conventional-commits-parser/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/conventional-commits-parser/node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.0.9.tgz", + "integrity": "sha512-DpRmW1k8CpRrcsXHOPGgHgOd4BMGiq2gtXAveGM8B9pSd9b4r4WKnqp1Fd0vkDtk8l973mIk8KKKUYnKRr9SFw==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.6", + "conventional-commits-parser": "^3.1.0", + "git-raw-commits": "2.0.0", + "git-semver-tags": "^4.0.0", + "meow": "^7.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-recommended-bump/node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conventional-recommended-bump/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", + "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", + "dev": true, + "dependencies": { + "browserslist": "^4.5.4", + "core-js": "3.0.1", + "core-js-pure": "3.0.1", + "semver": "^6.0.0" + } + }, + "node_modules/core-js-compat/node_modules/browserslist": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", + "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30000955", + "electron-to-chromium": "^1.3.122", + "node-releases": "^1.1.13" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/core-js-compat/node_modules/core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/core-js-pure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", + "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/cross-spawn-async": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.0", + "which": "^1.2.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-line-break": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz", + "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==", + "dependencies": { + "base64-arraybuffer": "^0.2.0" + } + }, + "node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/csv-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-1.12.1.tgz", + "integrity": "sha512-r45M92nLnGP246ot0Yo5RvbiiMF5Bw/OTIdWJ3OQ4Vbv4hpOeoXVIPxdSmUw+fPJlQOseY+iigJyLSfPMIrddQ==", + "dev": true, + "dependencies": { + "buffer-alloc": "^1.1.0", + "buffer-from": "^1.0.0", + "generate-function": "^1.0.1", + "generate-object-property": "^1.0.0", + "inherits": "^2.0.1", + "minimist": "^1.2.0", + "ndjson": "^1.4.0" + }, + "bin": { + "csv-parser": "bin.js" + } + }, + "node_modules/csv-parser/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "node_modules/cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "node_modules/dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dashdash/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-eql": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", + "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", + "dev": true, + "dependencies": { + "type-detect": "^3.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-eql/node_modules/type-detect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", + "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dotgitignore/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "dependencies": { + "jsbn": "~0.1.0" + } + }, + "node_modules/edge-launcher": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/edge-launcher/-/edge-launcher-1.2.2.tgz", + "integrity": "sha1-60Cq+9Bnpup27/+rBke81VCbN7I=", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.124", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", + "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/elliptic/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "dependencies": { + "base64-arraybuffer": "0.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/engine.io-parser/node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/engine.io/node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/engine.io/node_modules/ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-mapify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-mapify/-/es6-mapify-1.1.0.tgz", + "integrity": "sha512-gY+kLiffVyx6jf3lu/tx0RJpdW7CMhdUBo4ZGpKCztjBHbO+j15m4fkaEO/oay+b1qzz7smHEUcnva1GYbZoJg==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "babel-runtime": "=5.8.24" + } + }, + "node_modules/es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.2.0.tgz", + "integrity": "sha512-y0uWc/FRfrHhpPZCYflWC8aE0KRJRY04rdZVfl8cL3sEZmOYyaBdhdlQPjKZBnuRMyLVK+JUZr7HaZFClQiH4w==", + "dev": true, + "dependencies": { + "get-stdin": "^6.0.0" + }, + "bin": { + "eslint-config-prettier-check": "bin/cli.js" + } + }, + "node_modules/eslint-config-prettier/node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz", + "integrity": "sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/eslint/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "dependencies": { + "estraverse": "^4.0.0" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "dependencies": { + "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estree-walker": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", + "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", + "dev": true + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "dependencies": { + "bser": "^2.0.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A=", + "dev": true, + "dependencies": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fkill": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/fkill/-/fkill-5.3.0.tgz", + "integrity": "sha512-AHe4x/k9xHlSNPRya0FOCd42qa6ggmW4gtdy6mR0R1vdWtNq9zMd8nmMR5LB7fTNOA1f1nOU+uqaQHP7NMWmVA==", + "dev": true, + "dependencies": { + "aggregate-error": "^1.0.0", + "arrify": "^1.0.0", + "execa": "^0.10.0", + "pid-from-port": "^1.0.0", + "process-exists": "^3.1.0", + "taskkill": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fkill/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/fkill/node_modules/execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fkill/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flat/node_modules/is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "node_modules/follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/follow-redirects/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/follow-redirects/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "dependencies": { + "null-check": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "bundleDependencies": [ + "node-pre-gyp" + ], + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "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" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.2.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.10.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.8", + "dev": true, + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.6.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.6.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/ftp-response-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ftp-response-parser/-/ftp-response-parser-1.0.1.tgz", + "integrity": "sha1-O50z+O3V+45HALj3eMRi5bFYH4k=", + "dev": true, + "dependencies": { + "readable-stream": "^1.0.31" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ftp-response-parser/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/ftp-response-parser/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ftp-response-parser/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/generate-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", + "integrity": "sha1-VMIbCAGSsW2Yd3ecW7gWZudyNl8=", + "dev": true + }, + "node_modules/generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "dependencies": { + "is-property": "^1.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "bin": { + "get-pkg-repo": "cli.js" + } + }, + "node_modules/get-pkg-repo/node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/get-pkg-repo/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-pkg-repo/node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/getpass/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/gifwrap": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", + "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==", + "dev": true, + "dependencies": { + "image-q": "^1.1.1", + "omggif": "^1.0.10" + } + }, + "node_modules/gifwrap/node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true + }, + "node_modules/git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "dependencies": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/git-raw-commits/node_modules/camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "dependencies": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/git-raw-commits/node_modules/minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/git-raw-commits/node_modules/quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "dependencies": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-raw-commits/node_modules/trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "dev": true, + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/git-semver-tags/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/git-semver-tags/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/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==", + "dev": true + }, + "node_modules/git-semver-tags/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-semver-tags/node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/git-semver-tags/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/git-semver-tags/node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-modules/node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-modules/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global/node_modules/process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + } + }, + "node_modules/handlebars/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "dependencies": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/help-me": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-1.1.0.tgz", + "integrity": "sha1-jy1QjQYAtKRW2i8IZVbn5cBWo8Y=", + "dev": true, + "dependencies": { + "callback-stream": "^1.0.2", + "glob-stream": "^6.1.0", + "through2": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html2canvas-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html2canvas-proxy/-/html2canvas-proxy-1.0.1.tgz", + "integrity": "sha1-jRWi20PY9S+IQCJ1KOXLui7SDy0=", + "dev": true, + "dependencies": { + "cors": "2.8.4", + "request": "2.87.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", + "dev": true, + "dependencies": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz", + "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=", + "dev": true, + "engines": { + "node": ">=0.9.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/inquirer": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", + "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/into-stream/node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-builtin-module/node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", + "dev": true + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "dependencies": { + "has": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-report/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/istanbul-lib-source-maps/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "dependencies": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-changed-files/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-changed-files/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "dependencies": { + "detect-newline": "^2.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "dependencies": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "dependencies": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 6" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "dependencies": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "dependencies": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "dependencies": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/jest-runtime/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/jest-runtime/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "node_modules/jest-runtime/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "dependencies": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-util/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-util/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-validate/node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/jest/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/jest/node_modules/jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "dependencies": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/jest/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest/node_modules/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==", + "dev": true + }, + "node_modules/jest/node_modules/yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "node_modules/jest/node_modules/yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jimp/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/jimp/node_modules/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 + }, + "node_modules/jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-polyfills": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/js-polyfills/-/js-polyfills-0.1.42.tgz", + "integrity": "sha1-XUhJArNh489gH9I60PMLr8yT8Ug=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "node_modules/jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "dependencies": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/jsftp": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/jsftp/-/jsftp-2.1.3.tgz", + "integrity": "sha512-r79EVB8jaNAZbq8hvanL8e8JGu2ZNr2bXdHC4ZdQhRImpSPpnWwm5DYVzQ5QxJmtGtKhNNuvqGgbNaFl604fEQ==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "ftp-response-parser": "^1.0.1", + "once": "^1.4.0", + "parse-listing": "^1.1.3", + "stream-combiner": "^0.2.2", + "unorm": "^1.4.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsftp/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/jsftp/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jsprim/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/jszip": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/karma": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", + "dev": true, + "dependencies": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-edge-launcher": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", + "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", + "dev": true, + "dependencies": { + "edge-launcher": "1.2.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-firefox-launcher": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.0.tgz", + "integrity": "sha512-dkiyqN2R6fCWt78rciOXJLFDWcQ7QEQi++HgebPJlw1y0ycDjGNDHuSrhdh48QG02fzZKK20WHFWVyBZ6CPngg==", + "dev": true, + "dependencies": { + "is-wsl": "^2.2.0", + "which": "^2.0.1" + } + }, + "node_modules/karma-firefox-launcher/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma-firefox-launcher/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/karma-ie-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", + "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", + "dev": true, + "dependencies": { + "lodash": "^4.6.1" + } + }, + "node_modules/karma-junit-reporter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", + "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", + "dev": true, + "dependencies": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "12.0.0" + }, + "engines": { + "node": ">= 8" + }, + "peerDependencies": { + "karma": ">=0.9" + } + }, + "node_modules/karma-junit-reporter/node_modules/xmlbuilder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", + "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/karma-mocha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.3" + } + }, + "node_modules/karma-mocha/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/karma-safarinative-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-safarinative-launcher/-/karma-safarinative-launcher-1.1.0.tgz", + "integrity": "sha512-vdMjdQDHkSUbOZc8Zq2K5bBC0yJGFEgfrKRJTqt0Um0SC1Rt8drS2wcN6UA3h4LgsL3f1pMcmRSvKucbJE8Qdg==", + "dev": true + }, + "node_modules/karma-sauce-launcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz", + "integrity": "sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA==", + "dev": true, + "dependencies": { + "sauce-connect-launcher": "^1.2.4", + "saucelabs": "^1.5.0", + "selenium-webdriver": "^4.0.0-alpha.1" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/karma/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/karma/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/karma/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/karma/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/karma/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/karma/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/karma/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/karma/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/karma/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/karma/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/karma/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "node_modules/leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "dev": true, + "bin": { + "leven": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.0.1.tgz", + "integrity": "sha1-8HPYP3rLyWcpvxAKEhyPAGmRrmE=", + "dev": true, + "dependencies": { + "debug": "^2.6.8" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-bmfont": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "dev": true, + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/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, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "dependencies": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "dev": true, + "dependencies": { + "signal-exit": "^3.0.2" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "dependencies": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/log4js/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/log4js/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", + "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", + "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "arrify": "^2.0.1", + "camelcase": "^6.0.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/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==", + "dev": true + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "dependencies": { + "mime-db": "1.47.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mississippi/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mocha": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", + "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.2.2", + "yargs-parser": "13.0.0", + "yargs-unparser": "1.5.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/mocha/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/mocha/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/mocha/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mocha/node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/mocha/node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/mocha/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/mocha/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/mocha/node_modules/yargs": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0.0" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", + "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/mqtt": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.2.tgz", + "integrity": "sha512-egP6gbLES2aELu6LNtwOtpC779Hu7LVTYm6HKE5wJdTuX2jZ4JOOtK7HS2JWyW6IfKN5U99u/VU155tLwFAKbQ==", + "dev": true, + "dependencies": { + "commist": "^1.0.0", + "concat-stream": "^1.6.2", + "end-of-stream": "^1.4.1", + "help-me": "^1.0.1", + "inherits": "^2.0.3", + "minimist": "^1.2.0", + "mqtt-packet": "^5.6.0", + "pump": "^3.0.0", + "readable-stream": "^2.3.6", + "reinterval": "^1.1.0", + "split2": "^2.1.1", + "websocket-stream": "^5.1.2", + "xtend": "^4.0.1" + }, + "bin": { + "mqtt": "mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-5.6.0.tgz", + "integrity": "sha512-QECe2ivqcR1LRsPobRsjenEKAC3i1a5gmm+jNKJLrsiq9PaSQ18LlKFuxvhGxWkvGEPadWv6rKd31O4ICqS1Xw==", + "dev": true, + "dependencies": { + "bl": "^1.2.1", + "inherits": "^2.0.3", + "process-nextick-args": "^2.0.0", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/mqtt/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/ndjson": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", + "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=", + "dev": true, + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.0", + "split2": "^2.1.0", + "through2": "^2.0.3" + }, + "bin": { + "ndjson": "cli.js" + } + }, + "node_modules/ndjson/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/neat-csv": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/neat-csv/-/neat-csv-2.1.0.tgz", + "integrity": "sha1-BvWDYMTDuVW9Rn3cha5FEaOQekw=", + "dev": true, + "dependencies": { + "csv-parser": "^1.6.0", + "get-stream": "^2.1.0", + "into-stream": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/neat-csv/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/neat-csv/node_modules/into-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-2.0.1.tgz", + "integrity": "sha1-25sANpRFPq4JHYpchMwRUHt4HTE=", + "dev": true, + "dependencies": { + "from2": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-environment-flags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + } + }, + "node_modules/node-libs-browser/node_modules/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/node-libs-browser/node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node_modules/node-notifier/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-releases": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", + "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", + "dev": true, + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/node-releases/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-simctl": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-5.3.0.tgz", + "integrity": "sha512-5EJPsorg+ZLxeLk6Cc5Q3hI4WcWkWSWkqQnJEJf3DrM9UekGvpgOUE8uZtr8dTtY/GZCsI30Ksusqm+zGq3NsA==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.37.0", + "appium-xcode": "^3.8.0", + "asyncbox": "^2.3.1", + "lodash": "^4.2.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1" + } + }, + "node_modules/node-simctl/node_modules/appium-support": { + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", + "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" + } + }, + "node_modules/node-simctl/node_modules/appium-support/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-simctl/node_modules/appium-support/node_modules/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 + }, + "node_modules/node-simctl/node_modules/appium-xcode": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", + "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" + } + }, + "node_modules/node-simctl/node_modules/appium-xcode/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-simctl/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/node-simctl/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/node-simctl/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-simctl/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-simctl/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-simctl/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/node-simctl/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/node-simctl/node_modules/semver": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", + "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-simctl/node_modules/teen_process": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", + "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", + "dev": true, + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "lodash": "^4.17.4", + "shell-quote": "^1.4.3", + "source-map-support": "^0.5.3" + } + }, + "node_modules/node-simctl/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/node-simctl/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-simctl/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/omggif": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", + "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/openssl-wrapper": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/openssl-wrapper/-/openssl-wrapper-0.3.4.tgz", + "integrity": "sha1-wB7Jjk3NK13+C2k/MYJyAOO4Gwc=", + "dev": true + }, + "node_modules/optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/output-file-sync": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "dependencies": { + "p-reduce": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "dependencies": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "dependencies": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dev": true, + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "node_modules/parse-headers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", + "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", + "dev": true, + "dependencies": { + "for-each": "^0.3.3", + "string.prototype.trim": "^1.1.2" + } + }, + "node_modules/parse-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz", + "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-listing": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/parse-listing/-/parse-listing-1.1.3.tgz", + "integrity": "sha1-qlRvV/3BKc+/mUXNS3V7FLBhgt0=", + "dev": true, + "engines": { + "node": ">=0.6.21" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pid-from-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pid-from-port/-/pid-from-port-1.1.3.tgz", + "integrity": "sha512-OlE82n3yMOE5dY9RMOwxhoWefeMlxwk5IVxoj0sSzSFIlmvhN4obzTvO3s/d/b5JhcgXikjaspsy/HuUDTqbBg==", + "dev": true, + "dependencies": { + "execa": "^0.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pid-from-port/node_modules/execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "dev": true + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", + "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "dependencies": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "dev": true, + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-exists": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/process-exists/-/process-exists-3.1.0.tgz", + "integrity": "sha512-X11vso1oNLtyDa2j8fsMol2fph1+5PoQ4vpEc1it/rM8eLuRTmrmTg4jfn82WhNur241AYitgjKCgmlgMRZesw==", + "dev": true, + "dependencies": { + "ps-list": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/prompts": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", + "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/ps-list": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-4.1.0.tgz", + "integrity": "sha512-DSpMj8PI5W7v2G4+rE+BymTKZPjlu6t/M1N6rPAa6Hwn+/e8jDmFJaq8/kpoGCvwd75g2h5DbjF2MduOMNyrsQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0", + "tasklist": "^3.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/react-is": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "dependencies": { + "util.promisify": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", + "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "dev": true + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=", + "dev": true + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/replace-in-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.0.tgz", + "integrity": "sha512-fto9Ooab00CniGkSjRCZCamER7P5S4mZHQ4w4dLd09nwP3FtFfjUJh8/OVC/In4ki5MEy+dYO5v9r7rtq2DrYQ==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "glob": "^7.1.2", + "yargs": "^11.0.0" + }, + "bin": { + "replace-in-file": "bin/cli.js" + } + }, + "node_modules/replace-in-file/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/replace-in-file/node_modules/yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "node_modules/replace-in-file/node_modules/yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.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.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "dependencies": { + "lodash": "^4.17.11" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "dependencies": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.1.tgz", + "integrity": "sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "@types/node": "^11.13.5", + "acorn": "^6.1.1" + }, + "bin": { + "rollup": "bin/rollup" + } + }, + "node_modules/rollup-plugin-commonjs": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", + "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.0", + "magic-string": "^0.25.2", + "resolve": "^1.10.0", + "rollup-pluginutils": "^2.6.0" + } + }, + "node_modules/rollup-plugin-commonjs/node_modules/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==", + "dev": true + }, + "node_modules/rollup-plugin-commonjs/node_modules/resolve": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/rollup-plugin-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", + "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", + "dev": true, + "dependencies": { + "rollup-pluginutils": "^2.5.0" + } + }, + "node_modules/rollup-plugin-node-resolve": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.3.tgz", + "integrity": "sha512-r+WaesPzdGEynpLZLALFEDugA4ACa5zn7bc/+LVX4vAXQQ8IgDHv0xfsSvJ8tDXUtprfBtrDtRFg27ifKjcJTg==", + "dev": true, + "dependencies": { + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.10.0" + } + }, + "node_modules/rollup-plugin-node-resolve/node_modules/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==", + "dev": true + }, + "node_modules/rollup-plugin-node-resolve/node_modules/resolve": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/rollup-plugin-sourcemaps": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", + "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "dev": true, + "dependencies": { + "rollup-pluginutils": "^2.0.1", + "source-map-resolve": "^0.5.0" + }, + "engines": { + "node": ">=4.5.0", + "npm": ">=2.15.9" + } + }, + "node_modules/rollup-plugin-typescript2": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.21.0.tgz", + "integrity": "sha512-fbUAc2bvWxRrg1GGMYCFVf6aSxq3zvWn0sY2ubzFW9shJNT95ztFbM6GHO4/2rDSCjier7IswQnbr1ySqoLNPw==", + "dev": true, + "dependencies": { + "fs-extra": "7.0.1", + "resolve": "1.10.0", + "rollup-pluginutils": "2.4.1", + "tslib": "1.9.3" + } + }, + "node_modules/rollup-plugin-typescript2/node_modules/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==", + "dev": true + }, + "node_modules/rollup-plugin-typescript2/node_modules/resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/rollup-plugin-typescript2/node_modules/rollup-pluginutils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz", + "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.0", + "micromatch": "^3.1.10" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/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 + }, + "node_modules/rollup/node_modules/@types/node": { + "version": "11.13.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz", + "integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==", + "dev": true + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "dependencies": { + "is-promise": "^2.1.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rxjs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", + "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sauce-connect-launcher": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-1.2.5.tgz", + "integrity": "sha512-q9GoMBgsBApfYC/GWfNZMgoYOls6YZ77bJ7kXiHDtltVnV+QFiz0/Ac7LSRd6n69RfP/ful8spIFWv0oFs3eOQ==", + "dev": true, + "dependencies": { + "adm-zip": "~0.4.3", + "async": "^2.1.2", + "https-proxy-agent": "^2.2.1", + "lodash": "^4.16.6", + "rimraf": "^2.5.4" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", + "dev": true + }, + "node_modules/schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4.8.0 || >= 6.9.0 || >= 8.9.0" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", + "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, + "node_modules/schema-utils/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/sec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sec/-/sec-1.0.0.tgz", + "integrity": "sha1-Az1go60g7PLgCUDRT5eCNGV3QzU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/selenium-webdriver": { + "version": "4.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz", + "integrity": "sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q==", + "dev": true, + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", + "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "dev": true + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "dependencies": { + "through2": "^2.0.2" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "dashdash": "^1.12.0", + "getpass": "^0.1.1", + "safer-buffer": "^2.0.2" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + }, + "optionalDependencies": { + "bcrypt-pbkdf": "^1.0.0", + "ecc-jsbn": "~0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } + }, + "node_modules/sshpk/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard-version": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-8.0.2.tgz", + "integrity": "sha512-L8X9KFq2SmVmaeZgUmWHFJMOsEWpjgFAwqic6yIIoveM1kdw1vH4Io03WWxUDjypjGqGU6qUtcJoR8UvOv5w3g==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "conventional-changelog": "3.1.21", + "conventional-changelog-config-spec": "2.1.0", + "conventional-changelog-conventionalcommits": "4.3.0", + "conventional-recommended-bump": "6.0.9", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", + "dotgitignore": "^2.1.0", + "figures": "^3.1.0", + "find-up": "^4.1.0", + "fs-access": "^1.0.1", + "git-semver-tags": "^4.0.0", + "semver": "^7.1.1", + "stringify-package": "^1.0.1", + "yargs": "^15.3.1" + }, + "bin": { + "standard-version": "bin/cli.js" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/standard-version/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/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==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/standard-version/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/standard-version/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/standard-version/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/standard-version/node_modules/compare-func": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.4.tgz", + "integrity": "sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "node_modules/standard-version/node_modules/conventional-changelog-conventionalcommits": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz", + "integrity": "sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg==", + "dev": true, + "dependencies": { + "compare-func": "^1.3.1", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard-version/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/standard-version/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/standard-version/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard-version/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/standard-version/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/standard-version/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/standard-version/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard-version/node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-version/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "node_modules/streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "dependencies": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/streamroller/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "dependencies": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", + "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "dev": true, + "dependencies": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/tar-stream/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/tar-stream/node_modules/bl/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/tar-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/tar-stream/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/taskkill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", + "integrity": "sha1-o1QwVwKpZDVwMwJ6qUnq7VMxt4Q=", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "execa": "^0.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/taskkill/node_modules/execa": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.1.1.tgz", + "integrity": "sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=", + "dev": true, + "dependencies": { + "cross-spawn-async": "^2.1.1", + "object-assign": "^4.0.1", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/tasklist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tasklist/-/tasklist-3.1.1.tgz", + "integrity": "sha512-G3I7QWUBSNWaekrJcDabydF6dcvy+vZ2PrX04JYq1p914TOLgpN+ryMtheGavs1LYVevTbTmwjQY8aeX8yLsyA==", + "dev": true, + "dependencies": { + "neat-csv": "^2.1.0", + "pify": "^2.2.0", + "sec": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tasklist/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/terser-webpack-plugin/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/test-exclude/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "dependencies": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", + "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", + "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ts-jest/node_modules/json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-jest/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/ts-loader": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz", + "integrity": "sha512-KwF1SplmOJepnoZ4eRIloH/zXL195F51skt7reEsS6jvDqzgc/YSbz9b8E07GxIUwLXdcD4ssrJu6v8CwaTafA==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ts-node": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz", + "integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==", + "dev": true, + "dependencies": { + "arg": "^4.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + }, + "peerDependencies": { + "typescript": ">=2.0" + } + }, + "node_modules/tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.3.tgz", + "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "node_modules/uglify-es/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", + "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", + "dev": true, + "dependencies": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglifyjs-webpack-plugin": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz", + "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", + "dev": true, + "dependencies": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "engines": { + "node": ">= 4.8 < 5.0.0 || >= 5.10" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "dependencies": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unorm": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.5.0.tgz", + "integrity": "sha512-sMfSWoiRaXXeDZSXC+YRZ23H4xchQpwxjpw1tmfR+kgbBCaOgln4NI0LXejJIhnBuKINrB3WRn+ZI8IWssirVw==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dev": true, + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "dependencies": { + "indexof": "0.0.1" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^0.1.2" + } + }, + "node_modules/walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "dependencies": { + "makeerror": "1.0.x" + } + }, + "node_modules/watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.0" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + }, + "engines": { + "node": "<8.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "dependencies": { + "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" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack/node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/watchpack/node_modules/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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "optional": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 8.10.0" + } + }, + "node_modules/watchpack/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/watchpack/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/watchpack/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/webpack": { + "version": "4.29.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", + "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/webpack-cli": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/webpack-cli/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/webpack-cli/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/webpack-cli/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-cli/node_modules/enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-cli/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/webpack-cli/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack-cli/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-cli/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/webpack-cli/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webpack-cli/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/webpack-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/websocket-stream": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.1.2.tgz", + "integrity": "sha512-lchLOk435iDWs0jNuL+hiU14i3ERSrMA0IKSiJh7z6X/i4XNsutBZrtqu2CPOZuA4G/zabiqVAos0vW+S7GEVw==", + "dev": true, + "dependencies": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.1", + "ws": "^3.2.0", + "xtend": "^4.0.0" + } + }, + "node_modules/websocket-stream/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "dev": true, + "dependencies": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "^4.1.0" + } + }, + "node_modules/xmlbuilder": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "dev": true, + "dependencies": { + "lodash": "^4.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/xmldom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", + "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", + "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "dev": true, + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.11", + "yargs": "^12.0.5" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/yargs-unparser/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs-unparser/node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/yargs-unparser/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/yargs-unparser/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-unparser/node_modules/yargs/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/yargs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/yargs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yauzl/node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + } + }, + "dependencies": { + "@babel/cli": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.3.tgz", + "integrity": "sha512-cbC5H9iTDV9H7sMxK5rUm18UbdVPNTPqgdzmQAkOUP3YLysgDWLZaysVAfylK49rgTlzL01a6tXyq9rCb3yLhQ==", + "dev": true, + "requires": { + "chokidar": "^2.0.4", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "output-file-sync": "^2.0.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", + "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.3", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "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" + } + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", + "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-define-map": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", + "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", + "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", + "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz", + "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", + "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", + "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "dev": true, + "requires": { + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz", + "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", + "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", + "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", + "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", + "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "@babel/plugin-transform-classes": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", + "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz", + "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz", + "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.0.tgz", + "integrity": "sha512-C4ZVNejHnfB22vI2TYN4RUp2oCmq6cSEAg4RygSvYZUECRqUu9O4PMEMNJ4wsemaRGg27BbgYctG4BZh+AgIHw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz", + "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz", + "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz", + "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.3", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", + "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", + "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", + "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz", + "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz", + "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.4" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "omggif": "^1.0.9" - }, - "dependencies": { - "@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" - } - } + "private": "^0.1.6" } + } + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz", + "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.3", + "regexpu-core": "^4.5.4" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true }, - "@jimp/jpeg": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz", - "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==", + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "jpeg-js": "^0.3.4" - }, - "dependencies": { - "@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" - } - } + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" } }, - "@jimp/plugin-blit": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz", - "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true }, - "@jimp/plugin-blur": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz", - "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==", + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "jsesc": "~0.5.0" } - }, - "@jimp/plugin-circle": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz", - "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==", + } + } + }, + "@babel/preset-env": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz", + "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.0", + "@babel/plugin-transform-classes": "^7.4.3", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.3", + "@babel/plugin-transform-dotall-regex": "^7.4.3", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.3", + "@babel/plugin-transform-function-name": "^7.4.3", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.3", + "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", + "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.3", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.3", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.3", + "@babel/types": "^7.4.0", + "browserslist": "^4.5.2", + "core-js-compat": "^3.0.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "browserslist": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", + "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "caniuse-lite": "^1.0.30000955", + "electron-to-chromium": "^1.3.122", + "node-releases": "^1.1.13" } }, - "@jimp/plugin-color": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz", - "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==", + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "@babel/preset-flow": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.0.0.tgz", + "integrity": "sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0" + } + }, + "@babel/runtime": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", + "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/traverse": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", + "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "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": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "tinycolor2": "^1.4.1" - }, - "dependencies": { - "@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" - } - } + "ms": "^2.1.1" } }, - "@jimp/plugin-contain": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz", - "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true }, - "@jimp/plugin-cover": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz", - "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "@jimp/plugin-crop": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz", - "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "@jimp/plugin-displace": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz", - "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "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 + } + } + }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, - "@jimp/plugin-dither": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz", - "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "@jimp/plugin-fisheye": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz", - "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "ansi-regex": "^4.1.0" } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "@jimp/plugin-flip": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz", - "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "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 + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "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 + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "@jimp/plugin-gaussian": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz", - "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==", + "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 + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-invert": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz", - "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==", + "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 + } + } + }, + "@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-mask": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz", - "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, - "@jimp/plugin-normalize": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz", - "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==", + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "@jimp/plugin-print": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz", - "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "load-bmfont": "^1.4.0" - }, - "dependencies": { - "@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" - } - } - } + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, - "@jimp/plugin-resize": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz", - "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==", + "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 + } + } + }, + "@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-rotate": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz", - "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==", + "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 + } + } + }, + "@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-scale": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz", - "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==", + "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 + } + } + }, + "@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-shadow": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz", - "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==", + "jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "dev": true + }, + "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 + } + } + }, + "@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/plugin-threshold": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz", - "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==", + "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 + } + } + }, + "@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/plugins": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz", - "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.10.3", - "@jimp/plugin-blur": "^0.10.3", - "@jimp/plugin-circle": "^0.10.3", - "@jimp/plugin-color": "^0.10.3", - "@jimp/plugin-contain": "^0.10.3", - "@jimp/plugin-cover": "^0.10.3", - "@jimp/plugin-crop": "^0.10.3", - "@jimp/plugin-displace": "^0.10.3", - "@jimp/plugin-dither": "^0.10.3", - "@jimp/plugin-fisheye": "^0.10.3", - "@jimp/plugin-flip": "^0.10.3", - "@jimp/plugin-gaussian": "^0.10.3", - "@jimp/plugin-invert": "^0.10.3", - "@jimp/plugin-mask": "^0.10.3", - "@jimp/plugin-normalize": "^0.10.3", - "@jimp/plugin-print": "^0.10.3", - "@jimp/plugin-resize": "^0.10.3", - "@jimp/plugin-rotate": "^0.10.3", - "@jimp/plugin-scale": "^0.10.3", - "@jimp/plugin-shadow": "^0.10.3", - "@jimp/plugin-threshold": "^0.10.3", - "core-js": "^3.4.1", - "timm": "^1.6.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/png": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz", - "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==", + "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 + } + } + }, + "@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "pngjs": "^3.3.3" - }, - "dependencies": { - "@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" - } - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/tiff": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz", - "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==", + "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 + } + } + }, + "@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "core-js": "^3.4.1", - "utif": "^2.0.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/types": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz", - "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.10.3", - "@jimp/gif": "^0.10.3", - "@jimp/jpeg": "^0.10.3", - "@jimp/png": "^0.10.3", - "@jimp/tiff": "^0.10.3", - "core-js": "^3.4.1", - "timm": "^1.6.1" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "@jimp/utils": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz", - "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==", + "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 + } + } + }, + "@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "core-js": "^3.4.1", - "regenerator-runtime": "^0.13.3" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "appium-support": { - "version": "2.48.1", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.48.1.tgz", - "integrity": "sha512-vo6e8NdX5k+TFma1cc9uKy83mdyMAbZ0ugZRxyS7MwU11bDuepcd8dUktAI9MDWmiob+KjbOR/dG220pQ/M/xQ==", + "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 + } + } + }, + "@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "archiver": "^4.0.1", - "axios": "^0.19.2", - "base64-stream": "^1.0.0", - "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.2", - "form-data": "^3.0.0", - "get-stream": "^5.1.0", - "glob": "^7.1.2", - "jimp": "^0.10.0", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", - "lodash": "^4.2.1", - "mjpeg-server": "^0.3.0", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", - "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^5.0.0", - "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "shell-quote": "^1.7.2", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1", - "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" - }, - "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "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 - } + "regenerator-runtime": "^0.13.4" } }, - "appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "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 + } + } + }, + "@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "regenerator-runtime": "^0.13.4" + } + }, + "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 + } + } + }, + "@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" } }, - "archiver": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-4.0.2.tgz", - "integrity": "sha512-B9IZjlGwaxF33UN4oPbfBkyA4V1SxNLeIhR1qY8sRXSsbdUkEHrrOvwlYFPx+8uQeCe9M+FG6KgO+imDmQ79CQ==", + "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 + } + } + }, + "@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.6", - "readable-stream": "^3.6.0", - "tar-stream": "^2.1.2", - "zip-stream": "^3.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "regenerator-runtime": "^0.13.4" } }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "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 + } + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "regenerator-runtime": "^0.13.4" } }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "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 + } + } + }, + "@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "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 - }, - "bl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", - "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + } + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } + "regenerator-runtime": "^0.13.4" } }, - "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "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 + } + } + }, + "@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "big-integer": "^1.6.44" + "regenerator-runtime": "^0.13.4" } }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "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 + } + } + }, + "@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "regenerator-runtime": "^0.13.4" } }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "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 + } + } + }, + "@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "regenerator-runtime": "^0.13.4" } }, - "compress-commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz", - "integrity": "sha512-FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==", + "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 + } + } + }, + "@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.7" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "regenerator-runtime": "^0.13.4" } }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "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 - }, - "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + } + } + }, + "@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" + "regenerator-runtime": "^0.13.4" } }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "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 + } + } + }, + "@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "regenerator-runtime": "^0.13.4" } }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "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 + } + } + }, + "@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "pump": "^3.0.0" + "regenerator-runtime": "^0.13.4" } }, - "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==", + "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 - }, - "jimp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz", - "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==", + } + } + }, + "@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.10.3", - "@jimp/plugins": "^0.10.3", - "@jimp/types": "^0.10.3", - "core-js": "^3.4.1", - "regenerator-runtime": "^0.13.3" - }, - "dependencies": { - "@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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "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 + } + } + }, + "@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "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 + } + } + }, + "@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "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 - }, - "node-simctl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", - "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", + } + } + }, + "@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "asyncbox": "^2.3.1", - "lodash": "^4.2.1", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1" + "regenerator-runtime": "^0.13.4" } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 + } + } + }, + "@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } }, - "pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "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 - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + } + } + }, + "@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "regenerator-runtime": "^0.13.4" } }, "regenerator-runtime": { @@ -3425,3547 +25540,4367 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + } + } + }, + "@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "requires": { - "glob": "^7.1.3" + "regenerator-runtime": "^0.13.4" } }, + "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 + } + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", + "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz", + "integrity": "sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==", + "dev": true + }, + "@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==", + "dev": true + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "@types/core-js": { + "version": "0.9.46", + "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", + "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", + "dev": true + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, + "@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/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.18", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", + "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, + "@types/karma": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-6.3.0.tgz", + "integrity": "sha512-NQ6AzL/0UhFKrK69R9aPV1a88MBau7F47Tr3Qwg8IlKALDVfRk9w+8r3VfOso0vrFT/IkztjfAPar090laUMdg==", + "dev": true, + "requires": { + "@types/node": "*", + "log4js": "^6.2.1" + } + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/mkdirp": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", + "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", + "dev": true + }, + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + }, + "@types/node": { + "version": "11.13.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.2.tgz", + "integrity": "sha512-HOtU5KqROKT7qX/itKHuTtt5fV0iXbheQvrgbLNXFJQBY/eh+VS5vmmTAVlo3qIGMsypm0G4N1t2AXjy1ZicaQ==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/platform": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.2.tgz", + "integrity": "sha512-Tn6OuJDAG7bJbyi4R7HqcxXp1w2lmIxVXqyNhPt1Bm0FO2EWIi3CI87JVzF7ncqK0ZMPuUycS3wTMIk85EeF1Q==", + "dev": true + }, + "@types/promise-polyfill": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/promise-polyfill/-/promise-polyfill-6.0.3.tgz", + "integrity": "sha512-f/BFgF9a+cgsMseC7rpv9+9TAE3YNjhfYrtwCo/pIeCDDfQtE6PY0b5bao2eIIEpZCBUy8Y5ToXd4ObjPSJuFw==", + "dev": true + }, + "@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/rimraf": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", + "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", + "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", + "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "dev": true, + "requires": { + "@typescript-eslint/parser": "1.7.0", + "@typescript-eslint/typescript-estree": "1.7.0", + "eslint-utils": "^1.3.1", + "regexpp": "^2.0.1", + "requireindex": "^1.2.0", + "tsutils": "^3.7.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", + "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "1.7.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", + "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, - "tar-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", - "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", - "dev": true, - "requires": { - "bl": "^4.0.1", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" - } - }, - "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "zip-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz", - "integrity": "sha512-r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^3.0.0", - "readable-stream": "^3.6.0" - } } } }, - "appium-support": { - "version": "2.48.1", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.48.1.tgz", - "integrity": "sha512-vo6e8NdX5k+TFma1cc9uKy83mdyMAbZ0ugZRxyS7MwU11bDuepcd8dUktAI9MDWmiob+KjbOR/dG220pQ/M/xQ==", + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "archiver": "^4.0.1", - "axios": "^0.19.2", - "base64-stream": "^1.0.0", - "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.2", - "form-data": "^3.0.0", - "get-stream": "^5.1.0", - "glob": "^7.1.2", - "jimp": "^0.10.0", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", - "lodash": "^4.2.1", - "mjpeg-server": "^0.3.0", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", - "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^5.0.0", - "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "shell-quote": "^1.7.2", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1", - "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", + "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "aggregate-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", + "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "dev": true, + "requires": { + "clean-stack": "^1.0.0", + "indent-string": "^3.0.0" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "@jimp/bmp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz", - "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "bmp-js": "^0.1.0", - "core-js": "^3.4.1" + "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": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "is-extendable": "^0.1.0" } } } }, - "@jimp/core": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz", - "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "core-js": "^3.4.1", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "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=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "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=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "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=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "minimist": "^1.2.5" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, - "@jimp/custom": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz", - "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.10.3", - "core-js": "^3.4.1" + "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": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "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=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "is-extendable": "^0.1.0" } } } }, - "@jimp/gif": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz", - "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "omggif": "^1.0.9" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "is-extendable": "^0.1.0" } } } }, - "@jimp/jpeg": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz", - "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "jpeg-js": "^0.3.4" - }, - "dependencies": { - "@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" - } - } + "kind-of": "^6.0.0" } }, - "@jimp/plugin-blit": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz", - "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "kind-of": "^6.0.0" } }, - "@jimp/plugin-blur": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz", - "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "@jimp/plugin-circle": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz", - "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" + "kind-of": "^3.0.2" }, "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "is-buffer": "^1.1.5" } } } }, - "@jimp/plugin-color": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz", - "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "appium-ios-simulator": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", + "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "async-lock": "^1.0.0", + "asyncbox": "^2.3.1", + "bluebird": "^3.5.1", + "fkill": "^5.0.0", + "lodash": "^4.2.1", + "node-simctl": "^4.0.0", + "openssl-wrapper": "^0.3.4", + "semver": "^5.5.0", + "shell-quote": "^1.6.1", + "source-map-support": "^0.5.3", + "teen_process": "^1.3.0" + }, + "dependencies": { + "appium-support": { + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", + "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "tinycolor2": "^1.4.1" + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" } - } - } - }, - "@jimp/plugin-contain": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz", - "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "lru-cache": "^6.0.0" } + }, + "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 } } }, - "@jimp/plugin-cover": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz", - "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==", + "appium-xcode": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", + "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true } } }, - "@jimp/plugin-crop": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz", - "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "delayed-stream": "~1.0.0" } }, - "@jimp/plugin-displace": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz", - "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==", + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } }, - "@jimp/plugin-dither": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz", - "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, - "@jimp/plugin-fisheye": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz", - "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "@jimp/plugin-flip": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz", - "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "yallist": "^4.0.0" } }, - "@jimp/plugin-gaussian": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz", - "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "node-simctl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", + "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "asyncbox": "^2.3.1", + "lodash": "^4.2.1", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1" } }, - "@jimp/plugin-invert": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz", - "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==", + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "glob": "^7.1.3" } }, - "@jimp/plugin-mask": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz", - "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==", + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "teen_process": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", + "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "lodash": "^4.17.4", + "shell-quote": "^1.4.3", + "source-map-support": "^0.5.3" } }, - "@jimp/plugin-normalize": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz", - "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==", + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "isexe": "^2.0.0" } }, - "@jimp/plugin-print": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz", - "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==", + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "dependencies": { + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "load-bmfont": "^1.4.0" - }, - "dependencies": { - "@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" - } - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "@jimp/plugin-resize": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz", - "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "inherits": "2.0.1" } - }, - "@jimp/plugin-rotate": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz", - "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==", + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true, + "optional": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "async-lock": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.0.tgz", + "integrity": "sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ==", + "dev": true + }, + "asyncbox": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-2.5.2.tgz", + "integrity": "sha512-fIN2NMNf3TUpgn2J4V3BqtwL8lWXrHon8OveR+NgJf/tKyk7v7jWWzcb0jRW0KanSgb09bF+xvE6K2rzRqisZQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "es6-mapify": "^1.1.0", + "lodash": "^4.17.4", + "source-map-support": "^0.5.5" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "dev": true + }, + "aws-sdk": { + "version": "2.269.1", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.269.1.tgz", + "integrity": "sha512-oIKzffzGR8fA9uT181wyahXQK5yBqF+qzql+0XoFePcFo7l8m8L9MAq5J9QSFXRNFM8cThjnSQpFoesVNzh7Pg==", + "dev": true, + "requires": { + "buffer": "4.9.1", + "events": "1.1.1", + "ieee754": "1.1.8", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.1.0", + "xml2js": "0.4.17" + } + }, + "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=", + "dev": true + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "ms": "2.0.0" } }, - "@jimp/plugin-scale": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz", - "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==", + "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==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "debug": "=3.1.0" } - }, - "@jimp/plugin-shadow": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz", - "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==", + } + } + }, + "babel-eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } - }, - "@jimp/plugin-threshold": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz", - "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==", + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/plugins": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz", - "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.10.3", - "@jimp/plugin-blur": "^0.10.3", - "@jimp/plugin-circle": "^0.10.3", - "@jimp/plugin-color": "^0.10.3", - "@jimp/plugin-contain": "^0.10.3", - "@jimp/plugin-cover": "^0.10.3", - "@jimp/plugin-crop": "^0.10.3", - "@jimp/plugin-displace": "^0.10.3", - "@jimp/plugin-dither": "^0.10.3", - "@jimp/plugin-fisheye": "^0.10.3", - "@jimp/plugin-flip": "^0.10.3", - "@jimp/plugin-gaussian": "^0.10.3", - "@jimp/plugin-invert": "^0.10.3", - "@jimp/plugin-mask": "^0.10.3", - "@jimp/plugin-normalize": "^0.10.3", - "@jimp/plugin-print": "^0.10.3", - "@jimp/plugin-resize": "^0.10.3", - "@jimp/plugin-rotate": "^0.10.3", - "@jimp/plugin-scale": "^0.10.3", - "@jimp/plugin-shadow": "^0.10.3", - "@jimp/plugin-threshold": "^0.10.3", - "core-js": "^3.4.1", - "timm": "^1.6.1" - }, - "dependencies": { - "@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" - } - } + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, - "@jimp/png": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz", - "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.10.3", - "core-js": "^3.4.1", - "pngjs": "^3.3.3" - }, - "dependencies": { - "@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" - } - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true - } + "locate-path": "^3.0.0" } }, - "@jimp/tiff": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz", - "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "core-js": "^3.4.1", - "utif": "^2.0.1" - }, - "dependencies": { - "@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" - } - } - } - }, - "@jimp/types": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz", - "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.10.3", - "@jimp/gif": "^0.10.3", - "@jimp/jpeg": "^0.10.3", - "@jimp/png": "^0.10.3", - "@jimp/tiff": "^0.10.3", - "core-js": "^3.4.1", - "timm": "^1.6.1" - }, - "dependencies": { - "@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" - } - } + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "@jimp/utils": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz", - "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "core-js": "^3.4.1", - "regenerator-runtime": "^0.13.3" - }, - "dependencies": { - "@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" - } - } + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "archiver": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-4.0.2.tgz", - "integrity": "sha512-B9IZjlGwaxF33UN4oPbfBkyA4V1SxNLeIhR1qY8sRXSsbdUkEHrrOvwlYFPx+8uQeCe9M+FG6KgO+imDmQ79CQ==", + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.6", - "readable-stream": "^3.6.0", - "tar-stream": "^2.1.2", - "zip-stream": "^3.0.1" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "p-try": "^2.0.0" } }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "p-limit": "^2.0.0" } }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "bl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", - "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "requires": { - "big-integer": "^1.6.44" - } - }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "find-up": "^3.0.0" } }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "babel-plugin-add-module-exports": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", + "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", + "dev": true, + "requires": { + "chokidar": "^2.0.4" + } + }, + "babel-plugin-dev-expression": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz", + "integrity": "sha1-1Ke+7++7UOPyc0mQqCokhs+eue4=", + "dev": true + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "locate-path": "^3.0.0" } }, - "compress-commons": { + "locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-3.0.0.tgz", - "integrity": "sha512-FyDqr8TKX5/X0qo+aVfaZ+PVmNJHJeckFBlq8jZGSJOgnynhfifoyl24qaqdUdDIBe0EVTHByN6NAkqYvE/2Xg==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.7" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "dev": true - }, - "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" + "p-try": "^2.0.0" } }, - "form-data": { + "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "p-limit": "^2.0.0" } }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "5.8.24", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", + "integrity": "sha1-MBSmsBvUy3RyDxOSUlOuDZJoFHs=", + "dev": true, + "requires": { + "core-js": "^1.0.0" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "pump": "^3.0.0" + "is-descriptor": "^1.0.0" } }, - "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==", - "dev": true - }, - "jimp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz", - "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.10.3", - "@jimp/plugins": "^0.10.3", - "@jimp/types": "^0.10.3", - "core-js": "^3.4.1", - "regenerator-runtime": "^0.13.3" - }, - "dependencies": { - "@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" - } - } + "kind-of": "^6.0.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "kind-of": "^6.0.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 - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "glob": "^7.1.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "shell-quote": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-1.0.0.tgz", + "integrity": "sha512-BQQZftaO48FcE1Kof9CmXMFaAdqkcNorgc8CxesZv9nMbbTF1EFyQe89UOuh//QMmdtfUDXyO8rgUalemL5ODA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true, + "optional": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "http-errors": { "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 - }, - "tar-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", - "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { - "bl": "^4.0.1", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, - "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "zip-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-3.0.1.tgz", - "integrity": "sha512-r+JdDipt93ttDjsOVPU5zaq5bAyY+3H19bDrThkvuVxC0xMQzU1PJcS6D+KrP3u96gH9XLomcHPb+2skoDjulQ==", + } + } + }, + "bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", + "dev": true, + "requires": { + "stream-buffers": "~2.2.0" + } + }, + "bplist-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.0.tgz", + "integrity": "sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA==", + "dev": true, + "requires": { + "big-integer": "1.6.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^3.0.0", - "readable-stream": "^3.6.0" + "is-extendable": "^0.1.0" } } } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "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==", + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", "dev": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "node-int64": "^0.4.0" } }, - "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } }, - "arr-flatten": { + "buffer-alloc-unsafe": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, - "array-filter": { + "buffer-equal": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true }, - "array-ify": { + "buffer-fill": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", "dev": true }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "buffer-from": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", "dev": true }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "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 }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + } + } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", "dev": true, "requires": { - "util": "0.10.3" + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" }, "dependencies": { - "inherits": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "normalize-url": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "dev": true, "requires": { - "inherits": "2.0.1" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" } } } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assertion-error": { + "callback-stream": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", + "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "> 1.0.0 < 3.0.0" + } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { - "lodash": "^4.17.11" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" }, "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "async-lock": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.0.tgz", - "integrity": "sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ==", + "caniuse-lite": { + "version": "1.0.30000957", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", + "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", "dev": true }, - "asyncbox": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-2.5.2.tgz", - "integrity": "sha512-fIN2NMNf3TUpgn2J4V3BqtwL8lWXrHon8OveR+NgJf/tKyk7v7jWWzcb0jRW0KanSgb09bF+xvE6K2rzRqisZQ==", + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "es6-mapify": "^1.1.0", - "lodash": "^4.17.4", - "source-map-support": "^0.5.5" + "rsvp": "^4.8.4" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true + "chai": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", + "integrity": "sha1-ZuISeebzxkFf+CMYeCJ5AOIXGzk=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^2.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + } }, - "aws-sdk": { - "version": "2.269.1", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.269.1.tgz", - "integrity": "sha512-oIKzffzGR8fA9uT181wyahXQK5yBqF+qzql+0XoFePcFo7l8m8L9MAq5J9QSFXRNFM8cThjnSQpFoesVNzh7Pg==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "buffer": "4.9.1", - "events": "1.1.1", - "ieee754": "1.1.8", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.1.0", - "xml2js": "0.4.17" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "aws-sign2": { + "chardet": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", "dev": true, + "optional": true, "requires": { - "follow-redirects": "1.5.10" + "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": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "optional": true, "requires": { - "ms": "2.0.0" + "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" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "optional": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "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=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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=", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "optional": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "optional": true + } } }, - "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==", - "dev": true, - "requires": { - "debug": "=3.1.0" - } - } - } - }, - "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", - "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, + "optional": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "is-extendable": "^0.1.0" } - } - } - }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, - "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, + "optional": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "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=", + "dev": true, + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, + "optional": true, "requires": { - "locate-path": "^3.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, + "optional": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "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=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, + "optional": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true + } } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, + "optional": true, "requires": { - "p-try": "^2.0.0" + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true + } } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, + "optional": true, "requires": { - "p-limit": "^2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true + } } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true + }, + "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==", "dev": true, + "optional": true, "requires": { - "find-up": "^3.0.0" + "is-extglob": "^2.1.1" } }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, - "babel-plugin-add-module-exports": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", - "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", - "dev": true, - "requires": { - "chokidar": "^2.0.4" - } - }, - "babel-plugin-dev-expression": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz", - "integrity": "sha1-1Ke+7++7UOPyc0mQqCokhs+eue4=", - "dev": true - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { + "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "optional": true, "requires": { - "locate-path": "^3.0.0" + "kind-of": "^3.0.2" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } + "optional": true }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, + "optional": true, "requires": { - "p-try": "^2.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true, + "optional": true + } } }, - "p-locate": { + "normalize-path": { "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==", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, + "optional": true, "requires": { - "p-limit": "^2.0.0" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true, + "optional": true } } }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "dev": true, - "requires": { - "@types/babel__traverse": "^7.0.6" - } + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "tslib": "^1.9.0" } }, - "babel-runtime": { - "version": "5.8.24", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", - "integrity": "sha1-MBSmsBvUy3RyDxOSUlOuDZJoFHs=", + "chromeless": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/chromeless/-/chromeless-1.5.2.tgz", + "integrity": "sha512-lxQHERZOP1aD+8Uvj+P4xM72e4aNous5igOvs+w6gRrcOZ6oIuYaSTJWMuhnTSgQzhg0APsAsIQq+a+k/2Yvow==", "dev": true, "requires": { - "core-js": "^1.0.0" + "aws-sdk": "^2.177.0", + "bluebird": "^3.5.1", + "chrome-launcher": "^0.10.0", + "chrome-remote-interface": "^0.25.5", + "cuid": "^2.1.0", + "form-data": "^2.3.1", + "got": "^8.0.0", + "mqtt": "^2.15.0" }, "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "@types/node": { + "version": "9.6.47", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz", + "integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==", "dev": true - } - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + }, + "chrome-launcher": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.5.tgz", + "integrity": "sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g==", + "dev": true, + "requires": { + "@types/core-js": "^0.9.41", + "@types/mkdirp": "^0.3.29", + "@types/node": "^9.3.0", + "@types/rimraf": "^0.0.28", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + } + }, + "chrome-remote-interface": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz", + "integrity": "sha512-6zI6LbR2IiGmduFZededaerEr9hHXabxT/L+fRrdq65a0CfyLMzpq0BKuZiqN0Upqcacsb6q2POj7fmobwBsEA==", + "dev": true, + "requires": { + "commander": "2.11.x", + "ws": "3.3.x" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "cuid": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", + "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" } }, - "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==", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "minimist": "0.0.8" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "p-finally": "^1.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base64-arraybuffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", - "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "base64-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-1.0.0.tgz", - "integrity": "sha512-BQQZftaO48FcE1Kof9CmXMFaAdqkcNorgc8CxesZv9nMbbTF1EFyQe89UOuh//QMmdtfUDXyO8rgUalemL5ODA==", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } - }, - "bplist-creator": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", - "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", - "dev": true, - "requires": { - "stream-buffers": "~2.2.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "prepend-http": "^2.0.0" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } } } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "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=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } + "clean-stack": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", + "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", + "dev": true }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "restore-cursor": "^2.0.0" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "pako": "~1.0.5" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, "requires": { - "fast-json-stable-stringify": "2.x" + "mimic-response": "^1.0.0" } }, - "bser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", - "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "color-name": "1.1.1" } }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.0.0.tgz", + "integrity": "sha1-wMNSUBz29S6RJOPvicmAbiAi6+8=", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "leven": "^1.0.0", + "minimist": "^1.1.0" }, "dependencies": { - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "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==", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } }, - "cache-base": { + "commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compress-commons": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", + "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", "dev": true, "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" }, "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "is-plain-obj": "^1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } }, - "callback-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", - "integrity": "sha1-RwGlEmbwbgbqpx/BcjOCLYdfSQg=", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "> 1.0.0 < 3.0.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } + "safe-buffer": "5.1.2" } }, - "caniuse-lite": { - "version": "1.0.30000957", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", - "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "conventional-changelog": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.21.tgz", + "integrity": "sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "conventional-changelog-angular": "^5.0.10", + "conventional-changelog-atom": "^2.0.7", + "conventional-changelog-codemirror": "^2.0.7", + "conventional-changelog-conventionalcommits": "^4.3.0", + "conventional-changelog-core": "^4.1.7", + "conventional-changelog-ember": "^2.0.8", + "conventional-changelog-eslint": "^3.0.8", + "conventional-changelog-express": "^2.0.5", + "conventional-changelog-jquery": "^3.0.10", + "conventional-changelog-jshint": "^2.0.7", + "conventional-changelog-preset-loader": "^2.3.4" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "conventional-changelog-angular": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", + "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } }, - "chai": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", - "integrity": "sha1-ZuISeebzxkFf+CMYeCJ5AOIXGzk=", + "conventional-changelog-atom": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz", + "integrity": "sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^2.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "q": "^1.5.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "conventional-changelog-codemirror": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz", + "integrity": "sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "q": "^1.5.1" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", "dev": true }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "conventional-changelog-conventionalcommits": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", + "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", "dev": true, - "optional": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "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=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz", + "integrity": "sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^4.0.18", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "shelljs": "^0.8.3", + "through2": "^4.0.0" + }, + "dependencies": { + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "optional": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } + "locate-path": "^5.0.0", + "path-exists": "^4.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==", + "git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", "dev": true, - "optional": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.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==", + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, - "optional": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } + "lru-cache": "^6.0.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true - }, - "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==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true, "requires": { - "is-extglob": "^2.1.1" + "p-locate": "^4.1.0" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "optional": true, "requires": { - "kind-of": "^3.0.2" + "yallist": "^4.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "optional": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, - "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==", + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "optional": true, "requires": { - "is-plain-object": "^2.0.4" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", "dev": true, - "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" } }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true, - "optional": true - } - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "chromeless": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/chromeless/-/chromeless-1.5.2.tgz", - "integrity": "sha512-lxQHERZOP1aD+8Uvj+P4xM72e4aNous5igOvs+w6gRrcOZ6oIuYaSTJWMuhnTSgQzhg0APsAsIQq+a+k/2Yvow==", - "dev": true, - "requires": { - "aws-sdk": "^2.177.0", - "bluebird": "^3.5.1", - "chrome-launcher": "^0.10.0", - "chrome-remote-interface": "^0.25.5", - "cuid": "^2.1.0", - "form-data": "^2.3.1", - "got": "^8.0.0", - "mqtt": "^2.15.0" - }, - "dependencies": { - "@types/node": { - "version": "9.6.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz", - "integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==", - "dev": true - }, - "chrome-launcher": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.5.tgz", - "integrity": "sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g==", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" + "p-try": "^2.0.0" } }, - "chrome-remote-interface": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz", - "integrity": "sha512-6zI6LbR2IiGmduFZededaerEr9hHXabxT/L+fRrdq65a0CfyLMzpq0BKuZiqN0Upqcacsb6q2POj7fmobwBsEA==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "commander": "2.11.x", - "ws": "3.3.x" + "p-limit": "^2.2.0" } }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "cuid": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", - "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==", + "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==", "dev": true }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "minimist": "0.0.8" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "p-finally": "^1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "prepend-http": "^2.0.0" + "lru-cache": "^6.0.0" } }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "readable-stream": "^3.0.0" } - } - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "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=", + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "readable-stream": "3" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true }, - "strip-ansi": { + "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "conventional-changelog-ember": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", + "integrity": "sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "q": "^1.5.1" } }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true - }, - "commist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.0.0.tgz", - "integrity": "sha1-wMNSUBz29S6RJOPvicmAbiAi6+8=", + "conventional-changelog-eslint": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz", + "integrity": "sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A==", "dev": true, "requires": { - "leven": "^1.0.0", - "minimist": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "q": "^1.5.1" } }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "conventional-changelog-express": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz", + "integrity": "sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw==", "dev": true, "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "q": "^1.5.1" } }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "conventional-changelog-jquery": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz", + "integrity": "sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg==", + "dev": true, + "requires": { + "q": "^1.5.1" + } }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "conventional-changelog-jshint": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.8.tgz", + "integrity": "sha512-hB/iI0IiZwnZ+seYI+qEQ4b+EMQSEC8jGIvhO2Vpz1E5p8FgLz75OX8oB1xJWl+s4xBMB6f8zJr0tC/BL7YOjw==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "compare-func": "^2.0.0", + "q": "^1.5.1" } }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", + "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", "dev": true, "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" }, "dependencies": { - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.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==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true } } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "conventional-changelog": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.21.tgz", - "integrity": "sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.10", - "conventional-changelog-atom": "^2.0.7", - "conventional-changelog-codemirror": "^2.0.7", - "conventional-changelog-conventionalcommits": "^4.3.0", - "conventional-changelog-core": "^4.1.7", - "conventional-changelog-ember": "^2.0.8", - "conventional-changelog-eslint": "^3.0.8", - "conventional-changelog-express": "^2.0.5", - "conventional-changelog-jquery": "^3.0.10", - "conventional-changelog-jshint": "^2.0.7", - "conventional-changelog-preset-loader": "^2.3.4" - } - }, - "conventional-changelog-angular": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", - "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-atom": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz", - "integrity": "sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-codemirror": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz", - "integrity": "sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg==", + "conventional-commits-filter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", + "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", "dev": true, "requires": { - "q": "^1.5.1" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" } }, - "conventional-changelog-config-spec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true - }, - "conventional-changelog-conventionalcommits": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz", - "integrity": "sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg==", + "conventional-commits-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", "dev": true, "requires": { - "compare-func": "^1.3.1", + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", "lodash": "^4.17.15", - "q": "^1.5.1" + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", + "trim-off-newlines": "^1.0.0" }, "dependencies": { - "compare-func": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.4.tgz", - "integrity": "sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "lru-cache": "^6.0.0" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true - } - } - }, - "conventional-changelog-core": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.1.7.tgz", - "integrity": "sha512-UBvSrQR2RdKbSQKh7RhueiiY4ZAIOW3+CSWdtKOwRv+KxIMNFKm1rOcGBFx0eA8AKhGkkmmacoTWJTqyz7Q0VA==", - "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^4.0.16", - "conventional-commits-parser": "^3.1.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^1.0.0", - "git-raw-commits": "2.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.0.0", - "lodash": "^4.17.15", - "normalize-package-data": "^2.3.5", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "shelljs": "^0.8.3", - "through2": "^3.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "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==", + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } - } - } - }, - "conventional-changelog-ember": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", - "integrity": "sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-eslint": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz", - "integrity": "sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-express": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz", - "integrity": "sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-jquery": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz", - "integrity": "sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg==", - "dev": true, - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-jshint": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.8.tgz", - "integrity": "sha512-hB/iI0IiZwnZ+seYI+qEQ4b+EMQSEC8jGIvhO2Vpz1E5p8FgLz75OX8oB1xJWl+s4xBMB6f8zJr0tC/BL7YOjw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true - }, - "conventional-changelog-writer": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz", - "integrity": "sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "conventional-commits-filter": "^2.0.6", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^3.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, - "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==", + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "readable-stream": "^3.0.0" } - } - } - }, - "conventional-commits-filter": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", - "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", - "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "split2": "^2.0.0", - "through2": "^3.0.0", - "trim-off-newlines": "^1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true }, "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==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "readable-stream": "3" } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true } } }, @@ -7020,9 +29955,9 @@ } }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "dev": true }, "cookie-signature": { @@ -7051,12 +29986,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true - }, "core-js-compat": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", @@ -7116,23 +30045,35 @@ "vary": "^1" } }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "requires": { - "buffer": "^5.1.0" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, "dependencies": { - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } @@ -7332,9 +30273,9 @@ } }, "date-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", - "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", "dev": true }, "date-now": { @@ -7722,18 +30663,32 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } } }, "emoji-regex": { @@ -7764,99 +30719,67 @@ } }, "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", "dev": true, "requires": { "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "requires": { - "ms": "2.0.0" + "object-assign": "^4", + "vary": "^1" } }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - } - } - }, - "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "requires": {} } } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "base64-arraybuffer": "0.1.4" }, "dependencies": { "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", "dev": true } } @@ -7945,6 +30868,12 @@ "es6-promise": "^4.0.3" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -8237,18 +31166,48 @@ "dev": true }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "exif-parser": { @@ -8263,6 +31222,12 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -8322,98 +31287,53 @@ } }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true } } @@ -8454,17 +31374,6 @@ "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } } }, "extglob": { @@ -8658,26 +31567,18 @@ } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } } }, "find-cache-dir": { @@ -8802,9 +31703,9 @@ } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -9425,24 +32326,24 @@ "dev": true, "optional": true }, - "string-width": { - "version": "1.0.2", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "safe-buffer": "~5.1.0" } }, - "string_decoder": { - "version": "1.1.1", + "string-width": { + "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -9834,6 +32735,24 @@ } } }, + "gifwrap": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", + "integrity": "sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==", + "dev": true, + "requires": { + "image-q": "^1.1.1", + "omggif": "^1.0.10" + }, + "dependencies": { + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true + } + } + }, "git-raw-commits": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", @@ -9956,20 +32875,226 @@ } }, "git-semver-tags": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.0.0.tgz", - "integrity": "sha512-LajaAWLYVBff+1NVircURJFL8TQ3EMIcLAfHisWYX/nPoMwnTYfWAznQDmMujlLqoD12VtLmoSrF1sQ5MhimEQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, "requires": { - "meow": "^7.0.0", + "meow": "^8.0.0", "semver": "^6.0.0" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.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==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true } } }, @@ -10001,7 +33126,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, - "optional": true, "requires": { "is-glob": "^4.0.1" } @@ -10117,9 +33241,9 @@ "dev": true }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "growl": { @@ -10135,9 +33259,9 @@ "dev": true }, "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { "minimist": "^1.2.5", @@ -10189,32 +33313,9 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.1.1" - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } + "function-bind": "^1.1.1" } }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -10498,9 +33599,9 @@ } }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -10524,6 +33625,12 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "image-q": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-1.1.1.tgz", + "integrity": "sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=", + "dev": true + }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -10645,9 +33752,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inquirer": { @@ -10722,15 +33829,15 @@ } }, "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=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-absolute": { @@ -10763,6 +33870,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, + "optional": true, "requires": { "binary-extensions": "^1.0.0" } @@ -10805,6 +33913,15 @@ "ci-info": "^2.0.0" } }, + "is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -10839,6 +33956,12 @@ } } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -11040,13 +34163,10 @@ "dev": true }, "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true }, "isexe": { "version": "2.0.0", @@ -11567,14 +34687,6 @@ "micromatch": "^3.1.10", "sane": "^4.0.3", "walker": "^1.0.7" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - } } }, "jest-jasmine2": { @@ -11717,14 +34829,6 @@ "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - } } }, "jest-runtime": { @@ -11796,12 +34900,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -11880,9 +34978,9 @@ } }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { @@ -11970,12 +35068,6 @@ "source-map": "^0.6.0" }, "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -12054,18 +35146,42 @@ } } }, + "jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "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 + } + } + }, "jmespath": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", "dev": true }, - "jpeg-js": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", - "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==", - "dev": true - }, "jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -12142,9 +35258,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "sax": { @@ -12258,437 +35374,234 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "jszip": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", - "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, - "karma": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", - "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, - "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "braces": "^2.3.2", - "chokidar": "^2.0.3", - "colors": "^1.1.0", - "connect": "^3.6.0", - "core-js": "^2.2.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.11", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "jszip": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "color-convert": "^2.0.1" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "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=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "fill-range": "^7.0.1" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.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==", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.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==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "color-name": "~1.1.4" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "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==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "to-regex-range": "^5.0.1" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "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" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" } }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "normalize-path": { @@ -12698,14 +35611,21 @@ "dev": true }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" } }, "source-map": { @@ -12714,21 +35634,84 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } } } }, "karma-chrome-launcher": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { - "fs-access": "^1.0.0", "which": "^1.2.1" } }, @@ -12742,10 +35725,34 @@ } }, "karma-firefox-launcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", - "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.0.tgz", + "integrity": "sha512-dkiyqN2R6fCWt78rciOXJLFDWcQ7QEQi++HgebPJlw1y0ycDjGNDHuSrhdh48QG02fzZKK20WHFWVyBZ6CPngg==", + "dev": true, + "requires": { + "is-wsl": "^2.2.0", + "which": "^2.0.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } }, "karma-ie-launcher": { "version": "1.0.0", @@ -12757,36 +35764,36 @@ } }, "karma-junit-reporter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz", - "integrity": "sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", + "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", "dev": true, "requires": { "path-is-absolute": "^1.0.0", - "xmlbuilder": "8.2.2" + "xmlbuilder": "12.0.0" }, "dependencies": { "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", + "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", "dev": true } } }, "karma-mocha": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", - "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", "dev": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.2.3" }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } @@ -12851,12 +35858,12 @@ } }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "left-pad": { @@ -12982,9 +35989,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash._reinterpolate": { @@ -13076,31 +36083,31 @@ } }, "log4js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.1.0.tgz", - "integrity": "sha512-eDa+zZPeVEeK6QGJAePyXM6pg4P3n3TO5rX9iZMVY48JshsTyLJZLIL5HipI1kQ2qLsSyOpUqNND/C5H4WhhiA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", "dev": true, "requires": { - "date-format": "^2.0.0", + "date-format": "^3.0.0", "debug": "^4.1.1", - "flatted": "^2.0.0", - "rfdc": "^1.1.2", - "streamroller": "^1.0.4" + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -13227,12 +36234,22 @@ "dev": true }, "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "memory-fs": { @@ -13471,24 +36488,24 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.47.0" } }, "mimic-fn": { @@ -13615,12 +36632,6 @@ } } }, - "mjpeg-server": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mjpeg-server/-/mjpeg-server-0.3.0.tgz", - "integrity": "sha1-rx3hP3VkJwi6bsFw36xAi9xdlzc=", - "dev": true - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -13890,9 +36901,9 @@ } }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { @@ -14151,9 +37162,9 @@ } }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, "neo-async": { @@ -14301,20 +37312,145 @@ "teen_process": "^1.5.1" }, "dependencies": { + "appium-support": { + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", + "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" + }, + "dependencies": { + "plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + } + }, + "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 + } + } + }, "appium-xcode": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" + }, + "dependencies": { + "plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" } }, "semver": { @@ -14335,6 +37471,27 @@ "shell-quote": "^1.4.3", "source-map-support": "^0.5.3" } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true } } }, @@ -14422,12 +37579,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -14551,24 +37702,6 @@ "integrity": "sha1-wB7Jjk3NK13+C2k/MYJyAOO4Gwc=", "dev": true }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -14599,14 +37732,14 @@ "dev": true }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, "os-tmpdir": { @@ -14791,28 +37924,10 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "pascalcase": { @@ -14919,8 +38034,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "optional": true + "dev": true }, "pid-from-port": { "version": "1.1.3", @@ -15002,25 +38116,6 @@ "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", "dev": true }, - "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "dev": true, - "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - }, - "dependencies": { - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - } - } - }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -15092,6 +38187,12 @@ } } }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "dev": true + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -15142,13 +38243,13 @@ } }, "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -15239,9 +38340,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, "query-string": { @@ -15292,21 +38393,42 @@ } }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + } } }, "react-is": { @@ -15396,6 +38518,15 @@ "util-deprecate": "~1.0.1" } }, + "readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", @@ -15557,6 +38688,41 @@ "requires": { "has-flag": "^3.0.0" } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } } } }, @@ -15727,9 +38893,9 @@ "dev": true }, "rfdc": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", - "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rimraf": { @@ -16134,9 +39300,9 @@ "dev": true }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { "debug": "2.6.9", @@ -16146,18 +39312,43 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true } } @@ -16184,15 +39375,15 @@ } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "set-blocking": { @@ -16434,99 +39625,69 @@ } }, "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true }, - "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", - "to-array": "0.1.4" - }, - "dependencies": { - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "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 } } @@ -16566,9 +39727,9 @@ } }, "source-map-support": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "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", @@ -16771,12 +39932,42 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "compare-func": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.4.tgz", + "integrity": "sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz", + "integrity": "sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -16814,6 +40005,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -16896,12 +40093,6 @@ "strip-ansi": "^6.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==", - "dev": true - }, "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", @@ -17022,48 +40213,46 @@ "dev": true }, "streamroller": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.4.tgz", - "integrity": "sha512-Wc2Gm5ygjSX8ZpW9J7Y9FwiSzTlKSvcl0FTTMd3rn7RoxDXpBW+xD9TY5sWL2n0UR61COB0LG1BQvN6nTUQbLQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "dev": true, "requires": { - "async": "^2.6.1", - "date-format": "^2.0.0", - "debug": "^3.1.0", - "fs-extra": "^7.0.0", - "lodash": "^4.17.10" + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" }, "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true - } + "ms": "2.1.2" } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "ms": "^2.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -17074,6 +40263,15 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -17139,15 +40337,6 @@ "function-bind": "^1.0.2" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "stringify-package": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", @@ -17290,6 +40479,73 @@ "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", "dev": true }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "taskkill": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", @@ -17332,19 +40588,6 @@ } } }, - "teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" - } - }, "terser-webpack-plugin": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", @@ -17449,12 +40692,6 @@ "path-is-absolute": "^1.0.0" } }, - "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==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -17588,20 +40825,10 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "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" - } - }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -17647,9 +40874,9 @@ } }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { @@ -17776,12 +41003,6 @@ "is-negated-glob": "^1.0.0" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -17830,6 +41051,12 @@ } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", @@ -18043,13 +41270,13 @@ "dev": true }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "~2.1.24" } }, "typedarray": { @@ -18064,6 +41291,12 @@ "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", "dev": true }, + "ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "dev": true + }, "uglify-es": { "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", @@ -18337,16 +41570,6 @@ } } }, - "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -18965,9 +42188,9 @@ } }, "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { @@ -19052,17 +42275,6 @@ "dev": true, "requires": { "iconv-lite": "0.4.24" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } } }, "whatwg-mimetype": { @@ -19232,15 +42444,9 @@ } }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", + "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", "dev": true }, "xtend": { @@ -19250,9 +42456,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { @@ -19262,33 +42468,123 @@ "dev": true }, "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + } } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true }, "yargs-unparser": { "version": "1.5.0", @@ -19454,6 +42750,14 @@ "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" + }, + "dependencies": { + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + } } }, "yargs-parser": { @@ -19489,17 +42793,35 @@ } } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, "yn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", - "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } } } } diff --git a/package.json b/package.json index cd361b225..52b7344f3 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,10 @@ "@babel/preset-env": "^7.4.3", "@babel/preset-flow": "^7.0.0", "@types/chai": "^4.1.7", + "@types/express": "^4.17.11", "@types/glob": "^7.1.1", "@types/jest": "^24.0.18", + "@types/karma": "^6.3.0", "@types/mocha": "^5.2.6", "@types/node": "^11.13.2", "@types/platform": "^1.3.2", @@ -50,20 +52,20 @@ "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-plugin-prettier": "3.0.1", - "express": "^4.16.4", + "express": "^4.17.1", "filenamify-url": "1.0.0", "glob": "7.1.3", "html2canvas-proxy": "1.0.1", "jest": "^24.9.0", "jquery": "^3.5.1", "js-polyfills": "^0.1.42", - "karma": "^4.0.1", - "karma-chrome-launcher": "^2.2.0", + "karma": "^6.3.2", + "karma-chrome-launcher": "^3.1.0", "karma-edge-launcher": "^0.4.2", - "karma-firefox-launcher": "^1.1.0", + "karma-firefox-launcher": "^2.1.0", "karma-ie-launcher": "^1.0.0", - "karma-junit-reporter": "^1.2.0", - "karma-mocha": "^1.3.0", + "karma-junit-reporter": "^2.0.1", + "karma-mocha": "^2.0.1", "karma-safarinative-launcher": "^1.1.0", "karma-sauce-launcher": "^2.0.2", "mocha": "^6.1.4", @@ -88,7 +90,8 @@ "uglify-js": "^3.5.11", "uglifyjs-webpack-plugin": "^1.1.2", "webpack": "^4.29.6", - "webpack-cli": "^3.3.12" + "webpack-cli": "^3.3.12", + "yargs": "^17.0.1" }, "scripts": { "prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build", @@ -103,10 +106,10 @@ "lint": "eslint src/**/*.ts", "test": "npm run lint && npm run unittest && npm run karma", "unittest": "jest", - "karma": "node karma", + "karma": "ts-node tests/karma", "watch": "rollup -c rollup.config.ts -w", "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts", - "start": "node tests/server" + "start": "ts-node tests/server --port=8080 --cors=8081" }, "homepage": "https://html2canvas.hertzen.com", "license": "MIT", diff --git a/tests/karma.ts b/tests/karma.ts new file mode 100644 index 000000000..454db1ba2 --- /dev/null +++ b/tests/karma.ts @@ -0,0 +1,32 @@ +import {screenshotApp, corsApp} from './server'; +import {Server} from 'http'; +import {config as KarmaConfig, Server as KarmaServer, TestResults} from 'karma'; +import * as path from 'path'; + +const karmaTestRunner = (): Promise => + new Promise((resolve, reject) => { + const karmaConfig = KarmaConfig.parseConfig(path.resolve(__dirname, '../karma.conf.js'), {}); + const server = new KarmaServer(karmaConfig, (exitCode: number) => { + if (exitCode > 0) { + reject(`Karma has exited with ${exitCode}`); + } else { + resolve(); + } + }); + server.on('run_complete', (_browsers: any, _results: TestResults) => { + server.stop(); + }); + server.start(); + }); +const servers: Server[] = []; + +servers.push(screenshotApp.listen(8000)); +servers.push(corsApp.listen(8081)); + +karmaTestRunner().then(() => { + servers.forEach(server => server.close()); +}).catch(e => { + console.error(e); + process.exit(1); +}); + diff --git a/tests/server.js b/tests/server.js deleted file mode 100644 index faf5fde5b..000000000 --- a/tests/server.js +++ /dev/null @@ -1,24 +0,0 @@ -const express = require('express'); -const cors = require('cors'); -const path = require('path'); -const fs = require('fs'); -const serveIndex = require('serve-index'); -const proxy = require('html2canvas-proxy'); - -const PORT = 8080; -const CORS_PORT = 8081; - -const app = express(); -app.use('/', serveIndex(path.resolve(__dirname, '../'), {icons: true})); -app.use('/', express.static(path.resolve(__dirname, '../'))); -app.listen(PORT, () => { - console.log(`Server running on port ${PORT}`); -}); - -const corsApp = express(); -corsApp.use('/proxy', proxy()); -corsApp.use('/cors', cors(), express.static(path.resolve(__dirname, '../'))); -corsApp.use('/', express.static(path.resolve(__dirname, '.'))); -corsApp.listen(CORS_PORT, () => { - console.log(`CORS server running on port ${CORS_PORT}`); -}); diff --git a/tests/server.ts b/tests/server.ts new file mode 100644 index 000000000..b9f6ca6c0 --- /dev/null +++ b/tests/server.ts @@ -0,0 +1,93 @@ +import * as express from 'express'; +const cors = require('cors'); +const path = require('path'); +const serveIndex = require('serve-index'); +const proxy = require('html2canvas-proxy'); +import yargs from 'yargs'; +import {ScreenshotRequest} from './types'; +const fs = require('fs'); +const bodyParser = require('body-parser'); +const filenamifyUrl = require('filenamify-url'); +const mkdirp = require('mkdirp'); + +export const app = express(); +app.use('/', serveIndex(path.resolve(__dirname, '../'), {icons: true})); +app.use('/', express.static(path.resolve(__dirname, '../'))); + +export const corsApp = express(); +corsApp.use('/proxy', proxy()); +corsApp.use('/cors', cors(), express.static(path.resolve(__dirname, '../'))); +corsApp.use('/', express.static(path.resolve(__dirname, '.'))); + +export const screenshotApp = express(); +screenshotApp.use(cors()); +screenshotApp.use((req: express.Request, _res: express.Response, next: express.NextFunction) => { + // IE9 doesn't set headers for cross-domain ajax requests + if (typeof req.headers['content-type'] === 'undefined') { + req.headers['content-type'] = 'application/json'; + } + next(); +}); +screenshotApp.use( + bodyParser.json({ + limit: '15mb', + type: '*/*' + }) +); + +const prefix = 'data:image/png;base64,'; +const screenshotFolder = '../tmp/reftests'; +const metadataFolder = '../tmp/reftests/metadata'; + +mkdirp.sync(path.resolve(__dirname, screenshotFolder)); +mkdirp.sync(path.resolve(__dirname, metadataFolder)); + +const writeScreenshot = (buffer: Buffer, body: ScreenshotRequest) => { + const filename = `${filenamifyUrl(body.test.replace(/^\/tests\/reftests\//, '').replace(/\.html$/, ''), { + replacement: '-' + })}!${[process.env.TARGET_BROWSER, body.platform.name, body.platform.version].join('-')}`; + + fs.writeFileSync(path.resolve(__dirname, screenshotFolder, `${filename}.png`), buffer); + return filename; +}; + +screenshotApp.post('/screenshot', (req: express.Request<{}, void, ScreenshotRequest>, res: express.Response) => { + if (!req.body || !req.body.screenshot) { + return res.sendStatus(400); + } + + const buffer = Buffer.from(req.body.screenshot.substring(prefix.length), 'base64'); + const filename = writeScreenshot(buffer, req.body); + fs.writeFileSync( + path.resolve(__dirname, metadataFolder, `${filename}.json`), + JSON.stringify({ + windowWidth: req.body.windowWidth, + windowHeight: req.body.windowHeight, + platform: req.body.platform, + devicePixelRatio: req.body.devicePixelRatio, + test: req.body.test, + id: process.env.TARGET_BROWSER, + screenshot: filename + }) + ); + return res.sendStatus(200); +}); + +screenshotApp.use((error: Error, _req: express.Request, _res: express.Response, next: express.NextFunction) => { + console.error(error); + next(); +}); + +const args = yargs(process.argv.slice(2)).number(['port', 'cors']).argv; + +if (args.port) { + app.listen(args.port, () => { + console.log(`Server running on port ${args.port}`); + }); +} + +if (args.cors) { + corsApp.listen(args.cors, () => { + console.log(`CORS server running on port ${args.cors}`); + }); +} diff --git a/tests/testrunner.ts b/tests/testrunner.ts index cceece721..f93d2ef00 100644 --- a/tests/testrunner.ts +++ b/tests/testrunner.ts @@ -3,7 +3,10 @@ import {testList, ignoredTests} from '../build/reftests'; import {default as platform} from 'platform'; // @ts-ignore import Promise from 'es6-promise'; +import {ScreenshotRequest} from './types'; +// @ts-ignore +window.Promise = Promise; const testRunnerUrl = location.href; const hasHistoryApi = typeof window.history !== 'undefined' && typeof window.history.replaceState !== 'undefined'; @@ -21,20 +24,20 @@ const uploadResults = (canvas: HTMLCanvasElement, url: string) => { }; xhr.onerror = reject; + const request: ScreenshotRequest = { + screenshot: canvas.toDataURL(), + test: url, + platform: { + name: platform.name, + version: platform.version + }, + devicePixelRatio: window.devicePixelRatio || 1, + windowWidth: window.innerWidth, + windowHeight: window.innerHeight + }; + xhr.open('POST', 'http://localhost:8000/screenshot', true); - xhr.send( - JSON.stringify({ - screenshot: canvas.toDataURL(), - test: url, - platform: { - name: platform.name, - version: platform.version - }, - devicePixelRatio: window.devicePixelRatio || 1, - windowWidth: window.innerWidth, - windowHeight: window.innerHeight - }) - ); + xhr.send(JSON.stringify(request)); }); }; @@ -76,40 +79,38 @@ testList } document.body.removeChild(testContainer); }); - it('Should render untainted canvas', () => { + + it('Should render untainted canvas', async () => { const contentWindow = testContainer.contentWindow; if (!contentWindow) { throw new Error('Window not found for iframe'); } - return ( - contentWindow + const canvas: HTMLCanvasElement = await contentWindow + // @ts-ignore + .html2canvas(contentWindow.forceElement || contentWindow.document.documentElement, { + removeContainer: true, + backgroundColor: '#ffffff', + proxy: 'http://localhost:8081/proxy', // @ts-ignore - .html2canvas(contentWindow.forceElement || contentWindow.document.documentElement, { - removeContainer: true, - backgroundColor: '#ffffff', - proxy: 'http://localhost:8081/proxy', - // @ts-ignore - ...(contentWindow.h2cOptions || {}) - }) - .then((canvas: HTMLCanvasElement) => { - try { - (canvas.getContext('2d') as CanvasRenderingContext2D).getImageData( - 0, - 0, - canvas.width, - canvas.height - ); - } catch (e) { - return Promise.reject('Canvas is tainted'); - } + ...(contentWindow.h2cOptions || {}) + }); - // @ts-ignore - if (window.__karma__) { - return uploadResults(canvas, url); - } - }) - ); + try { + (canvas.getContext('2d') as CanvasRenderingContext2D).getImageData( + 0, + 0, + canvas.width, + canvas.height + ); + } catch (e) { + throw new Error('Canvas is tainted'); + } + + // @ts-ignore + if (window.__karma__) { + return uploadResults(canvas, url); + } }); }); }); diff --git a/tests/types.ts b/tests/types.ts new file mode 100644 index 000000000..92c92fe46 --- /dev/null +++ b/tests/types.ts @@ -0,0 +1,13 @@ +export interface PlatformDetails { + name: string; + version: string; +} + +export interface ScreenshotRequest { + screenshot: string; + test: string; + platform: PlatformDetails; + devicePixelRatio: number; + windowWidth: number; + windowHeight: number; +} From 2a013e20c814b7dbaea98f54f0bde8f553eb79a2 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 8 May 2021 20:31:35 +0800 Subject: [PATCH 292/377] deps: update www deps (#2525) --- www/package-lock.json | 43146 ++++++++++++++++++++++++++++++++-------- 1 file changed, 35295 insertions(+), 7851 deletions(-) diff --git a/www/package-lock.json b/www/package-lock.json index 6a8ba4d32..21eab0c0a 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -1,6223 +1,32077 @@ { "name": "html2canvas-website", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "requires": { - "@babel/highlight": "^7.0.0" + "packages": { + "": { + "name": "html2canvas-website", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "cpy-cli": "^2.0.0", + "gatsby": "^2.7.1", + "gatsby-link": "^2.0.16", + "gatsby-plugin-catch-links": "^2.0.13", + "gatsby-plugin-glamor": "^2.0.9", + "gatsby-plugin-google-analytics": "^2.0.18", + "gatsby-plugin-react-helmet": "^3.0.12", + "gatsby-plugin-twitter": "^2.0.13", + "gatsby-plugin-typography": "^2.2.10", + "gatsby-remark-prismjs": "^3.2.7", + "gatsby-source-filesystem": "^2.0.28", + "gatsby-transformer-remark": "^2.3.8", + "glamor": "^2.20.40", + "gzip-size": "^5.0.0", + "html2canvas": "^1.0.0-alpha.12", + "mkdirp": "^0.5.1", + "prismjs": "^1.16.0", + "react": "^16.8.6", + "react-dom": "^16.8.6", + "react-helmet": "^5.2.0", + "react-typography": "^0.16.19", + "typography": "^0.16.19", + "typography-theme-github": "^0.16.19" } }, - "@babel/core": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", - "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helpers": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.5", - "@babel/types": "^7.4.4", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, + "node_modules/@ardatan/aggregate-error": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", + "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==", "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.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "tslib": "~2.0.1" + }, + "engines": { + "node": ">=8" } }, - "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", - "requires": { - "@babel/types": "^7.4.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } + "node_modules/@ardatan/aggregate-error/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", - "requires": { - "@babel/types": "^7.0.0" + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dependencies": { + "@babel/highlight": "^7.12.13" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" - } + "node_modules/@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==" }, - "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", - "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", - "requires": { - "@babel/types": "^7.3.0", - "esutils": "^2.0.0" + "node_modules/@babel/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", - "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz", - "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", - "@babel/helper-split-export-declaration": "^7.4.4" + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-define-map": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", - "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "node_modules/@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "dependencies": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", - "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dependencies": { + "@babel/types": "^7.12.13" } }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "requires": { - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dependencies": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", - "requires": { - "@babel/types": "^7.4.4" + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", - "requires": { - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", + "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", - "requires": { - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-module-transforms": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", - "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.4.4", - "lodash": "^4.17.11" + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", - "requires": { - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "@babel/helper-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", - "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", - "requires": { - "lodash": "^4.17.11" + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "dependencies": { + "@babel/types": "^7.13.0" } }, - "@babel/helper-replace-supers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", - "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "node_modules/@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", - "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dependencies": { + "@babel/types": "^7.12.13" } }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "requires": { - "@babel/types": "^7.4.4" + "node_modules/@babel/helper-hoist-variables": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "dependencies": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" } }, - "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dependencies": { + "@babel/types": "^7.13.12" } }, - "@babel/helpers": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", - "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", - "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" + "node_modules/@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dependencies": { + "@babel/types": "^7.13.12" } }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - } + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dependencies": { + "@babel/types": "^7.12.13" } }, - "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==" + "node_modules/@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz", - "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "node_modules/@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dependencies": { + "@babel/types": "^7.13.12" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", - "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dependencies": { + "@babel/types": "^7.12.1" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dependencies": { + "@babel/types": "^7.12.13" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", - "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" - } + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" }, - "@babel/plugin-syntax-class-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz", - "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" } }, - "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", - "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", - "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", - "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.11" + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-classes": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", - "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.4.4", - "@babel/helper-split-export-declaration": "^7.4.4", - "globals": "^11.1.0" + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", - "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", - "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz", - "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", - "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", - "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", - "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", - "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", - "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", - "requires": { - "regexp-tree": "^0.1.6" + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", - "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", - "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", - "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", - "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", - "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", - "requires": { - "regenerator-transform": "^0.14.0" + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", + "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz", - "integrity": "sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", + "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-transform-classes": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", - "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.5.4" + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/polyfill": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", - "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-env": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", - "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.4.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.4.4", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.4.4", - "@babel/plugin-transform-classes": "^7.4.4", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-modules-systemjs": "^7.4.4", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-react": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", - "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0" + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/runtime": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", - "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", - "requires": { - "regenerator-runtime": "^0.13.2" + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", "dependencies": { - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" - } + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", "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.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@gatsbyjs/relay-compiler": { - "version": "2.0.0-printer-fix.2", - "resolved": "https://registry.npmjs.org/@gatsbyjs/relay-compiler/-/relay-compiler-2.0.0-printer-fix.2.tgz", - "integrity": "sha512-7GeCCEQ7O15lMTT/SXy9HuRde4cv5vs465ZnLK2QCajSDLior+20yrMqHn1PGsJYK6nNZH7p3lw9qTCpqmuc7Q==", - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.1.2", - "chalk": "^2.4.1", - "fast-glob": "^2.2.2", - "fb-watchman": "^2.0.0", - "fbjs": "^1.0.0", - "immutable": "~3.7.6", - "nullthrows": "^1.1.0", - "relay-runtime": "2.0.0", - "signedsource": "^1.0.0", - "yargs": "^9.0.0" + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dependencies": { - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", - "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, - "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" - } + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@mikaelkristiansson/domready": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mikaelkristiansson/domready/-/domready-1.0.9.tgz", - "integrity": "sha512-FOAjeRHULSWXd6JMuCDwf3zPbe11kP971+Bufrj9M8rQ33ZMtThgKd6IJgzj6tr/+1Rq3czzLI1LAa9x0IC92w==" + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", + "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@pieh/friendly-errors-webpack-plugin": { - "version": "1.7.0-chalk-2", - "resolved": "https://registry.npmjs.org/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz", - "integrity": "sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw==", - "requires": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0", - "strip-ansi": "^3" + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz", + "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@reach/router": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.2.1.tgz", - "integrity": "sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==", - "requires": { - "create-react-context": "^0.2.1", - "invariant": "^2.2.3", - "prop-types": "^15.6.1", - "react-lifecycles-compat": "^3.0.4", - "warning": "^3.0.0" + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", + "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.12.17" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@stefanprobst/lokijs": { - "version": "1.5.6-b", - "resolved": "https://registry.npmjs.org/@stefanprobst/lokijs/-/lokijs-1.5.6-b.tgz", - "integrity": "sha512-MNodHp46og+Sdde/LCxTLrxcD5Dimu21R/Fer2raXMG1XtHSV2+vZnkIV87OPAxuf2NiDj1W5hN7Q2MYUfQQ8w==" + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/configstore": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz", - "integrity": "sha1-zR6FU2M60xhcPy8jns/10mQ+krY=" + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/debug": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.29.tgz", - "integrity": "sha1-oeUUrfvZLwOiJLpU1pMRHb8fN1Q=" + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz", + "integrity": "sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA==", + "dependencies": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/get-port": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-0.0.4.tgz", - "integrity": "sha1-62u3Qj2fiItjJmDcfS/T5po1ZD4=" + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } }, - "@types/glob": { - "version": "5.0.36", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.36.tgz", - "integrity": "sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg==", - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@types/history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz", - "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q==" + "node_modules/@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=" + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/node": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.5.tgz", - "integrity": "sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==" + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/prop-types": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.0.tgz", - "integrity": "sha512-eItQyV43bj4rR3JPV0Skpl1SncRCdziTEK9/v8VwXmV6d/qOUO8/EuWeHBbCZcsfSHfzI5UyMJLCSXtxxznyZg==" + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", + "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-typescript": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@types/reach__router": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.2.3.tgz", - "integrity": "sha512-Zp0AdVhoJXjwsgp8pDPVEMnAH5eHU64hi5EnPT1Jerddqwiy0O87KFrnZKd1DKdO87cU120n2d3SnKKPtf4wFA==", - "requires": { - "@types/history": "*", - "@types/react": "*" + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@types/react": { - "version": "16.8.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.12.tgz", - "integrity": "sha512-MZZiv11BQhsxFp5DHDmRKBi6Nv3jwOhRiFFDE7ZJ1+rb52gdOd9y/qY0+5wyV/PQVK9926wFMjpQj3BJ18pb4Q==", - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" + "node_modules/@babel/preset-env": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", + "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", + "dependencies": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.1", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.0", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.1", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@types/tmp": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.32.tgz", - "integrity": "sha1-DTyzECL4Qn6ljACK8yuA2hJspOM=" + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } }, - "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", - "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "node_modules/@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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==" + "node_modules/@babel/preset-react": { + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz", + "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-react-display-name": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.13.12", + "@babel/plugin-transform-react-jsx-development": "^7.12.17", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==" + "node_modules/@babel/preset-typescript": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz", + "integrity": "sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-typescript": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==" + "node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + } }, - "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", - "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "node_modules/@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "dependencies": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==" + "node_modules/@babel/standalone": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.14.1.tgz", + "integrity": "sha512-HFkwJyIv91mP38447ERwnVgw9yhx2/evs+r0+1hdAXf1Q1fBypPwtY8YOqsPniqoYCEVbBIqYELt0tNrOAg/Iw==" }, - "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==" + "node_modules/@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==" + "node_modules/@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" } }, - "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", - "requires": { - "@xtuc/long": "4.2.1" + "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", + "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "dependencies": { + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "cosmiconfig": ">=6" } }, - "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==" + "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "node_modules/@graphql-tools/batch-execute": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz", + "integrity": "sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==", + "dependencies": { + "@graphql-tools/utils": "^7.7.0", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } + "node_modules/@graphql-tools/batch-execute/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "node_modules/@graphql-tools/delegate": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz", + "integrity": "sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==", + "dependencies": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/batch-execute": "^7.1.2", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.7.1", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "node_modules/@graphql-tools/delegate/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "6.2.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz", + "integrity": "sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==", + "dependencies": { + "@graphql-tools/import": "^6.2.6", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "node_modules/@graphql-tools/graphql-file-loader/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + }, + "node_modules/@graphql-tools/import": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz", + "integrity": "sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw==", + "dependencies": { + "resolve-from": "5.0.0", + "tslib": "~2.2.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "node_modules/@graphql-tools/import/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/@graphql-tools/json-file-loader": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz", + "integrity": "sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==", + "dependencies": { + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.0.1" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "node_modules/@graphql-tools/json-file-loader/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" }, - "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" + "node_modules/@graphql-tools/load": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz", + "integrity": "sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==", + "dependencies": { + "@graphql-tools/merge": "^6.2.12", + "@graphql-tools/utils": "^7.5.0", + "globby": "11.0.3", + "import-from": "3.0.0", + "is-glob": "4.0.1", + "p-limit": "3.1.0", + "tslib": "~2.2.0", + "unixify": "1.0.0", + "valid-url": "1.0.9" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" + } }, - "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" + "node_modules/@graphql-tools/load/node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "engines": { + "node": ">= 8" } }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + "node_modules/@graphql-tools/load/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "requires": { - "acorn": "^5.0.0" - }, + "node_modules/@graphql-tools/load/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - } + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==" + "node_modules/@graphql-tools/load/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "address": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", - "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + "node_modules/@graphql-tools/load/node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + "node_modules/@graphql-tools/load/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "node_modules/@graphql-tools/load/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "node_modules/@graphql-tools/load/node_modules/globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==" + "node_modules/@graphql-tools/load/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "engines": { + "node": ">= 4" + } }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + "node_modules/@graphql-tools/load/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "requires": { - "string-width": "^3.0.0" - }, + "node_modules/@graphql-tools/load/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "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==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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" - } - } + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + "node_modules/@graphql-tools/load/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + "node_modules/@graphql-tools/load/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + "node_modules/@graphql-tools/load/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "node_modules/@graphql-tools/load/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "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" + "node_modules/@graphql-tools/merge": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.13.tgz", + "integrity": "sha512-Qjlki0fp+bBQPinhdv7rv24eurvThZ5oIFvGMpLxMZplbw/ovJ2c6llwXr5PCuWAk9HGZsyM9NxxDgtTRfq3dQ==", + "dependencies": { + "@graphql-tools/schema": "^7.0.0", + "@graphql-tools/utils": "^7.7.0", + "tslib": "~2.2.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "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" - } + "node_modules/@graphql-tools/merge/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "node_modules/@graphql-tools/schema": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz", + "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==", + "dependencies": { + "@graphql-tools/utils": "^7.1.2", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" + } }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" + "node_modules/@graphql-tools/schema/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "~1.0.2" + "node_modules/@graphql-tools/url-loader": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz", + "integrity": "sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==", + "dependencies": { + "@graphql-tools/delegate": "^7.0.1", + "@graphql-tools/utils": "^7.9.0", + "@graphql-tools/wrap": "^7.0.4", + "@microsoft/fetch-event-source": "2.0.1", + "@types/websocket": "1.0.2", + "abort-controller": "3.0.0", + "cross-fetch": "3.1.4", + "extract-files": "9.0.0", + "form-data": "4.0.0", + "graphql-ws": "^4.4.1", + "is-promise": "4.0.0", + "isomorphic-ws": "4.0.1", + "lodash": "4.17.21", + "meros": "1.1.4", + "subscriptions-transport-ws": "^0.9.18", + "sync-fetch": "0.3.0", + "tslib": "~2.2.0", + "valid-url": "1.0.9", + "ws": "7.4.5" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } + "node_modules/@graphql-tools/url-loader/node_modules/@types/node": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz", + "integrity": "sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA==", + "optional": true, + "peer": true }, - "arr-diff": { + "node_modules/@graphql-tools/url-loader/node_modules/is-promise": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "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==" + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "node_modules/@graphql-tools/url-loader/node_modules/meros": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", + "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@types/node": ">=12" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + "node_modules/@graphql-tools/url-loader/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "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=" + "node_modules/@graphql-tools/utils": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.9.1.tgz", + "integrity": "sha512-k4bQWsOnSJSW7suBnVUJf3Sc8uXuvIYLHXujbEoSrwOEHjC+707GvXbQ7rg+8l7v8NMgpyARyuKFlqz3cfoxBQ==", + "dependencies": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.2", + "tslib": "~2.2.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" + } }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "node_modules/@graphql-tools/wrap": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz", + "integrity": "sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==", + "dependencies": { + "@graphql-tools/delegate": "^7.1.5", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.8.1", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" } }, - "array-iterate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz", - "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==" + "node_modules/@graphql-tools/wrap/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'" }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dependencies": { + "@hapi/hoek": "^8.3.0" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "node_modules/@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "engines": { + "node": ">= 8.3" + } }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "node_modules/@jest/types/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "node_modules/@mdx-js/util": { + "version": "2.0.0-next.8", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-2.0.0-next.8.tgz", + "integrity": "sha512-T0BcXmNzEunFkuxrO8BFw44htvTPuAoKbLvTG41otyZBDV1Rs+JMddcUuaP5vXpTWtgD3grhcrPEwyx88RUumQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + "node_modules/@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + "node_modules/@mikaelkristiansson/domready": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mikaelkristiansson/domready/-/domready-1.0.11.tgz", + "integrity": "sha512-nEBLOa0JgtqahmPrnJZ18epLiFBzxhdKgo4uhN3TaBFRmM30pEVrS9FAEV4tg92d8PTdU+dYQx2lnpPyFMgMcg==" }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dependencies": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "engines": { + "node": ">= 8" + } }, - "auto-bind": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-2.1.0.tgz", - "integrity": "sha512-qZuFvkes1eh9lB2mg8/HG18C+5GIO51r+RrCSst/lh+i5B1CtVlkhTE488M805Nr3dKl0sM/pIFKSKUIlg3zUg==", - "optional": true, - "requires": { - "@types/react": "^16.8.12" + "node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "engines": { + "node": ">= 6" } }, - "autoprefixer": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", - "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", - "requires": { - "browserslist": "^4.5.4", - "caniuse-lite": "^1.0.30000957", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.14", - "postcss-value-parser": "^3.3.1" - }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "requires": { - "ast-types-flow": "0.0.7" + "node_modules/@pieh/friendly-errors-webpack-plugin": { + "version": "1.7.0-chalk-2", + "resolved": "https://registry.npmjs.org/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz", + "integrity": "sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw==", + "dependencies": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0", + "strip-ansi": "^3" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "node_modules/@reach/router": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", + "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", + "dependencies": { + "create-react-context": "0.3.0", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4" }, + "peerDependencies": { + "react": "15.x || 16.x || 16.4.0-alpha.0911da3", + "react-dom": "15.x || 16.x || 16.4.0-alpha.0911da3" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", "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" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "@hapi/hoek": "^9.0.0" } }, - "babel-core": { - "version": "7.0.0-bridge.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", - "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + "node_modules/@sideway/address/node_modules/@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" }, - "babel-eslint": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", - "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "engines": { + "node": ">=4" } }, - "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", - "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "babel-plugin-add-module-exports": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=" + "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "babel-plugin-dynamic-import-node": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz", - "integrity": "sha512-yeDwKaLgGdTpXL7RgGt5r6T4LmnTza/hUn5Ul8uZSGGMtEjYo13Nxai7SQaGCTEzUtg9Zq9qJn0EjEr7SeSlTQ==", - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0" + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dependencies": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "babel-plugin-macros": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz", - "integrity": "sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q==", - "requires": { - "@babel/runtime": "^7.4.2", - "cosmiconfig": "^5.2.0", - "resolve": "^1.10.0" + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" } }, - "babel-plugin-remove-graphql-queries": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.6.3.tgz", - "integrity": "sha512-vZEuO4kpPJsPex63BIMn5bBZGIDO42FQtzSD9UsDHjoWHfCB9/EQDnimtggI3Eyv4L3hwxsGNvVbS4IfFDJrlQ==" + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@turist/time": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@turist/time/-/time-0.0.1.tgz", + "integrity": "sha512-M2BiThcbxMxSKX8W4z5u9jKZn6datnM3+FpEU+eYw0//l31E2xhqi7vTAuJ/Sf0P3yhp66SDJgPu3bRRpvrdQQ==" }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + "node_modules/@types/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg==" + }, + "node_modules/@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" + }, + "node_modules/@types/configstore": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz", + "integrity": "sha1-zR6FU2M60xhcPy8jns/10mQ+krY=" + }, + "node_modules/@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, - "babel-preset-fbjs": { + "node_modules/@types/debug": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", + "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==" + }, + "node_modules/@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "node_modules/@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "node_modules/@types/get-port": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.2.0.tgz", - "integrity": "sha512-5Jo+JeWiVz2wHUUyAlvb/sSYnXNig9r+HqGAOSfh5Fzxp7SnAaR/tEGRJ1ZX7C77kfk82658w6R5Z+uPATTD9g==", - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - } + "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==" }, - "babel-preset-gatsby": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.1.11.tgz", - "integrity": "sha512-n8Tg1r1J9juDc8GI0afrOFrEJ4No+lfylcYN2QLi90dvGl9VlfZIqoEf9bpw1maop+Ksz56NavxP6U0BHeZLqg==", - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.4.1", - "@babel/preset-react": "^7.0.0", - "babel-plugin-macros": "^2.4.2" + "node_modules/@types/glob": { + "version": "5.0.36", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.36.tgz", + "integrity": "sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg==", + "dependencies": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, + "node_modules/@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", + "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } + "@types/node": "*" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==" + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } }, - "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" - }, + "node_modules/@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + "node_modules/@types/json-patch": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz", + "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==" }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + "node_modules/@types/lodash": { + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==" }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" + "node_modules/@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "dependencies": { + "@types/unist": "*" } }, - "better-opn": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-0.1.4.tgz", - "integrity": "sha512-7V92EnOdjWOB9lKsVsthCcu1FdFT5qNJVTiOgGy5wPuTsSptMMxm2G1FGHgWu22MyX3tyDRzTWk4lxY2Ppdu7A==", - "requires": { - "opn": "^5.4.0" + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "node_modules/@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dependencies": { + "@types/node": "*" } }, - "better-queue": { - "version": "3.8.10", - "resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.10.tgz", - "integrity": "sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA==", - "requires": { - "better-queue-memory": "^1.0.1", - "node-eta": "^0.9.0", - "uuid": "^3.0.0" - } + "node_modules/@types/node": { + "version": "14.14.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.44.tgz", + "integrity": "sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA==" }, - "better-queue-memory": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/better-queue-memory/-/better-queue-memory-1.0.3.tgz", - "integrity": "sha512-QLFkfV+k/7e4L4FR7kqkXKtRi22kl68c/3AaBs0ArDSz0iiuAl0DjVlb6gM220jW7izLE5TRy7oXOd4Cxa0wog==" + "node_modules/@types/node-fetch": { + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", + "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + "node_modules/@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "node_modules/@types/reach__router": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.7.tgz", + "integrity": "sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg==", + "dependencies": { + "@types/react": "*" + } }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, + "node_modules/@types/react": { + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz", + "integrity": "sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==", "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "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" - } - } + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, + "node_modules/@types/rimraf": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.4.tgz", + "integrity": "sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q==", "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - } + "@types/glob": "*", + "@types/node": "*" } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "node_modules/@types/scheduler": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" }, - "bowser": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", - "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + "node_modules/@types/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=" }, - "boxen": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", - "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^2.4.2", - "cli-boxes": "^2.2.0", - "string-width": "^3.0.0", - "term-size": "^1.2.0", - "type-fest": "^0.3.0", - "widest-line": "^2.0.0" - }, + "node_modules/@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" + }, + "node_modules/@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", + "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", "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==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "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=" - }, - "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" - } - } + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" } }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", + "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", + "deprecated": "This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed.", + "dependencies": { + "vfile-message": "*" } }, - "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" + "node_modules/@types/websocket": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", + "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", + "dependencies": { + "@types/node": "*" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } + "node_modules/@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, + "node_modules/@types/yoga-layout": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", + "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", "dependencies": { - "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==" + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "node_modules/@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "node_modules/@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dependencies": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" + "node_modules/@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dependencies": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "requires": { - "node-int64": "^0.4.0" + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "buffer-alloc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", - "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", - "requires": { - "buffer-alloc-unsafe": "^0.1.0", - "buffer-fill": "^0.1.0" + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "buffer-alloc-unsafe": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", - "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" - }, - "buffer-fill": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.0.tgz", - "integrity": "sha1-ypRw6NTRuXf9dUP04qtqfclRAag=" + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "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==" + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" }, - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dependencies": { - "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "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" - } - }, - "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==" - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - } + "@webassemblyjs/ast": "1.9.0" } }, - "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" - }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "cache-manager": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.9.0.tgz", - "integrity": "sha1-Xh9jF8oaJeQN3zZacWJ1evFSNT4=", - "requires": { - "async": "1.5.2", - "lru-cache": "4.0.0" - }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dependencies": { - "lru-cache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", - "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - } + "@xtuc/ieee754": "^1.2.0" } }, - "cache-manager-fs-hash": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.6.tgz", - "integrity": "sha512-p1nmcCQH4/jyKqEqUqPSDDcCo0PjFdv56OvtSdUrSIB7s8rAfwETLZ0CHXWdAPyg0QaER/deTvl1dCXyjZ5xAA==", - "requires": { - "es6-promisify": "^6.0.0", - "lockfile": "^1.0.4" + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dependencies": { + "@xtuc/long": "4.2.2" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, - "caniuse-api": { + "node_modules/abort-controller": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" } }, - "caniuse-lite": { - "version": "1.0.30000971", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz", - "integrity": "sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==" + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "ccount": { + "node_modules/address": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", - "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==" - }, - "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" + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==", + "engines": { + "node": ">= 0.12.0" } }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==" + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "character-entities-html4": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", - "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==" + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==" + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==" + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", - "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.0" - }, + "node_modules/anser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.0.1.tgz", + "integrity": "sha512-4g5Np4CVD3c5c/36Mj0jllEA5bQcuXF0dqakZcuHGeubBzw93EAhwRuQCzgFm4/ZwvyBMzFdtn9BcihOjnxIdQ==" + }, + "node_modules/ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } + "string-width": "^3.0.0" } }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "requires": { - "tslib": "^1.9.0" + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" } }, - "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" - }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "engines": { + "node": ">=6" + } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "engines": { + "node": ">=4" } }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "optional": true + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } }, - "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" } }, - "cli-truncate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", - "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", - "optional": true, - "requires": { - "slice-ansi": "^1.0.0", - "string-width": "^2.0.0" + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dependencies": { - "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=", - "optional": true - }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "optional": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0" - } - } + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "node_modules/application-config-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", + "integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=" }, - "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", - "optional": true, - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", - "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", - "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" - }, - "dependencies": { - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "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" - }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dependencies": { - "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" - } - } + "sprintf-js": "~1.0.2" } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" } }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "engines": { + "node": ">=0.10.0" } }, - "code-point-at": { + "node_modules/arr-flatten": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==" - }, - "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" + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" } }, - "color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.1.tgz", - "integrity": "sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "engines": { + "node": ">=0.10.0" } }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "requires": { - "color-name": "^1.1.1" + "node_modules/array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "optional": true + "node_modules/array-iterate": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", + "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "comma-separated-tokens": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz", - "integrity": "sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA==", - "requires": { - "trim": "0.0.1" - } - }, - "command-exists": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", - "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==" - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "node_modules/array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "node_modules/array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "engines": { + "node": ">=0.10.0" + } }, - "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "requires": { - "mime-db": ">= 1.40.0 < 2" + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "engines": { + "node": ">=0.10.0" } }, - "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" + "node_modules/array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", "dependencies": { - "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==" - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "engines": { + "node": ">=0.10.0" + } }, - "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" + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - } - } + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "confusing-browser-globals": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz", - "integrity": "sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ==" + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "engines": { + "node": ">=0.10.0" } }, - "console-polyfill": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz", - "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA=" + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" }, - "constants-browserify": { + "node_modules/astral-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "engines": { + "node": ">=4" + } }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + "node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - }, + "node_modules/async-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", + "integrity": "sha1-SppaidBl7F2OUlS9nulrp2xTK1o=", "dependencies": { - "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==" - } + "lru-cache": "^4.0.0" } }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-css-length": { + "node_modules/async-each": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.1.tgz", - "integrity": "sha1-8+zsZk8uhzoFcOav3T4a5PkkRLc=", - "requires": { - "console-polyfill": "^0.1.2", - "parse-unit": "^1.0.1" - } + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "convert-hrtime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-2.0.0.tgz", - "integrity": "sha1-Gb+yyRYvnhHC8Ewsed4rfoCVxic=" + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" - } + "node_modules/async-retry-ng": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-retry-ng/-/async-retry-ng-2.0.1.tgz", + "integrity": "sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw==" }, - "cookie": { + "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "node_modules/autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "node_modules/autoprefixer/node_modules/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==" }, - "copyfiles": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-1.2.0.tgz", - "integrity": "sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw=", - "requires": { - "glob": "^7.0.5", - "ltcdr": "^2.2.1", - "minimatch": "^3.0.3", - "mkdirp": "^0.5.1", - "noms": "0.0.0", - "through2": "^2.0.1" + "node_modules/axe-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==", + "engines": { + "node": ">=4" } }, - "core-js": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.8.tgz", - "integrity": "sha512-RWlREFU74TEkdXzyl1bka66O3kYp8jeTXrvJZDzVVMH8AiHUSOFpL1yfhQJ+wHocAm1m+4971W1PPzfLuCv1vg==" - }, - "core-js-compat": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.2.tgz", - "integrity": "sha512-X0Ch5f6itrHxhg5HSJucX6nNLNAGr+jq+biBh6nPGc3YAWz2a8p/ZIZY8cUkDzSRNG54omAuu3hoEF8qZbu/6Q==", - "requires": { - "browserslist": "^4.6.0", - "core-js-pure": "3.1.2", - "semver": "^6.0.0" - }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - }, - "semver": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", - "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" - } + "follow-redirects": "^1.10.0" } }, - "core-js-pure": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.2.tgz", - "integrity": "sha512-5ckIdBF26B3ldK9PM177y2ZcATP2oweam9RskHSoqfZCrJ2As6wVg8zJ1zTriFsZf6clj/N1ThDFRGaomMsh9w==" + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" }, - "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=" + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" } }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "cpy": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.2.0.tgz", - "integrity": "sha512-CUYi9WYd7vdtEcq1NKqiS/yY2WdaDCNOBA/AoTQHVJzlpJMqctB8py9JrHgGIft6TgO5m8ZidI4l1ZD+RMr/wA==", - "requires": { - "arrify": "^1.0.1", - "cp-file": "^6.1.0", - "globby": "^9.2.0", - "nested-error-stacks": "^2.1.0" + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dependencies": { - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - } - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - } + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "cpy-cli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-2.0.0.tgz", - "integrity": "sha512-LzrtY3lBWvFZcw4lXgkEbbDUd7y78juC3C5l7gj3UyezMEZF0Be9fjCVLN1HoZAzdMDeC3KHehWpHBJvgVAPkw==", - "requires": { - "cpy": "^7.0.0", - "meow": "^5.0.0" + "node_modules/babel-loader/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "requires": { - "capture-stack-trace": "^1.0.0" + "node_modules/babel-plugin-lodash": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz", + "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0-beta.49", + "@babel/types": "^7.0.0-beta.49", + "glob": "^7.1.1", + "lodash": "^4.17.10", + "require-package-name": "^2.0.1" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "create-react-context": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", - "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", - "requires": { - "fbjs": "^0.8.0", - "gud": "^1.0.0" + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" } }, - "cross-fetch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz", - "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=", - "requires": { - "node-fetch": "2.1.2", - "whatwg-fetch": "2.0.4" + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", "dependencies": { - "node-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", - "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" - }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } + "@babel/helper-define-polyfill-provider": "^0.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "node_modules/babel-plugin-remove-graphql-queries": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.16.1.tgz", + "integrity": "sha512-PkHJuRodMp4p617a/ZVhV8elBhRoFpOTpdu2DaApXJFIsDJWhjZ8d4BGbbFCT/yKJrhRDTdqg1r5AhWEaEUKkw==", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "gatsby": "^2.0.0" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "node_modules/babel-preset-gatsby": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.12.3.tgz", + "integrity": "sha512-s/5Nkeeihu/oNUcLQakm+lwLCiNWcQamQliB+NqEVB/IgRVn1FQPxqmxNbEb0i2HrEBPKgOrXyt82IfzirCmgg==", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-runtime": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@babel/runtime": "^7.12.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "gatsby-core-utils": "^1.10.1", + "gatsby-legacy-polyfills": "^0.7.1" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.6", + "core-js": "^3.0.0" } }, - "crypto-random-string": { + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "css-in-js-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "requires": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "css-line-break": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", - "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", - "requires": { - "base64-arraybuffer": "^0.1.5" + "node_modules/base/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" } }, - "css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "node_modules/base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "engines": { + "node": ">= 0.6.0" } }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } }, - "css-selector-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.3.0.tgz", - "integrity": "sha1-XxrUPi2O77/cME/NOaUhZklD4+s=" + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, + "node_modules/better-opn": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", + "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - } - } + "open": "^7.0.3" + }, + "engines": { + "node": ">8.0.0" } }, - "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", - "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "node_modules/better-queue": { + "version": "3.8.10", + "resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.10.tgz", + "integrity": "sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA==", + "dependencies": { + "better-queue-memory": "^1.0.1", + "node-eta": "^0.9.0", + "uuid": "^3.0.0" } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" - }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + "node_modules/better-queue-memory": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/better-queue-memory/-/better-queue-memory-1.0.3.tgz", + "integrity": "sha512-QLFkfV+k/7e4L4FR7kqkXKtRi22kl68c/3AaBs0ArDSz0iiuAl0DjVlb6gM220jW7izLE5TRy7oXOd4Cxa0wog==" }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" } }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" + "node_modules/binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "engines": { + "node": ">=0.10.0" } }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + "node_modules/bl/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "requires": { - "postcss": "^7.0.0" + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "requires": { - "css-tree": "1.0.0-alpha.29" - }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - } + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" } }, - "csstype": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.3.tgz", - "integrity": "sha512-rINUZXOkcBmoHWEyu7JdHu5JMzkGRoMX4ov9830WNgxf5UYxcBUO0QTKAqeJ5EZfSdlrcJYkC8WwfVW7JYi4yg==" - }, - "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" + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" - }, - "damerau-levenshtein": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", - "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==" - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" }, - "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" - } + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "node_modules/bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - } + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" + "node_modules/boxen/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" } }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "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=" - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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" + "node_modules/boxen/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" } }, - "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" - }, + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "delegate": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "optional": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "node_modules/boxen/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", - "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", - "requires": { - "repeat-string": "^1.5.4" + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } }, - "detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" + "node_modules/boxen/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "devcert-san": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/devcert-san/-/devcert-san-0.3.3.tgz", - "integrity": "sha1-qnckR0Gy2DF3HAEfIu4l45atS6k=", - "requires": { - "@types/configstore": "^2.1.1", - "@types/debug": "^0.0.29", - "@types/get-port": "^0.0.4", - "@types/glob": "^5.0.30", - "@types/mkdirp": "^0.3.29", - "@types/node": "^7.0.11", - "@types/tmp": "^0.0.32", - "command-exists": "^1.2.2", - "configstore": "^3.0.0", - "debug": "^2.6.3", - "eol": "^0.8.1", - "get-port": "^3.0.0", - "glob": "^7.1.1", - "mkdirp": "^0.5.1", - "tmp": "^0.0.31", - "tslib": "^1.6.0" + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "node_modules/boxen/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" } }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "requires": { - "path-type": "^3.0.0" - }, + "node_modules/brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "requires": { - "@babel/runtime": "^7.1.2" + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" } }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "requires": { - "is-obj": "^1.0.0" + "node_modules/buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dependencies": { + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" } }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, - "duplexer": { + "node_modules/buffer-alloc-unsafe": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "node_modules/buffer-fill": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.0.tgz", + "integrity": "sha1-ypRw6NTRuXf9dUP04qtqfclRAag=" }, - "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" - } + "node_modules/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==" }, - "ee-first": { + "node_modules/buffer-indexof": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" }, - "electron-to-chromium": { - "version": "1.3.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz", - "integrity": "sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw==" + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "engines": { + "node": ">=0.10.0" } }, - "emoji-regex": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", - "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" } }, - "engine.io": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", - "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~6.1.0" - }, + "node_modules/cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dependencies": { - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "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" - } - } - } - }, - "engine.io-client": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", - "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, - "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" - } - } + "engines": { + "node": ">= 8" } }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "node_modules/cacache/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" } }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" - }, - "envinfo": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.12.1.tgz", - "integrity": "sha512-pwdo0/G3CIkQ0y6PCXq4RdkvId2elvtPCJMG0konqlrfkWQbf1DWeH9K2b/cvu2YgGvPPTOnonZxXM1gikFu1w==" + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "eol": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/eol/-/eol-0.8.1.tgz", - "integrity": "sha1-3vwyJJkMfspzuzRGGlbPncJHYdA=" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "^0.2.1" + "node_modules/cache-manager": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", + "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", + "dependencies": { + "async": "1.5.2", + "lodash.clonedeep": "4.5.0", + "lru-cache": "4.0.0" } }, - "error-stack-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", - "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", - "requires": { - "stackframe": "^1.0.4" + "node_modules/cache-manager/node_modules/lru-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", + "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" } }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" } }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "es6-promisify": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.1.tgz", - "integrity": "sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "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=" + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "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" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "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" - } - } + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "eslint-config-react-app": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.8.tgz", - "integrity": "sha512-Ovi6Bva67OjXrom9Y/SLJRkrGqKhMAL0XCH8BizPhjEVEhYczl2ZKiNZI2CuqO5/CJwAfMwRXAVGY0KToWr1aA==", - "requires": { - "confusing-browser-globals": "^1.0.6" + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "engines": { + "node": ">=4" } }, - "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.5.0" + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "eslint-loader": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.2.tgz", - "integrity": "sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg==", - "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" } }, - "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", - "requires": { - "debug": "^2.6.8", - "pkg-dir": "^2.0.0" - }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dependencies": { - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - } + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "eslint-plugin-flowtype": { - "version": "2.50.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz", - "integrity": "sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==", - "requires": { - "lodash": "^4.17.10" - } + "node_modules/camel-case/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" }, - "eslint-plugin-graphql": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-3.0.3.tgz", - "integrity": "sha512-hHwLyxSkC5rkakJ/SNTWwOswPdVhvfyMCnEOloevrLQIOHUNVIQBg1ljCaRe9C40HdzgcGUFUdG5BHLCKm8tuw==", - "requires": { - "graphql-config": "^2.0.1", - "lodash": "^4.11.1" + "node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "engines": { + "node": ">=4" } }, - "eslint-plugin-import": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", - "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", - "requires": { - "array-includes": "^3.0.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", - "has": "^1.0.3", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" - }, + "node_modules/camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "eslint-plugin-jsx-a11y": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz", - "integrity": "sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==", - "requires": { - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1" - }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - } + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "eslint-plugin-react": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", - "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", - "requires": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.1.0", - "object.fromentries": "^2.0.0", - "prop-types": "^15.7.2", - "resolve": "^1.10.1" - }, + "node_modules/caniuse-lite": { + "version": "1.0.30001223", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", + "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==" + }, + "node_modules/ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==" + "node_modules/character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==" }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + "node_modules/character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==" }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "requires": { - "estraverse": "^4.0.0" + "node_modules/chokidar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.0" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "requires": { - "estraverse": "^4.1.0" + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, - "event-source-polyfill": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.5.tgz", - "integrity": "sha512-PdStgZ3+G2o2gjqsBYbV4931ByVmwLwSrX7mFgawCL+9I1npo9dwAQTnWtNWXe5IY2P8+AbbPteeOueiEtRCUA==" + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "requires": { - "original": ">=0.0.5" + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "node_modules/clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "optional": true, + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" - }, - "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" + "node_modules/clipboardy/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "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" - } - } + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "expand-tilde": { + "node_modules/clipboardy/node_modules/npm-run-path": { "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" + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", - "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "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==" - } + "node_modules/clipboardy/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" } }, - "express-graphql": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.7.1.tgz", - "integrity": "sha512-YpheAqTbSKpb5h57rV2yu2dPNUBi4FvZDspZ5iEV3ov34PBRgnM4lEBkv60+vZRJ6SweYL14N8AGYdov7g6ooQ==", - "requires": { - "accepts": "^1.3.5", - "content-type": "^1.0.4", - "http-errors": "^1.7.1", - "raw-body": "^2.3.3" + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } }, - "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" + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" } }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dependencies": { - "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" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - } + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "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" + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==" + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dependencies": { + "color-name": "^1.1.1" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz", + "integrity": "sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA==", + "dependencies": { + "trim": "0.0.1" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/configstore/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/console-polyfill": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz", + "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA=" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/contentful-management": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-7.18.2.tgz", + "integrity": "sha512-d8P6BsOvjhgXavWTksfPB/C7etHQ5EP+R59d1wQ3xr8qHv4bVYOYF+eRnrgRHJQ9Cae8lk7N5JmZLwG/gEQuag==", + "dependencies": { + "@types/json-patch": "0.0.30", + "axios": "^0.21.0", + "contentful-sdk-core": "^6.8.0", + "fast-copy": "^2.1.0", + "lodash.isplainobject": "^4.0.6", + "type-fest": "1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/contentful-sdk-core": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.8.0.tgz", + "integrity": "sha512-X45uNrcbQ2qY2p4G/Wx2EFUdnLnoDXjw29i+d0JVTUXqCG58p3q4GHuAPzTX+uafJL4h0ZY2xPOn4nvJ83eRBQ==", + "dependencies": { + "fast-copy": "^2.1.0", + "qs": "^6.9.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/contentful-sdk-core/node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/convert-css-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.1.tgz", + "integrity": "sha1-8+zsZk8uhzoFcOav3T4a5PkkRLc=", + "dependencies": { + "console-polyfill": "^0.1.2", + "parse-unit": "^1.0.1" + } + }, + "node_modules/convert-hrtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz", + "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "node_modules/copyfiles/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-js": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.0.tgz", + "integrity": "sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.0.tgz", + "integrity": "sha512-vvaN8EOvYBEjrr+MN3vCKrMNc/xdYZI+Rt/uPMROi4T5Hj8Fz6TiPQm2mrB9aZoQVW1lCFHYmMrv99aUct9mkg==", + "dependencies": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-js-pure": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.12.0.tgz", + "integrity": "sha512-j2y084taJU4VMUpwuC93l19tsPbTAtOpg6/do3UOwX4eUJbsFdhEaGRQfTYthn5rDubsB88YITtei0Kw46vEQQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "dependencies": { + "@iarna/toml": "^2.2.5" + } + }, + "node_modules/cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "dependencies": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cp-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cpy": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.2.0.tgz", + "integrity": "sha512-CUYi9WYd7vdtEcq1NKqiS/yY2WdaDCNOBA/AoTQHVJzlpJMqctB8py9JrHgGIft6TgO5m8ZidI4l1ZD+RMr/wA==", + "dependencies": { + "arrify": "^1.0.1", + "cp-file": "^6.1.0", + "globby": "^9.2.0", + "nested-error-stacks": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cpy-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-2.0.0.tgz", + "integrity": "sha512-LzrtY3lBWvFZcw4lXgkEbbDUd7y78juC3C5l7gj3UyezMEZF0Be9fjCVLN1HoZAzdMDeC3KHehWpHBJvgVAPkw==", + "dependencies": { + "cpy": "^7.0.0", + "meow": "^5.0.0" + }, + "bin": { + "cpy": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cpy/node_modules/@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dependencies": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/cpy/node_modules/globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cpy/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cpy/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-gatsby": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-0.5.1.tgz", + "integrity": "sha512-iQ3Z757x02uw9Z3ereR/+RNjiQPCKLEAh3GLqfcTNNVeGgRd07XdgIgGIZrbuNaKL/3EGdfejd7ElJ1UBLQSHQ==", + "bin": { + "create-gatsby": "cli.js" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": "^0.14.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dependencies": { + "node-fetch": "2.6.1" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "dependencies": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "node_modules/css-line-break": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", + "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", + "dependencies": { + "base64-arraybuffer": "^0.1.5" + } + }, + "node_modules/css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dependencies": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + } + }, + "node_modules/css-loader/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "node_modules/css-selector-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.3.0.tgz", + "integrity": "sha1-XxrUPi2O77/cME/NOaUhZklD4+s=", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dependencies": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "node_modules/css-selector-tokenizer/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/css-selector-tokenizer/node_modules/regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dependencies": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "node_modules/css-selector-tokenizer/node_modules/regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "node_modules/css-selector-tokenizer/node_modules/regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "bin": { + "cssesc": "bin/cssesc" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" + }, + "node_modules/dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" + }, + "node_modules/date-fns": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.3.tgz", + "integrity": "sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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=" + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/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==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dependencies": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/del/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/detab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", + "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", + "dependencies": { + "repeat-string": "^1.5.4" + } + }, + "node_modules/detect-newline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-1.0.3.tgz", + "integrity": "sha1-6XsQA4d9cMCa8a81v63/Fo3kkg0=", + "dependencies": { + "get-stdin": "^4.0.1", + "minimist": "^1.1.0" + }, + "bin": { + "detect-newline": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-node": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==" + }, + "node_modules/detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/devcert": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/devcert/-/devcert-1.1.3.tgz", + "integrity": "sha512-7/nIzKdQ8y2K0imjIP7dyg2GJ2h38Ps6VOMXWZHIarNDV3p6mTXyEugKFnkmsZ2DD58JEG34ILyVb3qdOMmP9w==", + "dependencies": { + "@types/configstore": "^2.1.1", + "@types/debug": "^0.0.30", + "@types/get-port": "^3.2.0", + "@types/glob": "^5.0.34", + "@types/lodash": "^4.14.92", + "@types/mkdirp": "^0.5.2", + "@types/node": "^8.5.7", + "@types/rimraf": "^2.0.2", + "@types/tmp": "^0.0.33", + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^1.10.0" + } + }, + "node_modules/devcert/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" + }, + "node_modules/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/devcert/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/devcert/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/devcert/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "node_modules/dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/electron-to-chromium": { + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/elliptic/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dependencies": { + "iconv-lite": "~0.4.13" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-client": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.4.tgz", + "integrity": "sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==", + "dependencies": { + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dependencies": { + "base64-arraybuffer": "0.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/engine.io-parser/node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es5-ext/node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/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==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/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==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dependencies": { + "confusing-browser-globals": "^1.0.9" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "2.x", + "@typescript-eslint/parser": "2.x", + "babel-eslint": "10.x", + "eslint": "6.x", + "eslint-plugin-flowtype": "3.x || 4.x", + "eslint-plugin-import": "2.x", + "eslint-plugin-jsx-a11y": "6.x", + "eslint-plugin-react": "7.x", + "eslint-plugin-react-hooks": "1.x || 2.x" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "node_modules/eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", + "dependencies": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "peerDependencies": { + "eslint": ">=1.6.0 <7.0.0", + "webpack": ">=2.0.0 <5.0.0" + } + }, + "node_modules/eslint-loader/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", + "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-graphql": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz", + "integrity": "sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==", + "dependencies": { + "@babel/runtime": "^7.10.0", + "graphql-config": "^3.0.2", + "lodash.flatten": "^4.4.0", + "lodash.without": "^4.4.0" + }, + "engines": { + "node": ">=10.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "dependencies": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", + "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", + "dependencies": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.3", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.3", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "engines": { + "node": ">=7" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/eslint/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/eslint/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz", + "integrity": "sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-source-polyfill": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.24.tgz", + "integrity": "sha512-aEtMhrH5ww3X6RgbsNcwu0whw8zjOoeRnwPqRKqKuxWS5KlAZhCY+rTm6wMlHOXbxmLGn8lW6Xox7rfpBExzGA==" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dependencies": { + "original": ">=0.0.5" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-graphql": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.9.0.tgz", + "integrity": "sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w==", + "dependencies": { + "accepts": "^1.3.7", + "content-type": "^1.0.4", + "http-errors": "^1.7.3", + "raw-body": "^2.4.1" + }, + "engines": { + "node": ">= 8.x" + }, + "peerDependencies": { + "graphql": "^14.4.1" + } + }, + "node_modules/express-graphql/node_modules/http-errors": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-graphql/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/express-graphql/node_modules/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==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express-graphql/node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-graphql/node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/express-graphql/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", + "engines": { + "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + } + }, + "node_modules/fast-copy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.1.tgz", + "integrity": "sha512-Qod3DdRgFZ8GUIM6ygeoZYpQ0QLW9cf/FS9KhhjlYggcSZXWAemAw8BOCO5LuYCrR3Uj3qXDVTUzOUwG8C7beQ==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", + "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "node_modules/fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "dependencies": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "node_modules/fbjs/node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "node_modules/fd": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", + "integrity": "sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==" + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dependencies": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "engines": { + "node": ">= 4.3 < 5.0.0 || >= 5.10" + } + }, + "node_modules/file-type": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.10.0.tgz", + "integrity": "sha512-3CTQE/db3dnK2jsfd4XiXMKw9nD0QVEMRLdBzqYDRr5BvYMUccDpP8hMc1uPb1VZ9Iw/cAJjYPNwJ5UzxGqsRg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=" + }, + "node_modules/fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "bundleDependencies": [ + "node-pre-gyp" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "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" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.3", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.24", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.3.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.12.0", + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.4.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.8", + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.6.3", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.7.0", + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.8", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "node_modules/gatsby": { + "version": "2.32.13", + "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.32.13.tgz", + "integrity": "sha512-BYfiI/k+t8m/IzSkWZH8Cc0v7rJw6giSjG5sX25LWdfkQMqUvg/Gn6OC8BWwRPXnEwe7x0n5jbH+peO0p34ZHQ==", + "hasInstallScript": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.12.5", + "@babel/runtime": "^7.12.5", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.6", + "@hapi/joi": "^15.1.1", + "@mikaelkristiansson/domready": "^1.0.10", + "@nodelib/fs.walk": "^1.2.4", + "@pieh/friendly-errors-webpack-plugin": "1.7.0-chalk-2", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.1", + "@reach/router": "^1.3.4", + "@types/http-proxy": "^1.17.4", + "@typescript-eslint/eslint-plugin": "^2.24.0", + "@typescript-eslint/parser": "^2.24.0", + "address": "1.1.2", + "anser": "^2.0.1", + "ansi-html": "^0.0.7", + "autoprefixer": "^9.8.4", + "axios": "^0.21.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.1.0", + "babel-loader": "^8.1.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-lodash": "^3.3.4", + "babel-plugin-remove-graphql-queries": "^2.16.1", + "babel-preset-gatsby": "^0.12.3", + "better-opn": "^2.0.0", + "better-queue": "^3.8.10", + "bluebird": "^3.7.2", + "body-parser": "^1.19.0", + "browserslist": "^4.12.2", + "cache-manager": "^2.11.1", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "common-tags": "^1.8.0", + "compression": "^1.7.4", + "convert-hrtime": "^3.0.0", + "copyfiles": "^2.3.0", + "core-js": "^3.6.5", + "cors": "^2.8.5", + "css-loader": "^1.0.1", + "date-fns": "^2.14.0", + "debug": "^3.2.7", + "del": "^5.1.0", + "detect-port": "^1.3.0", + "devcert": "^1.1.3", + "dotenv": "^8.2.0", + "eslint": "^6.8.0", + "eslint-config-react-app": "^5.2.1", + "eslint-loader": "^2.2.1", + "eslint-plugin-flowtype": "^3.13.0", + "eslint-plugin-graphql": "^4.0.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.6", + "eslint-plugin-react-hooks": "^1.7.0", + "event-source-polyfill": "^1.0.15", + "execa": "^4.0.3", + "express": "^4.17.1", + "express-graphql": "^0.9.0", + "fastest-levenshtein": "^1.0.12", + "fastq": "^1.10.0", + "file-loader": "^1.1.11", + "find-cache-dir": "^3.3.1", + "fs-exists-cached": "1.0.0", + "fs-extra": "^8.1.0", + "gatsby-cli": "^2.19.3", + "gatsby-core-utils": "^1.10.1", + "gatsby-graphiql-explorer": "^0.11.0", + "gatsby-legacy-polyfills": "^0.7.1", + "gatsby-link": "^2.11.0", + "gatsby-plugin-page-creator": "^2.10.2", + "gatsby-plugin-typescript": "^2.12.1", + "gatsby-plugin-utils": "^0.9.0", + "gatsby-react-router-scroll": "^3.7.0", + "gatsby-telemetry": "^1.10.2", + "glob": "^7.1.6", + "got": "8.3.2", + "graphql": "^14.6.0", + "graphql-compose": "^6.3.8", + "graphql-playground-middleware-express": "^1.7.18", + "hasha": "^5.2.0", + "http-proxy": "^1.18.1", + "invariant": "^2.2.4", + "is-relative": "^1.0.0", + "is-relative-url": "^3.0.0", + "jest-worker": "^24.9.0", + "joi": "^17.2.1", + "json-loader": "^0.5.7", + "json-stringify-safe": "^5.0.1", + "latest-version": "5.1.0", + "lodash": "^4.17.20", + "md5-file": "^5.0.0", + "meant": "^1.0.1", + "memoizee": "^0.4.15", + "micromatch": "^4.0.2", + "mime": "^2.4.6", + "mini-css-extract-plugin": "^0.11.2", + "mitt": "^1.2.0", + "mkdirp": "^0.5.1", + "moment": "^2.27.0", + "name-all-modules-plugin": "^1.0.1", + "normalize-path": "^3.0.0", + "null-loader": "^3.0.0", + "opentracing": "^0.14.4", + "optimize-css-assets-webpack-plugin": "^5.0.3", + "p-defer": "^3.0.0", + "parseurl": "^1.3.3", + "physical-cpu-count": "^2.0.0", + "pnp-webpack-plugin": "^1.6.4", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^3.0.0", + "prompts": "^2.3.2", + "prop-types": "^15.7.2", + "query-string": "^6.13.1", + "raw-loader": "^0.5.1", + "react-dev-utils": "^4.2.3", + "react-error-overlay": "^3.0.0", + "react-hot-loader": "^4.12.21", + "react-refresh": "^0.8.3", + "redux": "^4.0.5", + "redux-thunk": "^2.3.0", + "semver": "^7.3.2", + "shallow-compare": "^1.2.2", + "signal-exit": "^3.0.3", + "slugify": "^1.4.4", + "socket.io": "3.1.1", + "socket.io-client": "3.1.1", + "source-map": "^0.7.3", + "source-map-support": "^0.5.19", + "st": "^2.0.0", + "stack-trace": "^0.0.10", + "string-similarity": "^1.2.2", + "strip-ansi": "^5.2.0", + "style-loader": "^0.23.1", + "terser-webpack-plugin": "^2.3.8", + "tmp": "^0.2.1", + "true-case-path": "^2.2.1", + "type-of": "^2.0.1", + "url-loader": "^1.1.2", + "util.promisify": "^1.0.1", + "uuid": "3.4.0", + "v8-compile-cache": "^2.2.0", + "webpack": "^4.44.1", + "webpack-dev-middleware": "^3.7.2", + "webpack-dev-server": "^3.11.2", + "webpack-hot-middleware": "^2.25.0", + "webpack-merge": "^4.2.2", + "webpack-stats-plugin": "^0.3.2", + "webpack-virtual-modules": "^0.2.2", + "xstate": "^4.11.0", + "yaml-loader": "^0.6.0" + }, + "bin": { + "gatsby": "cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react": "^16.4.2 || ^17.0.0", + "react-dom": "^16.4.2 || ^17.0.0" + } + }, + "node_modules/gatsby-cli": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.19.3.tgz", + "integrity": "sha512-3xXe4y6DazWNYE2JFyErI7BGlgQjY4rRL5OTFWHvs6ULw7fu0xgoWXxKsoAp6S2xosKSS4zRVA6O7dDHAdidiw==", + "hasInstallScript": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@hapi/joi": "^15.1.1", + "@types/common-tags": "^1.8.0", + "better-opn": "^2.0.0", + "chalk": "^4.1.0", + "clipboardy": "^2.3.0", + "common-tags": "^1.8.0", + "configstore": "^5.0.1", + "convert-hrtime": "^3.0.0", + "create-gatsby": "^0.5.1", + "envinfo": "^7.7.3", + "execa": "^3.4.0", + "fs-exists-cached": "^1.0.0", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "gatsby-recipes": "^0.9.3", + "gatsby-telemetry": "^1.10.2", + "hosted-git-info": "^3.0.6", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.20", + "meant": "^1.0.2", + "node-fetch": "^2.6.1", + "opentracing": "^0.14.4", + "pretty-error": "^2.1.1", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "redux": "^4.0.5", + "resolve-cwd": "^3.0.0", + "semver": "^7.3.2", + "signal-exit": "^3.0.3", + "source-map": "0.7.3", + "stack-trace": "^0.0.10", + "strip-ansi": "^5.2.0", + "update-notifier": "^5.0.1", + "uuid": "3.4.0", + "yargs": "^15.4.1", + "yoga-layout-prebuilt": "^1.9.6", + "yurnalist": "^2.1.0" + }, + "bin": { + "gatsby": "cli.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-cli/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/gatsby-cli/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-cli/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gatsby-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/gatsby-cli/node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/gatsby-cli/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/gatsby-cli/node_modules/execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/gatsby-cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gatsby-cli/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-cli/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-cli/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/gatsby-cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby-cli/node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby-cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-cli/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-cli/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-cli/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/gatsby-cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/gatsby-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-core-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.10.1.tgz", + "integrity": "sha512-4P3feGCJckg+DRWWl2beFk7N9c63zmCryEGPaU1OHCp+ZT2bO0ihCBuXywDWuuEp6SYP9PZ1fs0YJ/Rt6q6lag==", + "dependencies": { + "ci-info": "2.0.0", + "configstore": "^5.0.1", + "fs-extra": "^8.1.0", + "node-object-hash": "^2.0.0", + "proper-lockfile": "^4.1.1", + "tmp": "^0.2.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-core-utils/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gatsby-graphiql-explorer": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.11.0.tgz", + "integrity": "sha512-mmxQhQSDUkbtOhQUek9a9sSg6LpiQUytNNR2hec8iklau2D4MDA5CvHTk9GUGhjdUgtnHSe/MPyZVJGmXSnYAA==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-legacy-polyfills": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.7.1.tgz", + "integrity": "sha512-yOQtX72GSJxloyUZEary3ZBihz/+a3uouLiaZKk6dHOeUHnRkQkXD+UT/zt7Xm+er/VD3KRsQQv+Re1krpbY7g==", + "dependencies": { + "core-js-compat": "^3.6.5" + } + }, + "node_modules/gatsby-link": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.11.0.tgz", + "integrity": "sha512-AYXxndlSx5mnYv+/PBPdPBRvdv1LeSGE3WO8uYj2ReYDSbhiAlF3KKz30D62ErartXP0deySPtRKx4Dd3nCFYw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/reach__router": "^1.3.7", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "@reach/router": "^1.3.3", + "react": "^16.4.2 || ^17.0.0", + "react-dom": "^16.4.2 || ^17.0.0" + } + }, + "node_modules/gatsby-page-utils": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.9.1.tgz", + "integrity": "sha512-UHedSs64HXzoivCk7ZdE9139hi34CcZfexP+Vxe2Zt4aK+MeXowec8VdxKD3Pp08O/YEGKBv2TtSV9gSR/lt2g==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "bluebird": "^3.7.2", + "chokidar": "^3.5.1", + "fs-exists-cached": "^1.0.0", + "gatsby-core-utils": "^1.10.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-page-utils/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-page-utils/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-page-utils/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-page-utils/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/gatsby-page-utils/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-page-utils/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gatsby-page-utils/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gatsby-page-utils/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-page-utils/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gatsby-page-utils/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/gatsby-page-utils/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gatsby-page-utils/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/gatsby-page-utils/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/gatsby-plugin-catch-links": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-2.0.13.tgz", + "integrity": "sha512-3JOwByiAKaiHo9k+QMiqe15H0T7wGh0NyulSFz7am1HC5/XHzcrX2ysW/zo1PV5eZq3P+n+X5V0t28cp+n1FBg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "escape-string-regexp": "^1.0.5" + } + }, + "node_modules/gatsby-plugin-glamor": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/gatsby-plugin-glamor/-/gatsby-plugin-glamor-2.0.9.tgz", + "integrity": "sha512-gWJJ8XMRFMQU5TGdMNG/Il9SXFqIm8Yhm5y59Iiqkqk5ujJj5O5HJeG92m6OW8d8jEj9SVNN5KCM8hiIggtsKQ==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/gatsby-plugin-google-analytics": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.0.18.tgz", + "integrity": "sha512-fW2WKo7onfxr9sVUCKKtDRUVqleVHBp9CMz7xVWnNpiM3+u4KgYWj7VzmjKPr00zgmp/AOEu1L7SUjYMDys0QA==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/gatsby-plugin-page-creator": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.10.2.tgz", + "integrity": "sha512-XkHSOgI4ZPA4XgadjGGFSp4eu51G8HXEVKG5gaef1/w0bcktw+aEwgEyb8VtL61NfIH2zXquyvrmwsil89nVCw==", + "dependencies": { + "@babel/traverse": "^7.12.5", + "@sindresorhus/slugify": "^1.1.0", + "chokidar": "^3.5.1", + "fs-exists-cached": "^1.0.0", + "gatsby-page-utils": "^0.9.1", + "gatsby-telemetry": "^1.10.2", + "globby": "^11.0.2", + "lodash": "^4.17.20" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "gatsby": "^2.0.0" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-plugin-page-creator/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/gatsby-plugin-react-helmet": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.0.12.tgz", + "integrity": "sha512-x1DXKceTuEDePN9HcQymzQ+oBgmT3PKVQLSFbxrOECiC71cQRp03FJK0i/ClAkMJ3IJNLCGJDvi7dKydkc6dvw==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/gatsby-plugin-twitter": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-2.0.13.tgz", + "integrity": "sha512-FaX3CFdZrZGxY1dRbcFanEQydGgG074cVqRe8DwQs4uqTTMnm6mW4U6kHrVsoNNeoDhMhA6u+1iqe1yRlgT3+g==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/gatsby-plugin-typescript": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.12.1.tgz", + "integrity": "sha512-p32qJVDi5Xw1Oo5vLMUXdRBxSDlMrfxTGb7etMAsVfyLRlRhMLb2YsuXJIvN1IfybQ6Z3EbhlH293cpxn5jozg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.5", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/preset-typescript": "^7.12.1", + "@babel/runtime": "^7.12.5", + "babel-plugin-remove-graphql-queries": "^2.16.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-plugin-typography": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-2.2.10.tgz", + "integrity": "sha512-sg9UkDrn3C3EN+yBSrUNzbGIlw1k1Qc6rYZWuXeqNEuQfdWJfqJMVzVhhriBDz2sC2bU6Wh/NnQ2vXVkRs4bKw==", + "dependencies": { + "@babel/runtime": "^7.0.0" + } + }, + "node_modules/gatsby-plugin-utils": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-0.9.0.tgz", + "integrity": "sha512-InM8PNHtx1kF87qQOlf4pVeNA8lSIsvSjImvN6dvpUjeQqOMRN1avY0W9Trh6LKTF/keWWj975Gk8Vcr+PYyDA==", + "dependencies": { + "joi": "^17.2.1" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "gatsby": "^2.24.79" + } + }, + "node_modules/gatsby-react-router-scroll": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.7.0.tgz", + "integrity": "sha512-8sm04EQac7fccJZlllFEo349wAlNEuPVu35juuL0hgMDTyWlk4nPwPH/ACdpn2MgpEmrTSfp2yPxyzaRKVyzeQ==", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "@reach/router": "^1.0.0", + "react": "^16.4.2 || ^17.0.0", + "react-dom": "^16.4.2 || ^17.0.0" + } + }, + "node_modules/gatsby-recipes": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.9.3.tgz", + "integrity": "sha512-ToYeGCica4390QFWsW6+3DM6hhkpKifUEFoKDUdsQGw4rmD8aYndj5oASKIsvPAU0GUbxe8IDsDnP3V5iMtyEQ==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/generator": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.5", + "@babel/standalone": "^7.12.6", + "@babel/template": "^7.10.4", + "@babel/types": "^7.12.6", + "@graphql-tools/schema": "^7.0.0", + "@graphql-tools/utils": "^7.0.2", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "^15.1.1", + "better-queue": "^3.8.10", + "chokidar": "^3.4.2", + "contentful-management": "^7.5.1", + "cors": "^2.8.5", + "debug": "^4.3.1", + "detect-port": "^1.3.0", + "dotenv": "^8.2.0", + "execa": "^4.0.2", + "express": "^4.17.1", + "express-graphql": "^0.9.0", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "gatsby-telemetry": "^1.10.2", + "glob": "^7.1.6", + "graphql": "^14.6.0", + "graphql-compose": "^6.3.8", + "graphql-subscriptions": "^1.1.0", + "graphql-type-json": "^0.3.2", + "hicat": "^0.8.0", + "is-binary-path": "^2.1.0", + "is-url": "^1.2.4", + "jest-diff": "^25.5.0", + "lock": "^1.0.0", + "lodash": "^4.17.20", + "mitt": "^1.2.0", + "mkdirp": "^0.5.1", + "node-fetch": "^2.5.0", + "pkg-dir": "^4.2.0", + "prettier": "^2.0.5", + "prop-types": "^15.6.1", + "remark-mdx": "^2.0.0-next.4", + "remark-mdxjs": "^2.0.0-next.4", + "remark-parse": "^6.0.3", + "remark-stringify": "^8.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "single-trailing-newline": "^1.0.0", + "strip-ansi": "^6.0.0", + "style-to-object": "^0.3.0", + "unified": "^8.4.2", + "unist-util-remove": "^2.0.0", + "unist-util-visit": "^2.0.2", + "uuid": "3.4.0", + "ws": "^7.3.0", + "xstate": "^4.9.1", + "yoga-layout-prebuilt": "^1.9.6" + } + }, + "node_modules/gatsby-recipes/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby-recipes/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/gatsby-recipes/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/gatsby-recipes/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gatsby-recipes/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gatsby-recipes/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gatsby-recipes/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gatsby-recipes/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-recipes/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/gatsby-recipes/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/gatsby-recipes/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gatsby-recipes/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby-recipes/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby-recipes/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/gatsby-recipes/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby-recipes/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby-recipes/node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/gatsby-recipes/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/gatsby-recipes/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-recipes/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-recipes/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-recipes/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/gatsby-remark-prismjs": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-3.2.7.tgz", + "integrity": "sha512-nRMduwIWYr/arJHveu7UIBhokQ3OIpr7f7rZvPG4ajZJQxlp1TC0a9s4WY9BoBCfcrsLkSzYjNa+y2AarvuGWQ==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "parse-numeric-range": "^0.0.2", + "unist-util-visit": "^1.3.0" + } + }, + "node_modules/gatsby-source-filesystem": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.0.28.tgz", + "integrity": "sha512-eOj91auqUHgH46h6hkkqAa4W5g0X6q4b0EDzTF2/aLpIx2gB8g/70MSQG3i00IRv/tekXjKEWHZNW8AJDkommQ==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "better-queue": "^3.8.7", + "bluebird": "^3.5.0", + "chokidar": "2.1.2", + "file-type": "^10.2.0", + "fs-extra": "^5.0.0", + "got": "^7.1.0", + "md5-file": "^3.1.1", + "mime": "^2.2.0", + "pretty-bytes": "^4.0.2", + "progress": "^1.1.8", + "read-chunk": "^3.0.0", + "slash": "^1.0.0", + "valid-url": "^1.0.9", + "xstate": "^3.1.0" + } + }, + "node_modules/gatsby-source-filesystem/node_modules/got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/gatsby-source-filesystem/node_modules/progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/gatsby-source-filesystem/node_modules/xstate": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-3.3.3.tgz", + "integrity": "sha512-p0ZYDPWxZZZRAJyD3jaGO9/MYioHuxZp6sjcLhPfBZHAprl4EDrZRGDqRVH9VvK8oa6Nrbpf+U5eNmn8KFwO3g==" + }, + "node_modules/gatsby-telemetry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.10.2.tgz", + "integrity": "sha512-LwMtRIdcNuI25D+yU7RO+UcmF+3uPz0Zrefa+/rkTmxZuz54bOGSYqmzJJt1L1gRz7Jdl+DmYRqVgmiW/dsr/g==", + "hasInstallScript": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@turist/fetch": "^7.1.7", + "@turist/time": "^0.0.1", + "async-retry-ng": "^2.0.1", + "boxen": "^4.2.0", + "configstore": "^5.0.1", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "git-up": "^4.0.2", + "is-docker": "^2.1.1", + "lodash": "^4.17.20", + "node-fetch": "^2.6.1", + "uuid": "3.4.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby-telemetry/node_modules/@turist/fetch": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@turist/fetch/-/fetch-7.1.7.tgz", + "integrity": "sha512-XP20kvfyMNlWdPVQXyuzA40LoCHbbJptikt7W+TlZ5sS+NNjk70xjXCtHBLEudp7li3JldXEFSIUzpW1a0WEhA==", + "dependencies": { + "@types/node-fetch": "2" + }, + "peerDependencies": { + "node-fetch": "2" + } + }, + "node_modules/gatsby-telemetry/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gatsby-telemetry/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/gatsby-transformer-remark": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.16.1.tgz", + "integrity": "sha512-e002rDdXA5TwPRg57FzcBeZkY7T/xV+jAciV/96dn091NhLJXJz13PgZxyLKoD0AL4zdjuQQqhkiK3ksAuqCPQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "bluebird": "^3.7.2", + "gatsby-core-utils": "^1.10.1", + "gray-matter": "^4.0.2", + "hast-util-raw": "^4.0.0", + "hast-util-to-html": "^4.0.1", + "lodash": "^4.17.20", + "mdast-util-to-hast": "^3.0.4", + "mdast-util-to-string": "^1.1.0", + "mdast-util-toc": "^5.0", + "remark": "^10.0.1", + "remark-parse": "^6.0.3", + "remark-retext": "^3.1.3", + "remark-stringify": "6.0.4", + "retext-english": "^3.0.4", + "sanitize-html": "^1.27.5", + "underscore.string": "^3.3.5", + "unified": "^6.2.0", + "unist-util-remove-position": "^1.1.4", + "unist-util-select": "^1.5.0", + "unist-util-visit": "^1.4.1" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "gatsby": "^2.12.0" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + }, + "node_modules/gatsby-transformer-remark/node_modules/mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "dependencies": { + "unist-util-visit": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "dependencies": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + }, + "node_modules/gatsby-transformer-remark/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "dependencies": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dependencies": { + "unist-util-stringify-position": "^1.1.1" + } + }, + "node_modules/gatsby/node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", + "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", + "dependencies": { + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.x" + }, + "peerDependencies": { + "@types/webpack": "4.x", + "react-refresh": ">=0.8.3 <0.10.0", + "sockjs-client": "^1.4.0", + "type-fest": "^0.13.1", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/gatsby/node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/gatsby/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/gatsby/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gatsby/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/gatsby/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/gatsby/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/gatsby/node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "optional": true, + "peer": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gatsby/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gatsby/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gatsby/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gatsby/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true, + "peer": true + }, + "node_modules/gatsby/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gatsby/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby/node_modules/md5-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/gatsby/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/gatsby/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/gatsby/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gatsby/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/gatsby/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/gatsby/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gatsby/node_modules/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "optional": true, + "peer": true, + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "node_modules/gatsby/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/gatsby/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gatsby/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gatsby/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/gatsby/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gatsby/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/git-up": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", + "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", + "dependencies": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, + "node_modules/github-slugger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", + "dependencies": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "node_modules/github-slugger/node_modules/emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=" + }, + "node_modules/glamor": { + "version": "2.20.40", + "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", + "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", + "dependencies": { + "fbjs": "^0.8.12", + "inline-style-prefixer": "^3.0.6", + "object-assign": "^4.1.1", + "prop-types": "^15.5.10", + "through": "^2.3.8" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/globby/node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/globby/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/globby/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/globby/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/globby/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "node_modules/graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, + "node_modules/graphql-compose": { + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-6.3.8.tgz", + "integrity": "sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA==", + "dependencies": { + "graphql-type-json": "^0.2.4", + "object-path": "^0.11.4" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "graphql": ">=0.13.0 || >=14.0.0 || >=14.1.0" + } + }, + "node_modules/graphql-compose/node_modules/graphql-type-json": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", + "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==", + "peerDependencies": { + "graphql": ">=0.8.0" + } + }, + "node_modules/graphql-config": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-3.2.0.tgz", + "integrity": "sha512-ygEKDeQNZKpm4137560n2oY3bGM0D5zyRsQVaJntKkufWdgPg6sb9/4J1zJW2y/yC1ortAbhNho09qmeJeLa9g==", + "dependencies": { + "@endemolshinegroup/cosmiconfig-typescript-loader": "3.0.2", + "@graphql-tools/graphql-file-loader": "^6.0.0", + "@graphql-tools/json-file-loader": "^6.0.0", + "@graphql-tools/load": "^6.0.0", + "@graphql-tools/merge": "^6.0.0", + "@graphql-tools/url-loader": "^6.0.0", + "@graphql-tools/utils": "^6.0.0", + "cosmiconfig": "6.0.0", + "cosmiconfig-toml-loader": "1.0.0", + "minimatch": "3.0.4", + "string-env-interpolation": "1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-config/node_modules/@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "dependencies": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-config/node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "node_modules/graphql-config/node_modules/camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dependencies": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "node_modules/graphql-config/node_modules/camel-case/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/graphql-config/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-fbF/zZKuw2sdfKp8gjTORJ/I9xBsqeEYRseWxBzuR15NHMptRTT9414IyRCs3ognZzUDr5MDJgx97SlLZCtQyA==", + "dependencies": { + "xss": "^1.0.6" + } + }, + "node_modules/graphql-playground-middleware-express": { + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.22.tgz", + "integrity": "sha512-PJLiCxLmN6Dp+dHGyHU92m9y3hB/RAkcUBWcqYl2fiP+EbpDDgNfElrsVzW60MhJe+LTV1PFqiInH2d3KNvlCQ==", + "dependencies": { + "graphql-playground-html": "^1.6.29" + }, + "peerDependencies": { + "express": "^4.16.2" + } + }, + "node_modules/graphql-subscriptions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", + "dependencies": { + "iterall": "^1.3.0" + }, + "peerDependencies": { + "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/graphql-type-json": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", + "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", + "peerDependencies": { + "graphql": ">=0.8.0" + } + }, + "node_modules/graphql-ws": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.5.0.tgz", + "integrity": "sha512-J3PuSfOKX2y9ryOtWxOcKlizkFWyhCvPAc3hhMKMVSTcPxtWiv9oNzvAZp1HKfuQng32YQduHeX+lRDy2+F6VQ==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": ">=0.11 <=15" + } + }, + "node_modules/gray-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.2.tgz", + "integrity": "sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==", + "dependencies": { + "js-yaml": "^3.11.0", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gray-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gray-percentage/-/gray-percentage-2.0.0.tgz", + "integrity": "sha1-tyonTRsTeRBKAFC2OyB9xT/lb5k=" + }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "node_modules/gzip-size": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", + "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==", + "dependencies": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz", + "integrity": "sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg==", + "dependencies": { + "comma-separated-tokens": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.2.1", + "unist-util-is": "^2.0.0", + "web-namespaces": "^1.1.2" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz", + "integrity": "sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ==", + "dependencies": { + "ccount": "^1.0.3", + "hastscript": "^4.0.0", + "property-information": "^4.0.0", + "web-namespaces": "^1.1.2", + "xtend": "^4.0.1" + } + }, + "node_modules/hast-util-is-element": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.0.2.tgz", + "integrity": "sha512-4MEtyofNi3ZunPFrp9NpTQdNPN24xvLX3M+Lr/RGgPX6TLi+wR4/DqeoyQ7lwWcfUp4aevdt4RR0r7ZQPFbHxw==" + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.1.tgz", + "integrity": "sha512-Xyh0v+nHmQvrOqop2Jqd8gOdyQtE8sIP9IQf7mlVDqp924W4w/8Liuguk2L2qei9hARnQSG2m+wAOCxM7npJVw==" + }, + "node_modules/hast-util-raw": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-4.0.0.tgz", + "integrity": "sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw==", + "dependencies": { + "hast-util-from-parse5": "^4.0.2", + "hast-util-to-parse5": "^4.0.1", + "html-void-elements": "^1.0.1", + "parse5": "^5.0.0", + "unist-util-position": "^3.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.1", + "zwitch": "^1.0.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz", + "integrity": "sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==", + "dependencies": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.1", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^1.0.1", + "unist-util-is": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz", + "integrity": "sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw==", + "dependencies": { + "hast-to-hyperscript": "^5.0.0", + "property-information": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.1", + "zwitch": "^1.0.0" + } + }, + "node_modules/hast-util-whitespace": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.2.tgz", + "integrity": "sha512-4JT8B0HKPHBMFZdDQzexjxwhKx9TrpV/+uelvmqlPu8RqqDrnNIEHDtDZCmgE+4YmcFAtKVPLmnY3dQGRaN53A==" + }, + "node_modules/hastscript": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-4.1.0.tgz", + "integrity": "sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ==", + "dependencies": { + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.2.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "node_modules/hicat": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hicat/-/hicat-0.8.0.tgz", + "integrity": "sha512-om8L9O5XwqeSdwl5NtHgrzK3wcF4fT9T4gb/NktoH8EyoZipas/tvUZLV48xT7fQfMYr9qvb0WEutqdf0LWSqA==", + "dependencies": { + "highlight.js": "^10.4.1", + "minimist": "^1.2.5" + }, + "bin": { + "hicat": "bin/hicat" + } + }, + "node_modules/highlight.js": { + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==", + "engines": { + "node": "*" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + }, + "node_modules/html-void-elements": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.3.tgz", + "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" + }, + "node_modules/html2canvas": { + "version": "1.0.0-alpha.12", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", + "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=", + "dependencies": { + "css-line-break": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", + "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "node_modules/icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/icss-utils/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-cwd/node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-cwd/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "engines": { + "node": ">=4" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/inline-style-prefixer": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", + "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", + "dependencies": { + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" + } + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/inquirer/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/inquirer/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==" + }, + "node_modules/is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==" + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", + "dependencies": { + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd/node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-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==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz", + "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==", + "dependencies": { + "is-absolute-url": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "node_modules/is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-ssh": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", + "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", + "dependencies": { + "protocols": "^1.1.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/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==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "dependencies": { + "is-invalid-path": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dependencies": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "dependencies": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/joi": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", + "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/joi/node_modules/@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + }, + "node_modules/joi/node_modules/@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/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=" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "node_modules/jsx-ast-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", + "dependencies": { + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dependencies": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dependencies": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + } + }, + "node_modules/loader-fs-cache/node_modules/find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dependencies": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dependencies": { + "find-up": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lock": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz", + "integrity": "sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU=" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=" + }, + "node_modules/lodash.every": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", + "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" + }, + "node_modules/lodash.maxby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.maxby/-/lodash.maxby-4.6.0.tgz", + "integrity": "sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0=" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "node_modules/lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" + }, + "node_modules/loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dependencies": { + "js-tokens": "^3.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "engines": { + "node": ">=4" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "dependencies": { + "buffer-alloc": "^1.1.0" + }, + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-compact/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-compact/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-compact/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.3.tgz", + "integrity": "sha512-P6wpRO8YVQ1iv30maMc93NLh7COvufglBE8/ldcOyYmk5EbfF0YeqlLgtqP/FOBU501Kqar1x5wYWwB3Nga74g==", + "dependencies": { + "unist-util-visit": "^1.0.0" + } + }, + "node_modules/mdast-util-mdx": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-0.1.1.tgz", + "integrity": "sha512-9nncdnHNYSb4HNxY3AwE6gU632jhbXsDGXe9PkkJoEawYWJ8tTwmEOHGlGa2TCRidtkd6FF5I8ogDU9pTDlQyA==", + "dependencies": { + "mdast-util-mdx-expression": "~0.1.0", + "mdast-util-mdx-jsx": "~0.1.0", + "mdast-util-mdxjs-esm": "~0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-0.1.1.tgz", + "integrity": "sha512-SoO8y1B9NjMOYlNdwXMchuTVvqSTlUmXm1P5QvZNPv7OH7aa8qJV+3aA+vl1DHK9Vk1uZAlgwokjvDQhS6bINA==", + "dependencies": { + "strip-indent": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression/node_modules/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==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-0.1.4.tgz", + "integrity": "sha512-67KOAvCmypBSpr+AJEAVQg1Obig5Wnguo4ETTxASe5WVP4TLt57bZjDX/9EW5sWYQsO4gPqLxkUOlypVn5rkhg==", + "dependencies": { + "mdast-util-to-markdown": "^0.6.0", + "parse-entities": "^2.0.0", + "stringify-entities": "^3.1.0", + "unist-util-remove-position": "^3.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", + "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-0.1.1.tgz", + "integrity": "sha512-kBiYeashz+nuhfv+712nc4THQhzXIH2gBFUDbuLxuDCqU/fZeg+9FAcdRBx9E13dkpk1p2Xwufzs3wsGJ+mISQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz", + "integrity": "sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==", + "dependencies": { + "collapse-white-space": "^1.0.0", + "detab": "^2.0.0", + "mdast-util-definitions": "^1.2.0", + "mdurl": "^1.0.1", + "trim": "0.0.1", + "trim-lines": "^1.0.0", + "unist-builder": "^1.0.1", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.0", + "xtend": "^4.0.1" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-nlcst": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", + "integrity": "sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==", + "dependencies": { + "nlcst-to-string": "^2.0.0", + "repeat-string": "^1.5.2", + "unist-util-position": "^3.0.0", + "vfile-location": "^2.0.0" + } + }, + "node_modules/mdast-util-to-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", + "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", + "dependencies": { + "@types/mdast": "^3.0.3", + "@types/unist": "^2.0.3", + "extend": "^3.0.2", + "github-slugger": "^1.2.1", + "mdast-util-to-string": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-toc/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/meant": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz", + "integrity": "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dependencies": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/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=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/meow/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/meow/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "node_modules/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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx/-/micromark-extension-mdx-0.2.1.tgz", + "integrity": "sha512-J+nZegf1ExPz1Ft6shxu8M9WfRom1gwRIx6gpJK1SEEqKzY5LjOR1d/WHRtjwV4KoMXrL53+PoN7T1Rw1euJew==", + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "~0.3.0", + "micromark-extension-mdx-jsx": "~0.3.0", + "micromark-extension-mdx-md": "~0.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-0.3.2.tgz", + "integrity": "sha512-Sh8YHLSAlbm/7TZkVKEC4wDcJE8XhVpZ9hUXBue1TcAicrrzs/oXu7PHH3NcyMemjGyMkiVS34Y0AHC5KG3y4A==", + "dependencies": { + "micromark": "~2.11.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-0.3.3.tgz", + "integrity": "sha512-kG3VwaJlzAPdtIVDznfDfBfNGMTIzsHqKpTmMlew/iPnUCDRNkX+48ElpaOzXAtK5axtpFKE3Hu3VBriZDnRTQ==", + "dependencies": { + "estree-util-is-identifier-name": "^1.0.0", + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "^0.3.2", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-0.1.1.tgz", + "integrity": "sha512-emlFQEyfx/2aPhwyEqeNDfKE6jPH1cvLTb5ANRo4qZBjaUObnzjLRdzK8RJ4Xc8+/dOmKN8TTRxFnOYF5/EAwQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-0.3.0.tgz", + "integrity": "sha512-NQuiYA0lw+eFDtSG4+c7ao3RG9dM4P0Kx/sn8OLyPhxtIc6k+9n14k5VfLxRKfAxYRTo8c5PLZPaRNmslGWxJw==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "~0.3.0", + "micromark-extension-mdx-jsx": "~0.3.0", + "micromark-extension-mdx-md": "~0.1.0", + "micromark-extension-mdxjs-esm": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-0.3.1.tgz", + "integrity": "sha512-tuLgcELrgY1a5tPxjk+MrI3BdYtwW67UaHZdzKiDYD8loNbxwIscfdagI6A2BKuAkrfeyHF6FW3B8KuDK3ZMXw==", + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "^0.3.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs/node_modules/acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/micromark/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/micromark/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dependencies": { + "mime-db": "1.47.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", + "integrity": "sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==", + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modularscale": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/modularscale/-/modularscale-1.0.2.tgz", + "integrity": "sha1-So8TrzKl5SFPxuLPxSkGSr/X2Hc=", + "dependencies": { + "lodash.isnumber": "^3.0.0" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "node_modules/name-all-modules-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz", + "integrity": "sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w=" + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/native-url": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", + "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", + "dependencies": { + "querystring": "^0.2.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/nlcst-to-string": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", + "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/node-eta": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-eta/-/node-eta-0.9.0.tgz", + "integrity": "sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g=" + }, + "node_modules/node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dependencies": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "node_modules/node-object-hash": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.1.tgz", + "integrity": "sha512-ab7pm34jqISawXpJ+fHjj2E9CmzDtm2fTTdurgzbWXIrdTEk2q2cSZRzoeGrwa0cvq6Sqezq6S9bhOBYPHRzuQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" + }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/noms/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/noms/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/noms/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-url/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-url/node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/null-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "dependencies": { + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.3.0" + } + }, + "node_modules/null-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-path": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", + "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==", + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/opentracing": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.5.tgz", + "integrity": "sha512-XLKtEfHxqrWyF1fzxznsv78w3csW41ucHnjiKnfzZLD5FN8UBDZZL1i4q0FR29zjxXhm+2Hop+5Vr/b8tKIvEg==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", + "dependencies": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-defer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/package-json/node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/package-json/node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/package-json/node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/package-json/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-english": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.2.0.tgz", + "integrity": "sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==", + "dependencies": { + "nlcst-to-string": "^2.0.0", + "parse-latin": "^4.0.0", + "unist-util-modify-children": "^2.0.0", + "unist-util-visit-children": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-latin": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz", + "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==", + "dependencies": { + "nlcst-to-string": "^2.0.0", + "unist-util-modify-children": "^2.0.0", + "unist-util-visit-children": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-numeric-range": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz", + "integrity": "sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=" + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dependencies": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + } + }, + "node_modules/parse-path/node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=" + }, + "node_modules/parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" + }, + "node_modules/parse-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.2.tgz", + "integrity": "sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==", + "dependencies": { + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + } + }, + "node_modules/parse-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "node_modules/parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" + }, + "node_modules/parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "dependencies": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + } + }, + "node_modules/password-prompt/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/password-prompt/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" + }, + "node_modules/picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dependencies": { + "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/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==" + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", + "dependencies": { + "postcss": "^7.0.26" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-load-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-load-config/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-load-config/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-load-config/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dependencies": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-values/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", + "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser/node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dependencies": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/pretty-format/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/prismjs": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", + "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", + "optionalDependencies": { + "clipboard": "^2.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "node_modules/prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/prop-types/node_modules/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==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/property-information": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", + "integrity": "sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==", + "dependencies": { + "xtend": "^4.0.1" + } + }, + "node_modules/protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dev-utils": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.3.tgz", + "integrity": "sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ==", + "dependencies": { + "address": "1.0.3", + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "cross-spawn": "5.1.0", + "detect-port-alt": "1.1.3", + "escape-string-regexp": "1.0.5", + "filesize": "3.5.11", + "global-modules": "1.0.0", + "gzip-size": "3.0.0", + "inquirer": "3.3.0", + "is-root": "1.0.0", + "opn": "5.1.0", + "react-error-overlay": "^3.0.0", + "recursive-readdir": "2.2.1", + "shell-quote": "1.6.1", + "sockjs-client": "1.1.4", + "strip-ansi": "3.0.1", + "text-table": "0.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dev-utils/node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "node_modules/react-dev-utils/node_modules/detect-port-alt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.3.tgz", + "integrity": "sha1-pNLwYddXoDTs83xRQmCph1DysTE=", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/react-dev-utils/node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/react-dev-utils/node_modules/gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dependencies": { + "duplexer": "^0.1.1" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/react-dev-utils/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/react-dom": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + } + }, + "node_modules/react-error-overlay": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-3.0.0.tgz", + "integrity": "sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw==" + }, + "node_modules/react-helmet": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", + "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", + "dependencies": { + "deep-equal": "^1.0.1", + "object-assign": "^4.1.1", + "prop-types": "^15.5.4", + "react-side-effect": "^1.1.0" + } + }, + "node_modules/react-hot-loader": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz", + "integrity": "sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA==", + "dependencies": { + "fast-levenshtein": "^2.0.6", + "global": "^4.3.0", + "hoist-non-react-statics": "^3.3.0", + "loader-utils": "^1.1.0", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "@types/react": "^15.0.0 || ^16.0.0 || ^17.0.0 ", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 ", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 " + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-hot-loader/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-refresh": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", + "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-side-effect": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", + "integrity": "sha512-Z2ZJE4p/jIfvUpiUMRydEVpQRf2f8GMHczT6qLcARmX7QRb28JDBTpnM2g/i5y/p7ZDEXYGHWg0RbhikE+hJRw==", + "dependencies": { + "exenv": "^1.2.1", + "shallowequal": "^1.0.1" + } + }, + "node_modules/react-typography": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/react-typography/-/react-typography-0.16.19.tgz", + "integrity": "sha512-kV2qLEsdm0x9P4YXQEDVc88tDb4Vg0h/vdVZGgbqaRn8ERvNzV76JHUeOby3vvcUYU5MPd5Kz5DPH9Bhp4I/iw==" + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-chunk": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", + "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", + "dependencies": { + "pify": "^4.0.1", + "with-open-file": "^0.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-chunk/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", + "dependencies": { + "minimatch": "3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dependencies": { + "brace-expansion": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dependencies": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/redux": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, + "node_modules/redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + }, + "node_modules/regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "node_modules/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==", + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "node_modules/regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remark": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", + "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", + "dependencies": { + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" + } + }, + "node_modules/remark-mdx": { + "version": "2.0.0-next.9", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.0.0-next.9.tgz", + "integrity": "sha512-I5dCKP5VE18SMd5ycIeeEk8Hl6oaldUY6PIvjrfm65l7d0QRnLqknb62O2g3QEmOxCswcHTtwITtz6rfUIVs+A==", + "dependencies": { + "mdast-util-mdx": "^0.1.1", + "micromark-extension-mdx": "^0.2.0", + "micromark-extension-mdxjs": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdxjs": { + "version": "2.0.0-next.8", + "resolved": "https://registry.npmjs.org/remark-mdxjs/-/remark-mdxjs-2.0.0-next.8.tgz", + "integrity": "sha512-Z/+0eWc7pBEABwg3a5ptL+vCTWHYMFnYzpLoJxTm2muBSk8XyB/CL+tEJ6SV3Q/fScHX2dtG4JRcGSpbZFLazQ==", + "dependencies": { + "@babel/core": "7.10.5", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.10.4", + "@babel/plugin-syntax-jsx": "7.10.4", + "@mdx-js/util": "^2.0.0-next.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdxjs/node_modules/@babel/core": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", + "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdxjs/node_modules/@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==" + }, + "node_modules/remark-mdxjs/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdxjs/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdxjs/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/remark-mdxjs/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/remark-parse": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", + "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", + "dependencies": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/remark-parse/node_modules/parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "node_modules/remark-retext": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.3.tgz", + "integrity": "sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==", + "dependencies": { + "mdast-util-to-nlcst": "^3.2.0" + } + }, + "node_modules/remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dependencies": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/remark/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/remark/node_modules/markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + }, + "node_modules/remark/node_modules/mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "dependencies": { + "unist-util-visit": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark/node_modules/parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "node_modules/remark/node_modules/remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "dependencies": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "node_modules/remark/node_modules/unified": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "dependencies": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "node_modules/remark/node_modules/unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + }, + "node_modules/remark/node_modules/vfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "dependencies": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "node_modules/remark/node_modules/vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "dependencies": { + "unist-util-stringify-position": "^1.1.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "node_modules/renderkid": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "dependencies": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retext-english": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.4.tgz", + "integrity": "sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==", + "dependencies": { + "parse-english": "^4.0.0", + "unherit": "^1.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "node_modules/rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dependencies": { + "rx-lite": "*" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize-html": { + "version": "1.27.5", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", + "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", + "dependencies": { + "htmlparser2": "^4.1.0", + "lodash": "^4.17.15", + "parse-srcset": "^1.0.2", + "postcss": "^7.0.27" + } + }, + "node_modules/sanitize-html/node_modules/dom-serializer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/sanitize-html/node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/sanitize-html/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/sanitize-html/node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/sanitize-html/node_modules/domutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/sanitize-html/node_modules/domutils/node_modules/domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/sanitize-html/node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/section-matter/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "node_modules/selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-compare": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/shallow-compare/-/shallow-compare-1.2.2.tgz", + "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dependencies": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/single-trailing-newline": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/single-trailing-newline/-/single-trailing-newline-1.0.0.tgz", + "integrity": "sha1-gfCtKtZFGBlFyAlSpcFBSZLulmQ=", + "dependencies": { + "detect-newline": "^1.0.3" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slugify": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.2.tgz", + "integrity": "sha512-Grpsq9/NLsae2qF2GJcoTcnDxIKp1Yt59mC+Lq+SE5xovVAckY8xG4A8jUPdY7IXhHg84u0cU/oij1XX4FXxpA==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/socket.io": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.1.tgz", + "integrity": "sha512-7cBWdsDC7bbyEF6WbBqffjizc/H4YF1wLdZoOzuYfo2uMNSFjJKuQ36t0H40o9B20DO6p+mSytEd92oP4S15bA==", + "dependencies": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": "^14.14.10", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" + }, + "node_modules/socket.io-client": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.1.tgz", + "integrity": "sha512-BLgIuCjI7Sf3mDHunKddX9zKR/pbkP7IACM3sJS3jha+zJ6/pGKRV6Fz5XSBHCfUs9YzT8kYIqNwOOuFNLtnYA==", + "dependencies": { + "@types/component-emitter": "^1.2.10", + "backo2": "~1.0.2", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-client": "~4.1.0", + "parseuri": "0.0.6", + "socket.io-parser": "~4.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dependencies": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "node_modules/space-separated-tokens": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.2.tgz", + "integrity": "sha512-G3jprCEw+xFEs0ORweLmblJ3XLymGGr6hxZYTYZjIlvDti9vOBUjRQa1Rzjt012aRrocKstHwdNi+F7HguPsEA==", + "dependencies": { + "trim": "0.0.1" + } + }, + "node_modules/spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dependencies": { + "spdx-license-ids": "^1.0.2" + } + }, + "node_modules/spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "node_modules/spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dependencies": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/st": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", + "integrity": "sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==", + "dependencies": { + "async-cache": "^1.1.0", + "bl": "^4.0.0", + "fd": "~0.0.2", + "mime": "^2.4.4", + "negotiator": "~0.6.2" + }, + "bin": { + "st": "bin/server.js" + }, + "optionalDependencies": { + "graceful-fs": "^4.2.3" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==" + }, + "node_modules/string-similarity": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", + "integrity": "sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==", + "dependencies": { + "lodash.every": "^4.6.0", + "lodash.flattendeep": "^4.4.0", + "lodash.foreach": "^4.5.0", + "lodash.map": "^4.6.0", + "lodash.maxby": "^4.6.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", + "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dependencies": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/style-to-object": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.2.2.tgz", + "integrity": "sha512-GcbtvfsqyKmIPpHeOHZ5Rmwsx2MDJct4W9apmTGcbPTbpA2FcgTFl2Z43Hm4Qb61MWGPNK8Chki7ITiY7lLOow==", + "dependencies": { + "css": "2.2.4" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/subscriptions-transport-ws": { + "version": "0.9.18", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz", + "integrity": "sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA==", + "dependencies": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0" + }, + "peerDependencies": { + "graphql": ">=0.10.0" + } + }, + "node_modules/subscriptions-transport-ws/node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/subscriptions-transport-ws/node_modules/ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sync-fetch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz", + "integrity": "sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==", + "dependencies": { + "buffer": "^5.7.0", + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sync-fetch/node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", + "dependencies": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, + "node_modules/trim-lines": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.1.tgz", + "integrity": "sha512-X+eloHbgJGxczUk1WSjIvn7aC9oN3jVE3rQfRVKcgpavi3jxtCn0VVKtjOBj64Yop96UYn/ujJRpTbCdAF1vyg==" + }, + "node_modules/trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "engines": { + "node": ">=4" + } + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" + }, + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dependencies": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" + } + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.0.2.tgz", + "integrity": "sha512-a720oz3Kjbp3ll0zkeN9qjRhO7I34MKMhPGQiQJAmaZQZQ1lo+NWThK322f7sXV+kTg9B1Ybt16KgBXWgteT8w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-of/-/type-of-2.0.1.tgz", + "integrity": "sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI=" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typography": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography/-/typography-0.16.19.tgz", + "integrity": "sha512-zfsyjPPB1RaK8TzU3REta6EGDZa++YQ6g/CWw7hy/8xQK1qyzFWisMIw5J+Yg1KyiVgcchmxlgMcMA6JAJ9oew==", + "dependencies": { + "compass-vertical-rhythm": "^1.4.5", + "decamelize": "^1.2.0", + "gray-percentage": "^2.0.0", + "lodash": "^4.13.1", + "modularscale": "^1.0.2", + "object-assign": "^4.1.0", + "typography-normalize": "^0.16.19" + } + }, + "node_modules/typography-theme-github": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography-theme-github/-/typography-theme-github-0.16.19.tgz", + "integrity": "sha512-kDfFjbeh2JW3buPub1JUA39AIKQrZhMuEeqJo6P+9c9JOEMLUBPvcHGrNd+wtAuZlVehPbqG6bcW6KAANHrsGw==", + "dependencies": { + "gray-percentage": "^2.0.0" + } + }, + "node_modules/typography/node_modules/compass-vertical-rhythm": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/compass-vertical-rhythm/-/compass-vertical-rhythm-1.4.5.tgz", + "integrity": "sha512-bJo3IYX7xmmZCDYjrT2XolaiNjGZ4E2JvUGxpdU0ecbH4ZLK786wvc8aHKVrGrKct9JlkmJbUi8YLrQWvOc+uA==", + "dependencies": { + "convert-css-length": "^1.0.1", + "object-assign": "^4.1.0", + "parse-unit": "^1.0.1" + } + }, + "node_modules/typography/node_modules/typography-normalize": { + "version": "0.16.19", + "resolved": "https://registry.npmjs.org/typography-normalize/-/typography-normalize-0.16.19.tgz", + "integrity": "sha512-vtnSv/uGBZVbd4e/ZhZB9HKBgKKlWQUXw74+ADIHHxzKp27CEf8PSR8TX1zF2qSyQ9/qMdqLwXYz8yRQFq9JLQ==" + }, + "node_modules/ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dependencies": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.3.tgz", + "integrity": "sha512-/KB8GEaoeHRyIqClL+Kam+Y5NWJ6yEiPsAfv1M+O1p+aKGgjR89WwoEHKTyOj17L6kAlqtKpAgv2nWvdbQDEig==", + "dependencies": { + "object-assign": "^4.1.0" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.3.tgz", + "integrity": "sha512-qlPeDqnQnd84KIqwphzOR+l02cxjDzvEYEBl84EjmKRrX4eUmjyAo8xJv1SCDhJqNjyHRnBMZWNKAiBtXE6hBg==" + }, + "node_modules/unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + }, + "node_modules/unist-util-modify-children": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", + "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", + "dependencies": { + "array-iterate": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.2.tgz", + "integrity": "sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g==" + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", + "dependencies": { + "unist-util-visit": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-1.5.0.tgz", + "integrity": "sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=", + "dependencies": { + "css-selector-parser": "^1.1.0", + "debug": "^2.2.0", + "nth-check": "^1.0.1" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", + "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/unist-util-visit-children": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", + "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", + "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "dependencies": { + "unist-util-is": "^2.1.2" + } + }, + "node_modules/universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/update-notifier/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dependencies": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/url-parse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "engines": { + "node": ">= 4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dependencies": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "node_modules/value-or-promise": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", + "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/watchpack/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "optional": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/watchpack/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/watchpack/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/watchpack/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/watchpack/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/watchpack/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.2.tgz", + "integrity": "sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg==" + }, + "node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/webpack-dev-server/node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/webpack-dev-server/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "node_modules/webpack-dev-server/node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-hot-middleware": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", + "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", + "dependencies": { + "ansi-html": "0.0.7", + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-stats-plugin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-0.3.2.tgz", + "integrity": "sha512-kxEtPQ6lBBik2qtJlsZkiaDMI6rGXe9w1kLH9ZCdt0wgCGVnbwwPlP60cMqG6tILNFYqXDxNt4+c4OIIuE+Fnw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz", + "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==", + "dependencies": { + "debug": "^3.0.0" + } + }, + "node_modules/webpack-virtual-modules/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/webpack-virtual-modules/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/webpack/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/webpack/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/webpack/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/with-open-file": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.6.tgz", + "integrity": "sha512-SQS05JekbtwQSgCYlBsZn/+m2gpn4zWsqpCYIrCHva0+ojXcnmUEPsBN6Ipoz3vmY/81k5PvYEWSxER2g4BTqA==", + "dependencies": { + "p-finally": "^1.0.0", + "p-try": "^2.1.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/with-open-file/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/with-open-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/x-is-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", + "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz", + "integrity": "sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xss": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", + "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xstate": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.19.1.tgz", + "integrity": "sha512-tnBh6ue9MiyoMkE2+w1IqfvJm4nBe3S4Ky/RLvlo9vka8FdO4WyyT3M7PA0pQoM/FZ9aJVWFOlsNw0Nc7E+4Bw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yaml-loader": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.6.0.tgz", + "integrity": "sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==", + "dependencies": { + "loader-utils": "^1.4.0", + "yaml": "^1.8.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoga-layout-prebuilt": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", + "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", + "dependencies": { + "@types/yoga-layout": "1.9.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yurnalist": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-2.1.0.tgz", + "integrity": "sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==", + "dependencies": { + "chalk": "^2.4.2", + "inquirer": "^7.0.0", + "is-ci": "^2.0.0", + "read": "^1.0.7", + "strip-ansi": "^5.2.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/yurnalist/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yurnalist/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/zwitch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.3.tgz", + "integrity": "sha512-aynRpmJDw7JIq6X4NDWJoiK1yVSiG57ArWSg4HLC1SFupX5/bo0Cf4jpX0ifwuzBfxpYBuNSyvMlWNNRuy3cVA==" + } + }, + "dependencies": { + "@ardatan/aggregate-error": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", + "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==", + "requires": { + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==" + }, + "@babel/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.0.tgz", + "integrity": "sha512-8YqpRig5NmIHlMLw09zMlPTvUVMILjqCOtVgu+TVNWEBvy9b5I3RRyhqnrV4hjgEK7n8P9OqvkWJAFmEL6Wwfw==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.1.tgz", + "integrity": "sha512-TMGhsXMXCP/O1WtQmZjpEYDhCYC9vFhayWZPJSZCGkPJgUqX0rF0wwtrYvnzVxIjcF80tkUertXVk5cwqi5cAQ==", + "requires": { + "@babel/types": "^7.14.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.1.tgz", + "integrity": "sha512-r8rsUahG4ywm0QpGcCrLaUSOuNAISR3IZCg4Fx05Ozq31aCUrQsTLH6KPxy0N5ULoQ4Sn9qjNdGNtbPWAC6hYg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "requires": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.0.tgz", + "integrity": "sha512-L40t9bxIuGOfpIGA3HNkJhU9qYrf4y5A5LUSw7rGMSn+pcG8dfJ0g6Zval6YJGd2nEjI7oP00fRdnhLKndx6bw==", + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + } + } + }, + "@babel/parser": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.1.tgz", + "integrity": "sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha512-VapibkWzFeoa6ubXy/NgV5U2U4MVnUlvnx6wo1XhlsaTrLYWE0UFpDQsVrmn22q5CzeloqJ8gEMHSKxuee6ZdA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz", + "integrity": "sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", + "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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==", + "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==", + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", + "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", + "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz", + "integrity": "sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.13.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz", + "integrity": "sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ==", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", + "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", + "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", + "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.13.12.tgz", + "integrity": "sha512-jcEI2UqIcpCqB5U5DRxIl0tQEProI2gcu+g8VTIqxLO5Iidojb4d77q+fwGseCvd8af/lJ9masp4QWzBXFE2xA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.13.12" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", + "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.12.17" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.15.tgz", + "integrity": "sha512-d+ezl76gx6Jal08XngJUkXM4lFXK/5Ikl9Mh4HKDxSfGJXmZ9xG64XT2oivBzfxb/eQ62VfvoMkaCZUKJMVrBA==", + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", + "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-typescript": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.1.tgz", + "integrity": "sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ==", + "requires": { + "@babel/compat-data": "^7.14.0", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.13.11", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.1", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.17", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.0", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.1", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.13.13.tgz", + "integrity": "sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-react-display-name": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.13.12", + "@babel/plugin-transform-react-jsx-development": "^7.12.17", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + } + }, + "@babel/preset-typescript": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz", + "integrity": "sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw==", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-transform-typescript": "^7.13.0" + } + }, + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/standalone": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.14.1.tgz", + "integrity": "sha512-HFkwJyIv91mP38447ERwnVgw9yhx2/evs+r0+1hdAXf1Q1fBypPwtY8YOqsPniqoYCEVbBIqYELt0tNrOAg/Iw==" + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.0.tgz", + "integrity": "sha512-dZ/a371EE5XNhTHomvtuLTUyx6UEoJmYX+DT5zBCQN3McHemsuIaKKYqsc/fs26BEkHs/lBZy0J571LP5z9kQA==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.14.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.1.tgz", + "integrity": "sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", + "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==", + "requires": { + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/batch-execute": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz", + "integrity": "sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==", + "requires": { + "@graphql-tools/utils": "^7.7.0", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/delegate": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz", + "integrity": "sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "@graphql-tools/batch-execute": "^7.1.2", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.7.1", + "dataloader": "2.0.0", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/graphql-file-loader": { + "version": "6.2.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz", + "integrity": "sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==", + "requires": { + "@graphql-tools/import": "^6.2.6", + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "@graphql-tools/import": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz", + "integrity": "sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw==", + "requires": { + "resolve-from": "5.0.0", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/json-file-loader": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz", + "integrity": "sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==", + "requires": { + "@graphql-tools/utils": "^7.0.0", + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "@graphql-tools/load": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz", + "integrity": "sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==", + "requires": { + "@graphql-tools/merge": "^6.2.12", + "@graphql-tools/utils": "^7.5.0", + "globby": "11.0.3", + "import-from": "3.0.0", + "is-glob": "4.0.1", + "p-limit": "3.1.0", + "tslib": "~2.2.0", + "unixify": "1.0.0", + "valid-url": "1.0.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "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" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.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.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "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" + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/merge": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.13.tgz", + "integrity": "sha512-Qjlki0fp+bBQPinhdv7rv24eurvThZ5oIFvGMpLxMZplbw/ovJ2c6llwXr5PCuWAk9HGZsyM9NxxDgtTRfq3dQ==", + "requires": { + "@graphql-tools/schema": "^7.0.0", + "@graphql-tools/utils": "^7.7.0", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/schema": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz", + "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==", + "requires": { + "@graphql-tools/utils": "^7.1.2", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/url-loader": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz", + "integrity": "sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==", + "requires": { + "@graphql-tools/delegate": "^7.0.1", + "@graphql-tools/utils": "^7.9.0", + "@graphql-tools/wrap": "^7.0.4", + "@microsoft/fetch-event-source": "2.0.1", + "@types/websocket": "1.0.2", + "abort-controller": "3.0.0", + "cross-fetch": "3.1.4", + "extract-files": "9.0.0", + "form-data": "4.0.0", + "graphql-ws": "^4.4.1", + "is-promise": "4.0.0", + "isomorphic-ws": "4.0.1", + "lodash": "4.17.21", + "meros": "1.1.4", + "subscriptions-transport-ws": "^0.9.18", + "sync-fetch": "0.3.0", + "tslib": "~2.2.0", + "valid-url": "1.0.9", + "ws": "7.4.5" + }, + "dependencies": { + "@types/node": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz", + "integrity": "sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA==", + "optional": true, + "peer": true + }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "meros": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", + "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", + "requires": {} + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/utils": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.9.1.tgz", + "integrity": "sha512-k4bQWsOnSJSW7suBnVUJf3Sc8uXuvIYLHXujbEoSrwOEHjC+707GvXbQ7rg+8l7v8NMgpyARyuKFlqz3cfoxBQ==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.2", + "tslib": "~2.2.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@graphql-tools/wrap": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz", + "integrity": "sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==", + "requires": { + "@graphql-tools/delegate": "^7.1.5", + "@graphql-tools/schema": "^7.1.5", + "@graphql-tools/utils": "^7.8.1", + "tslib": "~2.2.0", + "value-or-promise": "1.0.6" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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" + } + }, + "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" + } + } + } + }, + "@mdx-js/util": { + "version": "2.0.0-next.8", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-2.0.0-next.8.tgz", + "integrity": "sha512-T0BcXmNzEunFkuxrO8BFw44htvTPuAoKbLvTG41otyZBDV1Rs+JMddcUuaP5vXpTWtgD3grhcrPEwyx88RUumQ==" + }, + "@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" + }, + "@mikaelkristiansson/domready": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mikaelkristiansson/domready/-/domready-1.0.11.tgz", + "integrity": "sha512-nEBLOa0JgtqahmPrnJZ18epLiFBzxhdKgo4uhN3TaBFRmM30pEVrS9FAEV4tg92d8PTdU+dYQx2lnpPyFMgMcg==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@pieh/friendly-errors-webpack-plugin": { + "version": "1.7.0-chalk-2", + "resolved": "https://registry.npmjs.org/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz", + "integrity": "sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw==", + "requires": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0", + "strip-ansi": "^3" + } + }, + "@reach/router": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.3.4.tgz", + "integrity": "sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==", + "requires": { + "create-react-context": "0.3.0", + "invariant": "^2.2.3", + "prop-types": "^15.6.1", + "react-lifecycles-compat": "^3.0.4" + } + }, + "@sideway/address": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", + "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "requires": { + "@hapi/hoek": "^9.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + } + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, + "@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "requires": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, + "@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "requires": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@turist/time": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@turist/time/-/time-0.0.1.tgz", + "integrity": "sha512-M2BiThcbxMxSKX8W4z5u9jKZn6datnM3+FpEU+eYw0//l31E2xhqi7vTAuJ/Sf0P3yhp66SDJgPu3bRRpvrdQQ==" + }, + "@types/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg==" + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" + }, + "@types/configstore": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz", + "integrity": "sha1-zR6FU2M60xhcPy8jns/10mQ+krY=" + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + }, + "@types/debug": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.30.tgz", + "integrity": "sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==" + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" + }, + "@types/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==" + }, + "@types/glob": { + "version": "5.0.36", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.36.tgz", + "integrity": "sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", + "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-patch": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz", + "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==" + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/lodash": { + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==" + }, + "@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "requires": { + "@types/unist": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, + "@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.44.tgz", + "integrity": "sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA==" + }, + "@types/node-fetch": { + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz", + "integrity": "sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ==", + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "@types/reach__router": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.7.tgz", + "integrity": "sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg==", + "requires": { + "@types/react": "*" + } + }, + "@types/react": { + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.5.tgz", + "integrity": "sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/rimraf": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.4.tgz", + "integrity": "sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q==", + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "@types/scheduler": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" + }, + "@types/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=" + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" + }, + "@types/vfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz", + "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", + "requires": { + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" + } + }, + "@types/vfile-message": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-2.0.0.tgz", + "integrity": "sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==", + "requires": { + "vfile-message": "*" + } + }, + "@types/websocket": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", + "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" + }, + "@types/yoga-layout": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz", + "integrity": "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "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.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "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" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "requires": {} + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "anser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/anser/-/anser-2.0.1.tgz", + "integrity": "sha512-4g5Np4CVD3c5c/36Mj0jllEA5bQcuXF0dqakZcuHGeubBzw93EAhwRuQCzgFm4/ZwvyBMzFdtn9BcihOjnxIdQ==" + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "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==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "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" + } + }, + "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" + } + }, + "application-config-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.0.tgz", + "integrity": "sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "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-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "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-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-iterate": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.4.tgz", + "integrity": "sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==" + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "array.prototype.flatmap": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", + "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "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-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", + "integrity": "sha1-SppaidBl7F2OUlS9nulrp2xTK1o=", + "requires": { + "lru-cache": "^4.0.0" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "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-retry-ng": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-retry-ng/-/async-retry-ng-2.0.1.tgz", + "integrity": "sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw==" + }, + "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" + }, + "dependencies": { + "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==" + } + } + }, + "axe-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.0.tgz", + "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==" + }, + "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==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-lodash": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz", + "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0-beta.49", + "@babel/types": "^7.0.0-beta.49", + "glob": "^7.1.1", + "lodash": "^4.17.10", + "require-package-name": "^2.0.1" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + } + }, + "babel-plugin-remove-graphql-queries": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.16.1.tgz", + "integrity": "sha512-PkHJuRodMp4p617a/ZVhV8elBhRoFpOTpdu2DaApXJFIsDJWhjZ8d4BGbbFCT/yKJrhRDTdqg1r5AhWEaEUKkw==", + "requires": {} + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" + }, + "babel-preset-gatsby": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.12.3.tgz", + "integrity": "sha512-s/5Nkeeihu/oNUcLQakm+lwLCiNWcQamQliB+NqEVB/IgRVn1FQPxqmxNbEb0i2HrEBPKgOrXyt82IfzirCmgg==", + "requires": { + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-runtime": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@babel/runtime": "^7.12.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "gatsby-core-utils": "^1.10.1", + "gatsby-legacy-polyfills": "^0.7.1" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" + }, + "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" + } + }, + "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==" + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "better-opn": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz", + "integrity": "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==", + "requires": { + "open": "^7.0.3" + } + }, + "better-queue": { + "version": "3.8.10", + "resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.10.tgz", + "integrity": "sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA==", + "requires": { + "better-queue-memory": "^1.0.1", + "node-eta": "^0.9.0", + "uuid": "^3.0.0" + } + }, + "better-queue-memory": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/better-queue-memory/-/better-queue-memory-1.0.3.tgz", + "integrity": "sha512-QLFkfV+k/7e4L4FR7kqkXKtRi22kl68c/3AaBs0ArDSz0iiuAl0DjVlb6gM220jW7izLE5TRy7oXOd4Cxa0wog==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "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-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.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" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "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" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "requires": { + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=" + }, + "buffer-fill": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.0.tgz", + "integrity": "sha1-ypRw6NTRuXf9dUP04qtqfclRAag=" + }, + "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==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "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" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "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" + } + }, + "cache-manager": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-2.11.1.tgz", + "integrity": "sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==", + "requires": { + "async": "1.5.2", + "lodash.clonedeep": "4.5.0", + "lru-cache": "4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", + "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001223", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", + "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==" + }, + "ccount": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz", + "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==" + }, + "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" + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" + }, + "character-entities-html4": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz", + "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==" + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==" + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chokidar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "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.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "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-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "optional": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==" + }, + "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": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "^1.1.1" + } + }, + "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==" + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "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" + } + }, + "comma-separated-tokens": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.5.tgz", + "integrity": "sha512-Cg90/fcK93n0ecgYTAz1jaA3zvnQ0ExlmKY1rdbyHqAx6BHxwoJc+J7HDu0iuQ7ixEs1qaa+WyQ6oeuBpYP1iA==", + "requires": { + "trim": "0.0.1" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "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==" + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "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" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + } + } + }, + "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" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "confusing-browser-globals": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-polyfill": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz", + "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA=" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "contentful-management": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-7.18.2.tgz", + "integrity": "sha512-d8P6BsOvjhgXavWTksfPB/C7etHQ5EP+R59d1wQ3xr8qHv4bVYOYF+eRnrgRHJQ9Cae8lk7N5JmZLwG/gEQuag==", + "requires": { + "@types/json-patch": "0.0.30", + "axios": "^0.21.0", + "contentful-sdk-core": "^6.8.0", + "fast-copy": "^2.1.0", + "lodash.isplainobject": "^4.0.6", + "type-fest": "1.0.2" + } + }, + "contentful-sdk-core": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.8.0.tgz", + "integrity": "sha512-X45uNrcbQ2qY2p4G/Wx2EFUdnLnoDXjw29i+d0JVTUXqCG58p3q4GHuAPzTX+uafJL4h0ZY2xPOn4nvJ83eRBQ==", + "requires": { + "fast-copy": "^2.1.0", + "qs": "^6.9.4" + }, + "dependencies": { + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "convert-css-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.1.tgz", + "integrity": "sha1-8+zsZk8uhzoFcOav3T4a5PkkRLc=", + "requires": { + "console-polyfill": "^0.1.2", + "parse-unit": "^1.0.1" + } + }, + "convert-hrtime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz", + "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==" + }, + "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" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "requires": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "core-js": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.0.tgz", + "integrity": "sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw==" + }, + "core-js-compat": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.0.tgz", + "integrity": "sha512-vvaN8EOvYBEjrr+MN3vCKrMNc/xdYZI+Rt/uPMROi4T5Hj8Fz6TiPQm2mrB9aZoQVW1lCFHYmMrv99aUct9mkg==", + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-js-pure": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.12.0.tgz", + "integrity": "sha512-j2y084taJU4VMUpwuC93l19tsPbTAtOpg6/do3UOwX4eUJbsFdhEaGRQfTYthn5rDubsB88YITtei0Kw46vEQQ==" + }, + "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=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "cosmiconfig-toml-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz", + "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==", + "requires": { + "@iarna/toml": "^2.2.5" + } + }, + "cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "cpy": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.2.0.tgz", + "integrity": "sha512-CUYi9WYd7vdtEcq1NKqiS/yY2WdaDCNOBA/AoTQHVJzlpJMqctB8py9JrHgGIft6TgO5m8ZidI4l1ZD+RMr/wA==", + "requires": { + "arrify": "^1.0.1", + "cp-file": "^6.1.0", + "globby": "^9.2.0", + "nested-error-stacks": "^2.1.0" + }, + "dependencies": { + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + } + } + }, + "cpy-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-2.0.0.tgz", + "integrity": "sha512-LzrtY3lBWvFZcw4lXgkEbbDUd7y78juC3C5l7gj3UyezMEZF0Be9fjCVLN1HoZAzdMDeC3KHehWpHBJvgVAPkw==", + "requires": { + "cpy": "^7.0.0", + "meow": "^5.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-gatsby": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-0.5.1.tgz", + "integrity": "sha512-iQ3Z757x02uw9Z3ereR/+RNjiQPCKLEAh3GLqfcTNNVeGgRd07XdgIgGIZrbuNaKL/3EGdfejd7ElJ1UBLQSHQ==" + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "requires": { + "node-fetch": "2.6.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "requires": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "css-line-break": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", + "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", + "requires": { + "base64-arraybuffer": "^0.1.5" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-selector-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.3.0.tgz", + "integrity": "sha1-XxrUPi2O77/cME/NOaUhZklD4+s=" + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "csstype": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" + }, + "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" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "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" + } + }, + "damerau-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" + }, + "dataloader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", + "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" + }, + "date-fns": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.3.tgz", + "integrity": "sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw==" + }, + "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=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, + "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=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "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=" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "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" + } + }, + "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==" + } + } + }, + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detab": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.1.tgz", + "integrity": "sha512-/hhdqdQc5thGrqzjyO/pz76lDZ5GSuAs6goxOaKTsvPk7HNnzAyFN5lyHgqpX4/s1i66K8qMGj+VhA9504x7DQ==", + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-newline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-1.0.3.tgz", + "integrity": "sha1-6XsQA4d9cMCa8a81v63/Fo3kkg0=", + "requires": { + "get-stdin": "^4.0.1", + "minimist": "^1.1.0" + } + }, + "detect-node": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==" + }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "devcert": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/devcert/-/devcert-1.1.3.tgz", + "integrity": "sha512-7/nIzKdQ8y2K0imjIP7dyg2GJ2h38Ps6VOMXWZHIarNDV3p6mTXyEugKFnkmsZ2DD58JEG34ILyVb3qdOMmP9w==", + "requires": { + "@types/configstore": "^2.1.1", + "@types/debug": "^0.0.30", + "@types/get-port": "^3.2.0", + "@types/glob": "^5.0.34", + "@types/lodash": "^4.14.92", + "@types/mkdirp": "^0.5.2", + "@types/node": "^8.5.7", + "@types/rimraf": "^2.0.2", + "@types/tmp": "^0.0.33", + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^1.10.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "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" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + } + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "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" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "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" + } + }, + "engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "engine.io-client": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-4.1.4.tgz", + "integrity": "sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==", + "requires": { + "base64-arraybuffer": "0.1.4", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.1", + "has-cors": "1.1.0", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "requires": { + "base64-arraybuffer": "0.1.4" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + } + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + }, + "eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "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==", + "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" + }, + "dependencies": { + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + } + } + }, + "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-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.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "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" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "dependencies": { + "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" + } + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + } + }, + "eslint-plugin-flowtype": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", + "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-graphql": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz", + "integrity": "sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==", + "requires": { + "@babel/runtime": "^7.10.0", + "graphql-config": "^3.0.2", + "lodash.flatten": "^4.4.0", + "lodash.without": "^4.4.0" + } + }, + "eslint-plugin-import": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.1", + "read-pkg-up": "^2.0.0", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", + "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", + "requires": { + "@babel/runtime": "^7.11.2", + "aria-query": "^4.2.2", + "array-includes": "^3.1.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.0.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.6", + "emoji-regex": "^9.0.0", + "has": "^1.0.3", + "jsx-ast-utils": "^3.1.0", + "language-tags": "^1.0.5" + } + }, + "eslint-plugin-react": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz", + "integrity": "sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw==", + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.3", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.3", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.4" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "estree-util-is-identifier-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-1.1.0.tgz", + "integrity": "sha512-OVJZ3fGGt9By77Ix9NhaRbzfbDV/2rx9EP7YIDJTmsZSEc5kYn2vWcNccYyahJL2uAQZK2a5Or2i0wtIKTPoRQ==" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-source-polyfill": { + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.24.tgz", + "integrity": "sha512-aEtMhrH5ww3X6RgbsNcwu0whw8zjOoeRnwPqRKqKuxWS5KlAZhCY+rTm6wMlHOXbxmLGn8lW6Xox7rfpBExzGA==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "requires": { + "original": ">=0.0.5" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, + "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" + } + } + } + }, + "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" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-graphql": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.9.0.tgz", + "integrity": "sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w==", + "requires": { + "accepts": "^1.3.7", + "content-type": "^1.0.4", + "http-errors": "^1.7.3", + "raw-body": "^2.4.1" + }, + "dependencies": { + "http-errors": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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": { + "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" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + } + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + } + } + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" + } + } + }, + "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": "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" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "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" + } + }, + "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" + } + }, + "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==" + } + } + }, + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + }, + "fast-copy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.1.tgz", + "integrity": "sha512-Qod3DdRgFZ8GUIM6ygeoZYpQ0QLW9cf/FS9KhhjlYggcSZXWAemAw8BOCO5LuYCrR3Uj3qXDVTUzOUwG8C7beQ==" + }, + "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-glob": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", + "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "fd": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", + "integrity": "sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + } + }, + "file-type": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.10.0.tgz", + "integrity": "sha512-3CTQE/db3dnK2jsfd4XiXMKw9nD0QVEMRLdBzqYDRr5BvYMUccDpP8hMc1uPb1VZ9Iw/cAJjYPNwJ5UzxGqsRg==" + }, + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" + }, + "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" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.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": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.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==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.0.tgz", + "integrity": "sha512-0vRwd7RKQBTt+mgu87mtYeofLFZpTas2S9zY+jIeuLJMNvudIgF52nr19q40HOwH5RrhWIPuj9puybzSJiRrVg==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "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" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-exists-cached": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", + "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=" + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "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" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, "requires": { - "is-descriptor": "^1.0.0" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.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==", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "wrappy": "1" } }, - "is-descriptor": { + "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true }, - "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" + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.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" - } + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true } } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "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" - } - }, - "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-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-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" - } - }, - "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==" - } + "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" } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, "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" - } - } + "glob": "^7.1.3" } }, - "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" - } - } + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "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" - } - } + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } + "ansi-regex": "^2.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==", + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" } }, - "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==", + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "string-width": "^1.0.2 || 2" } }, - "is-descriptor": { + "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gatsby": { + "version": "2.32.13", + "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.32.13.tgz", + "integrity": "sha512-BYfiI/k+t8m/IzSkWZH8Cc0v7rJw6giSjG5sX25LWdfkQMqUvg/Gn6OC8BWwRPXnEwe7x0n5jbH+peO0p34ZHQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.12.5", + "@babel/runtime": "^7.12.5", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.6", + "@hapi/joi": "^15.1.1", + "@mikaelkristiansson/domready": "^1.0.10", + "@nodelib/fs.walk": "^1.2.4", + "@pieh/friendly-errors-webpack-plugin": "1.7.0-chalk-2", + "@pmmmwh/react-refresh-webpack-plugin": "^0.4.1", + "@reach/router": "^1.3.4", + "@types/http-proxy": "^1.17.4", + "@typescript-eslint/eslint-plugin": "^2.24.0", + "@typescript-eslint/parser": "^2.24.0", + "address": "1.1.2", + "anser": "^2.0.1", + "ansi-html": "^0.0.7", + "autoprefixer": "^9.8.4", + "axios": "^0.21.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.1.0", + "babel-loader": "^8.1.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "babel-plugin-lodash": "^3.3.4", + "babel-plugin-remove-graphql-queries": "^2.16.1", + "babel-preset-gatsby": "^0.12.3", + "better-opn": "^2.0.0", + "better-queue": "^3.8.10", + "bluebird": "^3.7.2", + "body-parser": "^1.19.0", + "browserslist": "^4.12.2", + "cache-manager": "^2.11.1", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "common-tags": "^1.8.0", + "compression": "^1.7.4", + "convert-hrtime": "^3.0.0", + "copyfiles": "^2.3.0", + "core-js": "^3.6.5", + "cors": "^2.8.5", + "css-loader": "^1.0.1", + "date-fns": "^2.14.0", + "debug": "^3.2.7", + "del": "^5.1.0", + "detect-port": "^1.3.0", + "devcert": "^1.1.3", + "dotenv": "^8.2.0", + "eslint": "^6.8.0", + "eslint-config-react-app": "^5.2.1", + "eslint-loader": "^2.2.1", + "eslint-plugin-flowtype": "^3.13.0", + "eslint-plugin-graphql": "^4.0.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.6", + "eslint-plugin-react-hooks": "^1.7.0", + "event-source-polyfill": "^1.0.15", + "execa": "^4.0.3", + "express": "^4.17.1", + "express-graphql": "^0.9.0", + "fastest-levenshtein": "^1.0.12", + "fastq": "^1.10.0", + "file-loader": "^1.1.11", + "find-cache-dir": "^3.3.1", + "fs-exists-cached": "1.0.0", + "fs-extra": "^8.1.0", + "gatsby-cli": "^2.19.3", + "gatsby-core-utils": "^1.10.1", + "gatsby-graphiql-explorer": "^0.11.0", + "gatsby-legacy-polyfills": "^0.7.1", + "gatsby-link": "^2.11.0", + "gatsby-plugin-page-creator": "^2.10.2", + "gatsby-plugin-typescript": "^2.12.1", + "gatsby-plugin-utils": "^0.9.0", + "gatsby-react-router-scroll": "^3.7.0", + "gatsby-telemetry": "^1.10.2", + "glob": "^7.1.6", + "got": "8.3.2", + "graphql": "^14.6.0", + "graphql-compose": "^6.3.8", + "graphql-playground-middleware-express": "^1.7.18", + "hasha": "^5.2.0", + "http-proxy": "^1.18.1", + "invariant": "^2.2.4", + "is-relative": "^1.0.0", + "is-relative-url": "^3.0.0", + "jest-worker": "^24.9.0", + "joi": "^17.2.1", + "json-loader": "^0.5.7", + "json-stringify-safe": "^5.0.1", + "latest-version": "5.1.0", + "lodash": "^4.17.20", + "md5-file": "^5.0.0", + "meant": "^1.0.1", + "memoizee": "^0.4.15", + "micromatch": "^4.0.2", + "mime": "^2.4.6", + "mini-css-extract-plugin": "^0.11.2", + "mitt": "^1.2.0", + "mkdirp": "^0.5.1", + "moment": "^2.27.0", + "name-all-modules-plugin": "^1.0.1", + "normalize-path": "^3.0.0", + "null-loader": "^3.0.0", + "opentracing": "^0.14.4", + "optimize-css-assets-webpack-plugin": "^5.0.3", + "p-defer": "^3.0.0", + "parseurl": "^1.3.3", + "physical-cpu-count": "^2.0.0", + "pnp-webpack-plugin": "^1.6.4", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^3.0.0", + "prompts": "^2.3.2", + "prop-types": "^15.7.2", + "query-string": "^6.13.1", + "raw-loader": "^0.5.1", + "react-dev-utils": "^4.2.3", + "react-error-overlay": "^3.0.0", + "react-hot-loader": "^4.12.21", + "react-refresh": "^0.8.3", + "redux": "^4.0.5", + "redux-thunk": "^2.3.0", + "semver": "^7.3.2", + "shallow-compare": "^1.2.2", + "signal-exit": "^3.0.3", + "slugify": "^1.4.4", + "socket.io": "3.1.1", + "socket.io-client": "3.1.1", + "source-map": "^0.7.3", + "source-map-support": "^0.5.19", + "st": "^2.0.0", + "stack-trace": "^0.0.10", + "string-similarity": "^1.2.2", + "strip-ansi": "^5.2.0", + "style-loader": "^0.23.1", + "terser-webpack-plugin": "^2.3.8", + "tmp": "^0.2.1", + "true-case-path": "^2.2.1", + "type-of": "^2.0.1", + "url-loader": "^1.1.2", + "util.promisify": "^1.0.1", + "uuid": "3.4.0", + "v8-compile-cache": "^2.2.0", + "webpack": "^4.44.1", + "webpack-dev-middleware": "^3.7.2", + "webpack-dev-server": "^3.11.2", + "webpack-hot-middleware": "^2.25.0", + "webpack-merge": "^4.2.2", + "webpack-stats-plugin": "^0.3.2", + "webpack-virtual-modules": "^0.2.2", + "xstate": "^4.11.0", + "yaml-loader": "^0.6.0" + }, + "dependencies": { + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", + "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" }, - "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==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "is-extglob": "^2.1.1" + "color-convert": "^2.0.1" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "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" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "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" + "fill-range": "^7.0.1" } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "requires": { - "bser": "^2.0.0" - } - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" - } - }, - "file-type": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.10.0.tgz", - "integrity": "sha512-3CTQE/db3dnK2jsfd4XiXMKw9nD0QVEMRLdBzqYDRr5BvYMUccDpP8hMc1uPb1VZ9Iw/cAJjYPNwJ5UzxGqsRg==" - }, - "filesize": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", - "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" - }, - "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" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - } - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" - }, - "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" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" } }, - "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==", + "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": { - "safe-buffer": "~5.1.0" + "color-name": "~1.1.4" } - } - } - }, - "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", - "requires": { - "debug": "^3.2.6" - }, - "dependencies": { + }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { "ms": "^2.1.1" } }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "optional": true, + "peer": true, + "requires": { + "original": "^1.0.0" + } + }, + "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" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "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==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true, + "peer": true + }, + "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==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "md5-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "optional": true, + "peer": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "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" + } + }, + "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" + } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "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" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-exists-cached": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", - "integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=" - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "gatsby-cli": { + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.19.3.tgz", + "integrity": "sha512-3xXe4y6DazWNYE2JFyErI7BGlgQjY4rRL5OTFWHvs6ULw7fu0xgoWXxKsoAp6S2xosKSS4zRVA6O7dDHAdidiw==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@hapi/joi": "^15.1.1", + "@types/common-tags": "^1.8.0", + "better-opn": "^2.0.0", + "chalk": "^4.1.0", + "clipboardy": "^2.3.0", + "common-tags": "^1.8.0", + "configstore": "^5.0.1", + "convert-hrtime": "^3.0.0", + "create-gatsby": "^0.5.1", + "envinfo": "^7.7.3", + "execa": "^3.4.0", + "fs-exists-cached": "^1.0.0", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "gatsby-recipes": "^0.9.3", + "gatsby-telemetry": "^1.10.2", + "hosted-git-info": "^3.0.6", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.20", + "meant": "^1.0.2", + "node-fetch": "^2.6.1", + "opentracing": "^0.14.4", + "pretty-error": "^2.1.1", + "progress": "^2.0.3", + "prompts": "^2.3.2", + "redux": "^4.0.5", + "resolve-cwd": "^3.0.0", + "semver": "^7.3.2", + "signal-exit": "^3.0.3", + "source-map": "0.7.3", + "stack-trace": "^0.0.10", + "strip-ansi": "^5.2.0", + "update-notifier": "^5.0.1", + "uuid": "3.4.0", + "yargs": "^15.4.1", + "yoga-layout-prebuilt": "^1.9.6", + "yurnalist": "^2.1.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, + "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" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "requires": { + "lru-cache": "^6.0.0" + } }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "ms": "^2.1.1" + "p-locate": "^4.1.0" } }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "minipass": "^2.2.1" + "mimic-fn": "^2.1.0" } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==" }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "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" + "p-try": "^2.0.0" } }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "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" + "p-limit": "^2.2.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true + "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==" }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { - "minimatch": "^3.0.4" + "lru-cache": "^6.0.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "shebang-regex": "^3.0.0" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { - "number-is-nan": "^1.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true + "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" + } }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": 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==", "requires": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "optional": true + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "optional": true, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "requires": { - "minipass": "^2.2.1" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { - "minimist": "0.0.8" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "gatsby-core-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.10.1.tgz", + "integrity": "sha512-4P3feGCJckg+DRWWl2beFk7N9c63zmCryEGPaU1OHCp+ZT2bO0ihCBuXywDWuuEp6SYP9PZ1fs0YJ/Rt6q6lag==", + "requires": { + "ci-info": "2.0.0", + "configstore": "^5.0.1", + "fs-extra": "^8.1.0", + "node-object-hash": "^2.0.0", + "proper-lockfile": "^4.1.1", + "tmp": "^0.2.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "gatsby-graphiql-explorer": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.11.0.tgz", + "integrity": "sha512-mmxQhQSDUkbtOhQUek9a9sSg6LpiQUytNNR2hec8iklau2D4MDA5CvHTk9GUGhjdUgtnHSe/MPyZVJGmXSnYAA==", + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "gatsby-legacy-polyfills": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.7.1.tgz", + "integrity": "sha512-yOQtX72GSJxloyUZEary3ZBihz/+a3uouLiaZKk6dHOeUHnRkQkXD+UT/zt7Xm+er/VD3KRsQQv+Re1krpbY7g==", + "requires": { + "core-js-compat": "^3.6.5" + } + }, + "gatsby-link": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.11.0.tgz", + "integrity": "sha512-AYXxndlSx5mnYv+/PBPdPBRvdv1LeSGE3WO8uYj2ReYDSbhiAlF3KKz30D62ErartXP0deySPtRKx4Dd3nCFYw==", + "requires": { + "@babel/runtime": "^7.12.5", + "@types/reach__router": "^1.3.7", + "prop-types": "^15.7.2" + } + }, + "gatsby-page-utils": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.9.1.tgz", + "integrity": "sha512-UHedSs64HXzoivCk7ZdE9139hi34CcZfexP+Vxe2Zt4aK+MeXowec8VdxKD3Pp08O/YEGKBv2TtSV9gSR/lt2g==", + "requires": { + "@babel/runtime": "^7.12.5", + "bluebird": "^3.7.2", + "chokidar": "^3.5.1", + "fs-exists-cached": "^1.0.0", + "gatsby-core-utils": "^1.10.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "micromatch": "^4.0.2" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "fill-range": "^7.0.1" } }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" } }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "to-regex-range": "^5.0.1" } }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "is-glob": "^4.0.1" } }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, + "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": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "binary-extensions": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { - "wrappy": "1" + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, + "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": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "is-number": "^7.0.0" + } + } + } + }, + "gatsby-plugin-catch-links": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-2.0.13.tgz", + "integrity": "sha512-3JOwByiAKaiHo9k+QMiqe15H0T7wGh0NyulSFz7am1HC5/XHzcrX2ysW/zo1PV5eZq3P+n+X5V0t28cp+n1FBg==", + "requires": { + "@babel/runtime": "^7.0.0", + "escape-string-regexp": "^1.0.5" + } + }, + "gatsby-plugin-glamor": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/gatsby-plugin-glamor/-/gatsby-plugin-glamor-2.0.9.tgz", + "integrity": "sha512-gWJJ8XMRFMQU5TGdMNG/Il9SXFqIm8Yhm5y59Iiqkqk5ujJj5O5HJeG92m6OW8d8jEj9SVNN5KCM8hiIggtsKQ==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-plugin-google-analytics": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.0.18.tgz", + "integrity": "sha512-fW2WKo7onfxr9sVUCKKtDRUVqleVHBp9CMz7xVWnNpiM3+u4KgYWj7VzmjKPr00zgmp/AOEu1L7SUjYMDys0QA==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-plugin-page-creator": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.10.2.tgz", + "integrity": "sha512-XkHSOgI4ZPA4XgadjGGFSp4eu51G8HXEVKG5gaef1/w0bcktw+aEwgEyb8VtL61NfIH2zXquyvrmwsil89nVCw==", + "requires": { + "@babel/traverse": "^7.12.5", + "@sindresorhus/slugify": "^1.1.0", + "chokidar": "^3.5.1", + "fs-exists-cached": "^1.0.0", + "gatsby-page-utils": "^0.9.1", + "gatsby-telemetry": "^1.10.2", + "globby": "^11.0.2", + "lodash": "^4.17.20" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "fill-range": "^7.0.1" } }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "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" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" } }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "requires": { - "glob": "^7.1.3" + "path-type": "^4.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-glob": "^4.0.1" } }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "requires": { - "safe-buffer": "~5.1.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "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": { - "ansi-regex": "^2.0.0" + "binary-extensions": "^2.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "requires": { - "string-width": "^1.0.2 || 2" + "picomatch": "^2.2.1" } }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "optional": true + "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" + } } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "gatsby-plugin-react-helmet": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.0.12.tgz", + "integrity": "sha512-x1DXKceTuEDePN9HcQymzQ+oBgmT3PKVQLSFbxrOECiC71cQRp03FJK0i/ClAkMJ3IJNLCGJDvi7dKydkc6dvw==", + "requires": { + "@babel/runtime": "^7.0.0" + } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "gatsby-plugin-twitter": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-2.0.13.tgz", + "integrity": "sha512-FaX3CFdZrZGxY1dRbcFanEQydGgG074cVqRe8DwQs4uqTTMnm6mW4U6kHrVsoNNeoDhMhA6u+1iqe1yRlgT3+g==", + "requires": { + "@babel/runtime": "^7.0.0" + } }, - "gatsby": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.7.1.tgz", - "integrity": "sha512-IDCiRW30pFCYM7o2plrTjO51gNEXTQ890LMJC7jml30W7ZswaTmacVbEfI2xKA8dWNik9+6S9zoyktuTFyE+zw==", + "gatsby-plugin-typescript": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.12.1.tgz", + "integrity": "sha512-p32qJVDi5Xw1Oo5vLMUXdRBxSDlMrfxTGb7etMAsVfyLRlRhMLb2YsuXJIvN1IfybQ6Z3EbhlH293cpxn5jozg==", "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/polyfill": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@gatsbyjs/relay-compiler": "2.0.0-printer-fix.2", - "@mikaelkristiansson/domready": "^1.0.9", - "@pieh/friendly-errors-webpack-plugin": "1.7.0-chalk-2", - "@reach/router": "^1.1.1", - "@stefanprobst/lokijs": "^1.5.6-b", - "address": "1.0.3", - "autoprefixer": "^9.4.3", - "babel-core": "7.0.0-bridge.0", - "babel-eslint": "^9.0.0", - "babel-loader": "^8.0.0", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-remove-graphql-queries": "^2.6.3", - "babel-preset-gatsby": "^0.1.11", - "better-opn": "0.1.4", - "better-queue": "^3.8.6", - "bluebird": "^3.5.0", - "browserslist": "3.2.8", - "cache-manager": "^2.9.0", - "cache-manager-fs-hash": "^0.0.6", - "chalk": "^2.3.2", - "chokidar": "2.1.2", - "common-tags": "^1.4.0", - "compression": "^1.7.3", - "convert-hrtime": "^2.0.0", - "copyfiles": "^1.2.0", - "core-js": "^2.5.0", + "@babel/core": "^7.12.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.5", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/preset-typescript": "^7.12.1", + "@babel/runtime": "^7.12.5", + "babel-plugin-remove-graphql-queries": "^2.16.1" + } + }, + "gatsby-plugin-typography": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-2.2.10.tgz", + "integrity": "sha512-sg9UkDrn3C3EN+yBSrUNzbGIlw1k1Qc6rYZWuXeqNEuQfdWJfqJMVzVhhriBDz2sC2bU6Wh/NnQ2vXVkRs4bKw==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "gatsby-plugin-utils": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-0.9.0.tgz", + "integrity": "sha512-InM8PNHtx1kF87qQOlf4pVeNA8lSIsvSjImvN6dvpUjeQqOMRN1avY0W9Trh6LKTF/keWWj975Gk8Vcr+PYyDA==", + "requires": { + "joi": "^17.2.1" + } + }, + "gatsby-react-router-scroll": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.7.0.tgz", + "integrity": "sha512-8sm04EQac7fccJZlllFEo349wAlNEuPVu35juuL0hgMDTyWlk4nPwPH/ACdpn2MgpEmrTSfp2yPxyzaRKVyzeQ==", + "requires": { + "@babel/runtime": "^7.12.5" + } + }, + "gatsby-recipes": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.9.3.tgz", + "integrity": "sha512-ToYeGCica4390QFWsW6+3DM6hhkpKifUEFoKDUdsQGw4rmD8aYndj5oASKIsvPAU0GUbxe8IDsDnP3V5iMtyEQ==", + "requires": { + "@babel/core": "^7.12.3", + "@babel/generator": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.5", + "@babel/standalone": "^7.12.6", + "@babel/template": "^7.10.4", + "@babel/types": "^7.12.6", + "@graphql-tools/schema": "^7.0.0", + "@graphql-tools/utils": "^7.0.2", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "^15.1.1", + "better-queue": "^3.8.10", + "chokidar": "^3.4.2", + "contentful-management": "^7.5.1", "cors": "^2.8.5", - "css-loader": "^1.0.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "detect-port": "^1.2.1", - "devcert-san": "^0.3.3", - "dotenv": "^4.0.0", - "eslint": "^5.6.0", - "eslint-config-react-app": "^3.0.0", - "eslint-loader": "^2.1.0", - "eslint-plugin-flowtype": "^2.46.1", - "eslint-plugin-graphql": "^3.0.3", - "eslint-plugin-import": "^2.9.0", - "eslint-plugin-jsx-a11y": "^6.0.3", - "eslint-plugin-react": "^7.8.2", - "event-source-polyfill": "^1.0.5", - "express": "^4.16.3", - "express-graphql": "^0.7.1", - "fast-levenshtein": "~2.0.4", - "file-loader": "^1.1.11", - "flat": "^4.0.0", - "fs-exists-cached": "1.0.0", - "fs-extra": "^5.0.0", - "gatsby-cli": "^2.6.2", - "gatsby-link": "^2.1.1", - "gatsby-plugin-page-creator": "^2.0.13", - "gatsby-react-router-scroll": "^2.0.7", - "gatsby-telemetry": "^1.0.10", - "glob": "^7.1.1", - "got": "8.0.0", - "graphql": "^14.1.1", - "graphql-compose": "^6.3.2", - "graphql-playground-middleware-express": "^1.7.10", - "hash-mod": "^0.0.5", - "invariant": "^2.2.4", - "is-relative": "^1.0.0", - "is-relative-url": "^2.0.0", - "is-wsl": "^1.1.0", - "jest-worker": "^23.2.0", - "joi": "^14.0.0", - "json-loader": "^0.5.7", - "json-stringify-safe": "^5.0.1", - "kebab-hash": "^0.1.2", - "lodash": "^4.17.10", - "md5": "^2.2.1", - "md5-file": "^3.1.1", - "mime": "^2.2.0", - "mini-css-extract-plugin": "^0.4.0", - "mitt": "^1.1.2", + "debug": "^4.3.1", + "detect-port": "^1.3.0", + "dotenv": "^8.2.0", + "execa": "^4.0.2", + "express": "^4.17.1", + "express-graphql": "^0.9.0", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "gatsby-telemetry": "^1.10.2", + "glob": "^7.1.6", + "graphql": "^14.6.0", + "graphql-compose": "^6.3.8", + "graphql-subscriptions": "^1.1.0", + "graphql-type-json": "^0.3.2", + "hicat": "^0.8.0", + "is-binary-path": "^2.1.0", + "is-url": "^1.2.4", + "jest-diff": "^25.5.0", + "lock": "^1.0.0", + "lodash": "^4.17.20", + "mitt": "^1.2.0", "mkdirp": "^0.5.1", - "moment": "^2.21.0", - "name-all-modules-plugin": "^1.0.1", - "normalize-path": "^2.1.1", - "null-loader": "^0.1.1", - "opentracing": "^0.14.3", - "optimize-css-assets-webpack-plugin": "^5.0.1", - "parseurl": "^1.3.2", - "physical-cpu-count": "^2.0.0", - "pnp-webpack-plugin": "^1.4.1", - "postcss-flexbugs-fixes": "^3.0.0", - "postcss-loader": "^2.1.3", + "node-fetch": "^2.5.0", + "pkg-dir": "^4.2.0", + "prettier": "^2.0.5", "prop-types": "^15.6.1", - "raw-loader": "^0.5.1", - "react-dev-utils": "^4.2.1", - "react-error-overlay": "^3.0.0", - "react-hot-loader": "^4.8.4", - "redux": "^4.0.0", - "redux-thunk": "^2.3.0", - "semver": "^5.6.0", - "shallow-compare": "^1.2.2", - "sift": "^5.1.0", - "signal-exit": "^3.0.2", - "slash": "^1.0.0", - "socket.io": "^2.0.3", - "stack-trace": "^0.0.10", - "string-similarity": "^1.2.0", - "style-loader": "^0.21.0", - "terser-webpack-plugin": "^1.2.2", - "true-case-path": "^1.0.3", - "type-of": "^2.0.1", - "url-loader": "^1.0.1", - "util.promisify": "^1.0.0", - "uuid": "^3.1.0", - "v8-compile-cache": "^1.1.0", - "webpack": "~4.28.4", - "webpack-dev-middleware": "^3.0.1", - "webpack-dev-server": "^3.1.14", - "webpack-hot-middleware": "^2.21.0", - "webpack-merge": "^4.1.0", - "webpack-stats-plugin": "^0.1.5", - "xstate": "^4.3.2", - "yaml-loader": "^0.5.0" + "remark-mdx": "^2.0.0-next.4", + "remark-mdxjs": "^2.0.0-next.4", + "remark-parse": "^6.0.3", + "remark-stringify": "^8.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "single-trailing-newline": "^1.0.0", + "strip-ansi": "^6.0.0", + "style-to-object": "^0.3.0", + "unified": "^8.4.2", + "unist-util-remove": "^2.0.0", + "unist-util-visit": "^2.0.2", + "uuid": "3.4.0", + "ws": "^7.3.0", + "xstate": "^4.9.1", + "yoga-layout-prebuilt": "^1.9.6" }, "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==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.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" - } - } + "fill-range": "^7.0.1" } }, - "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "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": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "to-regex-range": "^5.0.1" } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^3.0.0" - } - }, - "gatsby-cli": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.6.2.tgz", - "integrity": "sha512-ihTDocclnshQP0RY05esU/FqCBbEiVW/UGL/4nP58E+UPWo3IezWSheLka20fCdOld5SckcKupdPgEE8OeN7nA==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.0", - "chalk": "^2.4.2", - "ci-info": "^2.0.0", - "clipboardy": "^1.2.3", - "common-tags": "^1.4.0", - "configstore": "^4.0.0", - "convert-hrtime": "^2.0.0", - "core-js": "^2.5.0", - "envinfo": "^5.8.1", - "execa": "^0.8.0", - "fs-exists-cached": "^1.0.0", - "fs-extra": "^4.0.1", - "gatsby-telemetry": "^1.0.10", - "hosted-git-info": "^2.6.0", - "ink": "^2.0.5", - "ink-spinner": "^3.0.1", - "is-valid-path": "^0.1.1", - "lodash": "^4.17.10", - "meant": "^1.0.1", - "node-fetch": "2.3.0", - "object.entries": "^1.1.0", - "opentracing": "^0.14.3", - "pretty-error": "^2.1.1", - "prompts": "^2.1.0", - "react": "^16.8.4", - "resolve-cwd": "^2.0.0", - "semver": "^6.0.0", - "source-map": "0.5.7", - "stack-trace": "^0.0.10", - "strip-ansi": "^5.2.0", - "update-notifier": "^2.3.0", - "uuid": "3.3.2", - "yargs": "^12.0.5", - "yurnalist": "^1.0.5" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "semver": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", - "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" - } + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "gatsby-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.1.1.tgz", - "integrity": "sha512-5krDc87NAUDztbir5OOs3ec/2CxSSXnIIxhRKrG+yJXKK+dIcxxnPr+qjydEsyHMf7McBuxb1x5/r6rouzcBqQ==", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "@babel/runtime": "^7.0.0", - "@types/reach__router": "^1.0.0", - "prop-types": "^15.6.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { - "invert-kv": "^2.0.0" + "is-glob": "^4.0.1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "binary-extensions": "^2.0.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "pify": "^3.0.0" + "p-locate": "^4.1.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "yallist": "^4.0.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - } - } + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -6225,153 +32079,90 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "inline-style-parser": "0.1.1" } }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "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": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "is-number": "^7.0.0" } - } - } - }, - "gatsby-link": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.0.16.tgz", - "integrity": "sha512-2CWQeRtkidpi6uEMoq9KRkssqh66ybSWTeQ7W2as7uqldaFlZDOJxkpqf3C3n207iQxxcsY6vzvMgjtGzucv/Q==", - "requires": { - "@babel/runtime": "^7.0.0", - "@types/reach__router": "^1.0.0", - "prop-types": "^15.6.1" - }, - "dependencies": { - "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==", + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, - "gatsby-plugin-catch-links": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/gatsby-plugin-catch-links/-/gatsby-plugin-catch-links-2.0.13.tgz", - "integrity": "sha512-3JOwByiAKaiHo9k+QMiqe15H0T7wGh0NyulSFz7am1HC5/XHzcrX2ysW/zo1PV5eZq3P+n+X5V0t28cp+n1FBg==", - "requires": { - "@babel/runtime": "^7.0.0", - "escape-string-regexp": "^1.0.5" - } - }, - "gatsby-plugin-glamor": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/gatsby-plugin-glamor/-/gatsby-plugin-glamor-2.0.9.tgz", - "integrity": "sha512-gWJJ8XMRFMQU5TGdMNG/Il9SXFqIm8Yhm5y59Iiqkqk5ujJj5O5HJeG92m6OW8d8jEj9SVNN5KCM8hiIggtsKQ==", - "requires": { - "@babel/runtime": "^7.0.0" - } - }, - "gatsby-plugin-google-analytics": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.0.18.tgz", - "integrity": "sha512-fW2WKo7onfxr9sVUCKKtDRUVqleVHBp9CMz7xVWnNpiM3+u4KgYWj7VzmjKPr00zgmp/AOEu1L7SUjYMDys0QA==", - "requires": { - "@babel/runtime": "^7.0.0" - } - }, - "gatsby-plugin-page-creator": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.0.13.tgz", - "integrity": "sha512-wlIkpgFr0Oltlk8TTBRGaGOZZIzDY99iIIZ20mSl5HNMyU9IXe11IQDoF4JYXH2lMIEfp6OBGreCGCTOHHcc3g==", - "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.0", - "chokidar": "2.1.2", - "fs-exists-cached": "^1.0.0", - "glob": "^7.1.1", - "lodash": "^4.17.10", - "micromatch": "^3.1.10", - "slash": "^1.0.0" - } - }, - "gatsby-plugin-react-helmet": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.0.12.tgz", - "integrity": "sha512-x1DXKceTuEDePN9HcQymzQ+oBgmT3PKVQLSFbxrOECiC71cQRp03FJK0i/ClAkMJ3IJNLCGJDvi7dKydkc6dvw==", - "requires": { - "@babel/runtime": "^7.0.0" - } - }, - "gatsby-plugin-twitter": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/gatsby-plugin-twitter/-/gatsby-plugin-twitter-2.0.13.tgz", - "integrity": "sha512-FaX3CFdZrZGxY1dRbcFanEQydGgG074cVqRe8DwQs4uqTTMnm6mW4U6kHrVsoNNeoDhMhA6u+1iqe1yRlgT3+g==", - "requires": { - "@babel/runtime": "^7.0.0" - } - }, - "gatsby-plugin-typography": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/gatsby-plugin-typography/-/gatsby-plugin-typography-2.2.10.tgz", - "integrity": "sha512-sg9UkDrn3C3EN+yBSrUNzbGIlw1k1Qc6rYZWuXeqNEuQfdWJfqJMVzVhhriBDz2sC2bU6Wh/NnQ2vXVkRs4bKw==", - "requires": { - "@babel/runtime": "^7.0.0" - } - }, - "gatsby-react-router-scroll": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.0.7.tgz", - "integrity": "sha512-Yq8UBgurjt5XqezkBr67ZmMmsxFPdGG/7OERlju34PL05mAwOB1P2wdcZfjpVZM/k2xfVPcTRYk2zoUbtB/adg==", - "requires": { - "@babel/runtime": "^7.0.0", - "scroll-behavior": "^0.9.9", - "warning": "^3.0.0" - } - }, "gatsby-remark-prismjs": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-3.2.7.tgz", @@ -6380,16 +32171,6 @@ "@babel/runtime": "^7.0.0", "parse-numeric-range": "^0.0.2", "unist-util-visit": "^1.3.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", - "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - } } }, "gatsby-source-filesystem": { @@ -6448,109 +32229,203 @@ } }, "gatsby-telemetry": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.0.10.tgz", - "integrity": "sha512-9Iy+1DqPaFpzMWOQCMiMHrVrdyUlZor6tcymkKBNe5FfbpYUvA4qbo9Ow98bfAuEJ+VtT9Wl0zBfDqOalEJ56A==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.0", - "boxen": "^3.1.0", - "ci-info": "2.0.0", - "configstore": "^4.0.0", - "envinfo": "^5.8.1", - "fs-extra": "^7.0.1", - "is-docker": "1.1.0", - "node-fetch": "2.3.0", - "resolve-cwd": "^2.0.0", - "source-map": "^0.5.7", - "stack-trace": "^0.0.10", - "stack-utils": "1.0.2", - "uuid": "3.3.2" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.10.2.tgz", + "integrity": "sha512-LwMtRIdcNuI25D+yU7RO+UcmF+3uPz0Zrefa+/rkTmxZuz54bOGSYqmzJJt1L1gRz7Jdl+DmYRqVgmiW/dsr/g==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@turist/fetch": "^7.1.7", + "@turist/time": "^0.0.1", + "async-retry-ng": "^2.0.1", + "boxen": "^4.2.0", + "configstore": "^5.0.1", + "fs-extra": "^8.1.0", + "gatsby-core-utils": "^1.10.1", + "git-up": "^4.0.2", + "is-docker": "^2.1.1", + "lodash": "^4.17.20", + "node-fetch": "^2.6.1", + "uuid": "3.4.0" }, "dependencies": { - "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "@turist/fetch": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@turist/fetch/-/fetch-7.1.7.tgz", + "integrity": "sha512-XP20kvfyMNlWdPVQXyuzA40LoCHbbJptikt7W+TlZ5sS+NNjk70xjXCtHBLEudp7li3JldXEFSIUzpW1a0WEhA==", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "@types/node-fetch": "2" } }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - } - }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" } } }, "gatsby-transformer-remark": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.3.8.tgz", - "integrity": "sha512-i0pOcPHbh9cVbkFEu6VMBNIvYErhRLZYApUm+anjSDw0FFj4LN14v/36jpt3+XCZUfJqJCkMP8pth7eS7CEJCg==", - "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.0", - "gray-matter": "^4.0.0", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.16.1.tgz", + "integrity": "sha512-e002rDdXA5TwPRg57FzcBeZkY7T/xV+jAciV/96dn091NhLJXJz13PgZxyLKoD0AL4zdjuQQqhkiK3ksAuqCPQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "bluebird": "^3.7.2", + "gatsby-core-utils": "^1.10.1", + "gray-matter": "^4.0.2", "hast-util-raw": "^4.0.0", - "hast-util-to-html": "^4.0.0", - "lodash": "^4.17.10", - "mdast-util-to-hast": "^3.0.0", - "mdast-util-to-string": "^1.0.5", - "mdast-util-toc": "^2.0.1", - "remark": "^9.0.0", - "remark-parse": "^5.0.0", - "remark-retext": "^3.1.0", - "remark-stringify": "^5.0.0", - "retext-english": "^3.0.0", - "sanitize-html": "^1.18.2", + "hast-util-to-html": "^4.0.1", + "lodash": "^4.17.20", + "mdast-util-to-hast": "^3.0.4", + "mdast-util-to-string": "^1.1.0", + "mdast-util-toc": "^5.0", + "remark": "^10.0.1", + "remark-parse": "^6.0.3", + "remark-retext": "^3.1.3", + "remark-stringify": "6.0.4", + "retext-english": "^3.0.4", + "sanitize-html": "^1.27.5", "underscore.string": "^3.3.5", - "unified": "^6.1.5", - "unist-util-remove-position": "^1.1.2", + "unified": "^6.2.0", + "unist-util-remove-position": "^1.1.4", "unist-util-select": "^1.5.0", - "unist-util-visit": "^1.3.0" + "unist-util-visit": "^1.4.1" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", + "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "vfile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", + "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } } } }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, "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==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -6561,12 +32436,28 @@ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, + "git-up": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", + "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, "github-slugger": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz", - "integrity": "sha512-SsZUjg/P03KPzQBt7OxJPasGw6NRO5uOgiZ5RGXVud5iSIZ0eNZeNp5rTwCxtavrRUa/A77j8mePVc5lEvk0KQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", + "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", "requires": { "emoji-regex": ">=6.0.0 <=6.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", + "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=" + } } }, "glamor": { @@ -6582,9 +32473,9 @@ } }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6619,20 +32510,27 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" + "process": "^0.11.10" } }, "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "requires": { - "ini": "^1.3.4" + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + } } }, "global-modules": { @@ -6663,21 +32561,115 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "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" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.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.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "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" + } } } }, @@ -6691,23 +32683,22 @@ } }, "got": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-8.0.0.tgz", - "integrity": "sha512-lqVA9ORcSGfJPHfMXh1RW451aYMP1NyXivpGqGggnfDqNz3QVfMl7MkuEz+dr70gK2X8dhLiS5YzHhCV3/3yOQ==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", "requires": { + "@sindresorhus/is": "^0.7.0", "cacheable-request": "^2.1.1", "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", "get-stream": "^3.0.0", "into-stream": "^3.1.0", - "is-plain-obj": "^1.1.0", "is-retry-allowed": "^1.1.0", - "is-stream": "^1.1.0", "isurl": "^1.0.0-alpha5", "lowercase-keys": "^1.0.0", "mimic-response": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.2.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", "pify": "^3.0.0", "safe-buffer": "^5.1.1", "timed-out": "^4.0.1", @@ -6715,6 +32706,19 @@ "url-to-options": "^1.0.1" }, "dependencies": { + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -6731,80 +32735,129 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "graphql": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.3.1.tgz", - "integrity": "sha512-FZm7kAa3FqKdXy8YSSpAoTtyDFMIYSpCDOr+3EqlI1bxmtHu+Vv/I2vrSeT1sBOEnEniX3uo4wFhFdS/8XN6gA==", + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", "requires": { "iterall": "^1.2.2" } }, "graphql-compose": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-6.3.2.tgz", - "integrity": "sha512-2sk4G3F/j7U4OBnPkB/HrE8Cejh8nHIJFBOGcqQvsELHXUHtx4S11zR0OU+J3cMtpE/2visBUGUhEHL9WlUK9A==", + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/graphql-compose/-/graphql-compose-6.3.8.tgz", + "integrity": "sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA==", "requires": { "graphql-type-json": "^0.2.4", "object-path": "^0.11.4" + }, + "dependencies": { + "graphql-type-json": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", + "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==", + "requires": {} + } } }, "graphql-config": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-2.2.1.tgz", - "integrity": "sha512-U8+1IAhw9m6WkZRRcyj8ZarK96R6lQBQ0an4lp76Ps9FyhOXENC5YQOxOFGm5CxPrX2rD0g3Je4zG5xdNJjwzQ==", - "requires": { - "graphql-import": "^0.7.1", - "graphql-request": "^1.5.0", - "js-yaml": "^3.10.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.4" - } - }, - "graphql-import": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/graphql-import/-/graphql-import-0.7.1.tgz", - "integrity": "sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==", - "requires": { - "lodash": "^4.17.4", - "resolve-from": "^4.0.0" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-3.2.0.tgz", + "integrity": "sha512-ygEKDeQNZKpm4137560n2oY3bGM0D5zyRsQVaJntKkufWdgPg6sb9/4J1zJW2y/yC1ortAbhNho09qmeJeLa9g==", + "requires": { + "@endemolshinegroup/cosmiconfig-typescript-loader": "3.0.2", + "@graphql-tools/graphql-file-loader": "^6.0.0", + "@graphql-tools/json-file-loader": "^6.0.0", + "@graphql-tools/load": "^6.0.0", + "@graphql-tools/merge": "^6.0.0", + "@graphql-tools/url-loader": "^6.0.0", + "@graphql-tools/utils": "^6.0.0", + "cosmiconfig": "6.0.0", + "cosmiconfig-toml-loader": "1.0.0", + "minimatch": "3.0.4", + "string-env-interpolation": "1.0.1", + "tslib": "^2.0.0" }, "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "@graphql-tools/utils": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", + "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", + "requires": { + "@ardatan/aggregate-error": "0.0.6", + "camel-case": "4.1.1", + "tslib": "~2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + } + } + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" } } }, "graphql-playground-html": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz", - "integrity": "sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg==" + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-fbF/zZKuw2sdfKp8gjTORJ/I9xBsqeEYRseWxBzuR15NHMptRTT9414IyRCs3ognZzUDr5MDJgx97SlLZCtQyA==", + "requires": { + "xss": "^1.0.6" + } }, "graphql-playground-middleware-express": { - "version": "1.7.12", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.12.tgz", - "integrity": "sha512-17szgonnVSxWVrgblLRHHLjWnMUONfkULIwSunaMvYx8k5oG3yL86cyGCbHuDFUFkyr2swLhdfYl4mDfDXuvOA==", + "version": "1.7.22", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.22.tgz", + "integrity": "sha512-PJLiCxLmN6Dp+dHGyHU92m9y3hB/RAkcUBWcqYl2fiP+EbpDDgNfElrsVzW60MhJe+LTV1PFqiInH2d3KNvlCQ==", "requires": { - "graphql-playground-html": "1.6.12" + "graphql-playground-html": "^1.6.29" } }, - "graphql-request": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", - "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==", + "graphql-subscriptions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", "requires": { - "cross-fetch": "2.2.2" + "iterall": "^1.3.0" } }, - "graphql-type-json": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.2.4.tgz", - "integrity": "sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==" + "graphql-type-json": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", + "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", + "requires": {} + }, + "graphql-ws": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.5.0.tgz", + "integrity": "sha512-J3PuSfOKX2y9ryOtWxOcKlizkFWyhCvPAc3hhMKMVSTcPxtWiv9oNzvAZp1HKfuQng32YQduHeX+lRDy2+F6VQ==", + "requires": {} }, "gray-matter": { "version": "4.0.2", @@ -6818,9 +32871,9 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -6844,9 +32897,9 @@ } }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, "has": { "version": "1.0.3", @@ -6864,20 +32917,10 @@ "ansi-regex": "^2.0.0" } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" }, "has-cors": { "version": "1.1.0", @@ -6895,9 +32938,9 @@ "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-to-string-tag-x": { "version": "1.4.1", @@ -6915,13 +32958,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "has-values": { @@ -6933,24 +32969,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "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" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -6961,20 +32979,43 @@ } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, - "hash-mod": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/hash-mod/-/hash-mod-0.0.5.tgz", - "integrity": "sha1-2vHklzqRFmQ0Z9VO52kLQ++ALsw=" - }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -6984,6 +33025,27 @@ "minimalistic-assert": "^1.0.1" } }, + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "requires": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, "hast-to-hyperscript": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz", @@ -7084,6 +33146,20 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "hicat": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hicat/-/hicat-0.8.0.tgz", + "integrity": "sha512-om8L9O5XwqeSdwl5NtHgrzK3wcF4fT9T4gb/NktoH8EyoZipas/tvUZLV48xT7fQfMYr9qvb0WEutqdf0LWSqA==", + "requires": { + "highlight.js": "^10.4.1", + "minimist": "^1.2.5" + } + }, + "highlight.js": { + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", + "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -7094,15 +33170,10 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" - }, "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { "react-is": "^16.7.0" } @@ -7116,9 +33187,9 @@ } }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "hpack.js": { "version": "2.1.6", @@ -7141,15 +33212,10 @@ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" }, "html-void-elements": { "version": "1.0.3", @@ -7177,28 +33243,20 @@ "readable-stream": "^3.1.1" }, "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } } } }, @@ -7225,16 +33283,16 @@ } }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -7255,15 +33313,23 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, "hyphenate-style-name": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz", "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==" }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "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" + } }, "icss-replace-symbols": { "version": "1.1.0", @@ -7296,9 +33362,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "iferr": { "version": "0.1.5", @@ -7310,34 +33376,51 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, - "immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" - }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", "requires": { "import-from": "^2.1.0" + }, + "dependencies": { + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } } }, "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" } }, "import-lazy": { @@ -7352,6 +33435,67 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.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==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "imurmurhash": { @@ -7369,10 +33513,10 @@ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "inflight": { "version": "1.0.6", @@ -7389,147 +33533,175 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "ink": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ink/-/ink-2.2.0.tgz", - "integrity": "sha512-BQl7jpmLxPqFGjdQdgXQS0+mAyn1BHkEW1YXur3dahNNwLB6MWsfAZ1GWVdj+Mbpmj+u33KaFOosw3067t3d9g==", - "optional": true, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "inline-style-prefixer": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", + "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", "requires": { - "@types/react": "^16.8.6", - "arrify": "^1.0.1", - "auto-bind": "^2.0.0", - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "cli-truncate": "^1.1.0", - "is-ci": "^2.0.0", - "lodash.throttle": "^4.1.1", - "log-update": "^3.0.0", - "prop-types": "^15.6.2", - "react-reconciler": "^0.20.0", - "scheduler": "^0.13.2", - "signal-exit": "^3.0.2", - "slice-ansi": "^1.0.0", - "string-length": "^2.0.0", - "widest-line": "^2.0.0", - "wrap-ansi": "^5.0.0", - "yoga-layout-prebuilt": "^1.9.3" + "bowser": "^1.7.3", + "css-in-js-utils": "^2.0.0" + } + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "optional": true + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "optional": true + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, - "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=", - "optional": true + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } }, - "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "optional": true, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "string-width": { + "cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "optional": true, + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "restore-cursor": "^3.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==", - "optional": true, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "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-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { - "ansi-regex": "^4.1.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "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==", - "optional": true, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } - } - } - }, - "ink-spinner": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ink-spinner/-/ink-spinner-3.0.1.tgz", - "integrity": "sha512-AVR4Z/NXDQ7dT5ltWcCzFS9Dd4T8eaO//E2UO8VYNiJcZpPCSJ11o5A0UVPcMlZxGbGD6ikUFDR3ZgPUQk5haQ==", - "optional": true, - "requires": { - "cli-spinners": "^1.0.0", - "prop-types": "^15.5.10" - } - }, - "inline-style-prefixer": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", - "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", - "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" - } - }, - "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "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==" }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.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" } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, @@ -7542,6 +33714,16 @@ "ipaddr.js": "^1.9.0" } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "into-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", @@ -7549,13 +33731,6 @@ "requires": { "from2": "^2.1.1", "p-is-promise": "^1.1.0" - }, - "dependencies": { - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - } } }, "invariant": { @@ -7566,11 +33741,6 @@ "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", @@ -7582,14 +33752,14 @@ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" }, "is-accessor-descriptor": { "version": "0.1.6", @@ -7623,6 +33793,11 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -7631,6 +33806,14 @@ "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -7645,9 +33828,9 @@ } }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" }, "is-ci": { "version": "2.0.0", @@ -7670,6 +33853,14 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", + "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7679,9 +33870,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" }, "is-decimal": { "version": "1.0.2", @@ -7711,9 +33902,9 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, "is-docker": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-1.1.0.tgz", - "integrity": "sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" }, "is-extendable": { "version": "0.1.1", @@ -7726,12 +33917,9 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "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" - } + "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=" }, "is-glob": { "version": "4.0.1", @@ -7747,12 +33935,12 @@ "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==" }, "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "is-invalid-path": { @@ -7778,10 +33966,15 @@ } } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" }, "is-number": { "version": "3.0.0", @@ -7791,10 +33984,15 @@ "kind-of": "^3.0.2" } }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" + }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, "is-object": { "version": "1.0.1", @@ -7802,25 +34000,32 @@ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" }, "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "requires": { - "is-path-inside": "^1.0.0" + "is-path-inside": "^2.1.0" + }, + "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "requires": { + "path-is-inside": "^1.0.2" + } + } } }, "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "requires": { - "path-is-inside": "^1.0.1" - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, "is-plain-obj": { "version": "1.1.0", @@ -7833,31 +34038,20 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "requires": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" } }, "is-relative": { @@ -7869,11 +34063,11 @@ } }, "is-relative-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-2.0.0.tgz", - "integrity": "sha1-cpAtf+BLPUeS59sV+duEtyBMnO8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-relative-url/-/is-relative-url-3.0.0.tgz", + "integrity": "sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==", "requires": { - "is-absolute-url": "^2.0.0" + "is-absolute-url": "^3.0.0" } }, "is-resolvable": { @@ -7891,27 +34085,37 @@ "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" }, + "is-ssh": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", + "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", + "requires": { + "protocols": "^1.1.0" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.0" + "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", @@ -7920,6 +34124,11 @@ "unc-path-regex": "^0.1.2" } }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, "is-valid-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", @@ -7929,9 +34138,9 @@ } }, "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" }, "is-windows": { "version": "1.0.2", @@ -7939,28 +34148,25 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "requires": { - "punycode": "2.x.x" - } - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7980,6 +34186,12 @@ "whatwg-fetch": ">=0.10.0" } }, + "isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "requires": {} + }, "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", @@ -7990,33 +34202,112 @@ } }, "iterall": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", - "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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" + } + }, + "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" + } + } + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==" }, "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "requires": { - "merge-stream": "^1.0.1" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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" + } + } } }, "joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "requires": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.0.tgz", + "integrity": "sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.0", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" + }, + "@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -8051,6 +34342,11 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -8067,23 +34363,16 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "minimist": "^1.2.5" } }, "jsonfile": { @@ -8100,19 +34389,12 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsx-ast-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", - "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", - "requires": { - "array-includes": "^3.0.3" - } - }, - "kebab-hash": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/kebab-hash/-/kebab-hash-0.1.2.tgz", - "integrity": "sha512-BTZpq3xgISmQmAVzkISy4eUutsUA7s4IEFlCwOBJjvSFOwyR7I+fza+tBc/rzYWK/NrmFHjfU1IhO3lu29Ib/w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", + "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", "requires": { - "lodash.kebabcase": "^4.1.1" + "array-includes": "^3.1.2", + "object.assign": "^4.1.2" } }, "keyv": { @@ -8141,6 +34423,19 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, + "language-subtag-registry": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", + "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==" + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, "last-call-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", @@ -8151,26 +34446,13 @@ } }, "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "requires": { - "package-json": "^4.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "requires": { - "invert-kv": "^1.0.0" + "package-json": "^6.3.0" } }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -8180,6 +34462,11 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -8191,6 +34478,14 @@ "strip-bom": "^3.0.0" }, "dependencies": { + "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" + } + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -8199,12 +34494,12 @@ } }, "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", "requires": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "find-cache-dir": { @@ -8250,12 +34545,12 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -8266,11 +34561,6 @@ "requires": { "minimist": "^1.2.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -8280,37 +34570,44 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lockfile": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", - "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", - "requires": { - "signal-exit": "^3.0.2" + "path-exists": "^3.0.0" } }, + "lock": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lock/-/lock-1.1.0.tgz", + "integrity": "sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU=" + }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=" }, "lodash.every": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -8321,6 +34618,11 @@ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", @@ -8331,16 +34633,6 @@ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=" - }, "lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", @@ -8356,98 +34648,25 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", - "optional": true - }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "log-update": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-3.2.0.tgz", - "integrity": "sha512-KJ6zAPIHWo7Xg1jYror6IUDFJBq1bQ4Bi4wAEp2y/0ScjBBVi/g0thr0sUVhuvuXauWzczt7T2QHghPDNnKBuw==", - "optional": true, - "requires": { - "ansi-escapes": "^3.2.0", - "cli-cursor": "^2.1.0", - "wrap-ansi": "^5.0.0" - }, - "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==", - "optional": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "optional": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "optional": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "optional": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "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==", - "optional": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } + "lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" }, "longest-streak": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", - "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" }, "loose-envify": { "version": "1.3.1", @@ -8466,6 +34685,21 @@ "signal-exit": "^3.0.0" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", @@ -8480,10 +34714,13 @@ "yallist": "^2.1.2" } }, - "ltcdr": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltcdr/-/ltcdr-2.2.1.tgz", - "integrity": "sha1-Wrh60dTB2rjowIu/A37gwZAih88=" + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "requires": { + "es5-ext": "~0.10.2" + } }, "make-dir": { "version": "2.1.0", @@ -8498,21 +34735,13 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" } } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "map-cache": { "version": "0.2.2", @@ -8533,23 +34762,16 @@ } }, "markdown-escapes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, "markdown-table": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", - "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==" - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "repeat-string": "^1.0.0" } }, "md5-file": { @@ -8568,21 +34790,40 @@ "hash-base": "^3.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "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==" - } } }, "mdast-util-compact": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz", - "integrity": "sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", "requires": { - "unist-util-visit": "^1.1.0" + "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } } }, "mdast-util-definitions": { @@ -8593,6 +34834,97 @@ "unist-util-visit": "^1.0.0" } }, + "mdast-util-mdx": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-0.1.1.tgz", + "integrity": "sha512-9nncdnHNYSb4HNxY3AwE6gU632jhbXsDGXe9PkkJoEawYWJ8tTwmEOHGlGa2TCRidtkd6FF5I8ogDU9pTDlQyA==", + "requires": { + "mdast-util-mdx-expression": "~0.1.0", + "mdast-util-mdx-jsx": "~0.1.0", + "mdast-util-mdxjs-esm": "~0.1.0", + "mdast-util-to-markdown": "^0.6.1" + } + }, + "mdast-util-mdx-expression": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-0.1.1.tgz", + "integrity": "sha512-SoO8y1B9NjMOYlNdwXMchuTVvqSTlUmXm1P5QvZNPv7OH7aa8qJV+3aA+vl1DHK9Vk1uZAlgwokjvDQhS6bINA==", + "requires": { + "strip-indent": "^3.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "mdast-util-mdx-jsx": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-0.1.4.tgz", + "integrity": "sha512-67KOAvCmypBSpr+AJEAVQg1Obig5Wnguo4ETTxASe5WVP4TLt57bZjDX/9EW5sWYQsO4gPqLxkUOlypVn5rkhg==", + "requires": { + "mdast-util-to-markdown": "^0.6.0", + "parse-entities": "^2.0.0", + "stringify-entities": "^3.1.0", + "unist-util-remove-position": "^3.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-remove-position": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", + "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } + } + }, + "mdast-util-mdxjs-esm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-0.1.1.tgz", + "integrity": "sha512-kBiYeashz+nuhfv+712nc4THQhzXIH2gBFUDbuLxuDCqU/fZeg+9FAcdRBx9E13dkpk1p2Xwufzs3wsGJ+mISQ==" + }, "mdast-util-to-hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz", @@ -8611,10 +34943,30 @@ "xtend": "^4.0.1" } }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + } + } + }, "mdast-util-to-nlcst": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.2.tgz", - "integrity": "sha512-TmJlri8dHt7duRU6jfWBMqf5gW+VZ6o/8GHaWzwdxslseB2lL8bSOiox6c8VwYX5v2E4CzUWm/1GkAYqgbNw9A==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", + "integrity": "sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==", "requires": { "nlcst-to-string": "^2.0.0", "repeat-string": "^1.5.2", @@ -8623,24 +34975,59 @@ } }, "mdast-util-to-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz", - "integrity": "sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", + "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" }, "mdast-util-toc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-2.1.0.tgz", - "integrity": "sha512-ove/QQWSrYOrf9G3xn2MTAjy7PKCtCmm261wpQwecoPAsUtkihkMVczxFqil7VihxgSz4ID9c8bBTsyXR30gQg==", - "requires": { - "github-slugger": "^1.1.1", - "mdast-util-to-string": "^1.0.2", - "unist-util-visit": "^1.1.0" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", + "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", + "requires": { + "@types/mdast": "^3.0.3", + "@types/unist": "^2.0.3", + "extend": "^3.0.2", + "github-slugger": "^1.2.1", + "mdast-util-to-string": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, "mdurl": { "version": "1.0.1", @@ -8648,21 +35035,28 @@ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" }, "meant": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.1.tgz", - "integrity": "sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.3.tgz", + "integrity": "sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==" }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "requires": { - "mimic-fn": "^1.0.0" + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" } }, "memory-fs": { @@ -8690,14 +35084,6 @@ "yargs-parser": "^10.0.0" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8744,14 +35130,6 @@ "find-up": "^2.0.0", "read-pkg": "^3.0.0" } - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "requires": { - "camelcase": "^4.1.0" - } } } }, @@ -8760,24 +35138,112 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "micromark-extension-mdx": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx/-/micromark-extension-mdx-0.2.1.tgz", + "integrity": "sha512-J+nZegf1ExPz1Ft6shxu8M9WfRom1gwRIx6gpJK1SEEqKzY5LjOR1d/WHRtjwV4KoMXrL53+PoN7T1Rw1euJew==", + "requires": { + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "~0.3.0", + "micromark-extension-mdx-jsx": "~0.3.0", + "micromark-extension-mdx-md": "~0.1.0" + } + }, + "micromark-extension-mdx-expression": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-0.3.2.tgz", + "integrity": "sha512-Sh8YHLSAlbm/7TZkVKEC4wDcJE8XhVpZ9hUXBue1TcAicrrzs/oXu7PHH3NcyMemjGyMkiVS34Y0AHC5KG3y4A==", + "requires": { + "micromark": "~2.11.0", + "vfile-message": "^2.0.0" + } + }, + "micromark-extension-mdx-jsx": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-0.3.3.tgz", + "integrity": "sha512-kG3VwaJlzAPdtIVDznfDfBfNGMTIzsHqKpTmMlew/iPnUCDRNkX+48ElpaOzXAtK5axtpFKE3Hu3VBriZDnRTQ==", + "requires": { + "estree-util-is-identifier-name": "^1.0.0", + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "^0.3.2", + "vfile-message": "^2.0.0" + } + }, + "micromark-extension-mdx-md": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-0.1.1.tgz", + "integrity": "sha512-emlFQEyfx/2aPhwyEqeNDfKE6jPH1cvLTb5ANRo4qZBjaUObnzjLRdzK8RJ4Xc8+/dOmKN8TTRxFnOYF5/EAwQ==" + }, + "micromark-extension-mdxjs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-0.3.0.tgz", + "integrity": "sha512-NQuiYA0lw+eFDtSG4+c7ao3RG9dM4P0Kx/sn8OLyPhxtIc6k+9n14k5VfLxRKfAxYRTo8c5PLZPaRNmslGWxJw==", + "requires": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "~0.3.0", + "micromark-extension-mdx-jsx": "~0.3.0", + "micromark-extension-mdx-md": "~0.1.0", + "micromark-extension-mdxjs-esm": "~0.3.0" + }, + "dependencies": { + "acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==" + } + } + }, + "micromark-extension-mdxjs-esm": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-0.3.1.tgz", + "integrity": "sha512-tuLgcELrgY1a5tPxjk+MrI3BdYtwW67UaHZdzKiDYD8loNbxwIscfdagI6A2BKuAkrfeyHF6FW3B8KuDK3ZMXw==", "requires": { - "readable-stream": "^2.0.1" + "micromark": "~2.11.0", + "micromark-extension-mdx-expression": "^0.3.0", + "vfile-message": "^2.0.0" } }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -8816,9 +35282,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -8829,24 +35295,31 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } } }, "mime": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.1.tgz", - "integrity": "sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "requires": { - "mime-db": "1.40.0" + "mime-db": "1.47.0" } }, "mimic-fn": { @@ -8867,16 +35340,42 @@ "dom-walk": "^0.1.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==" + }, "mini-css-extract-plugin": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz", - "integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", + "integrity": "sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==", "requires": { "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" }, "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -8886,6 +35385,19 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" } } }, @@ -8908,9 +35420,9 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minimist-options": { "version": "3.0.2", @@ -8921,6 +35433,45 @@ "is-plain-obj": "^1.1.0" } }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -8939,14 +35490,14 @@ } }, "mitt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.3.tgz", - "integrity": "sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "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" @@ -8963,11 +35514,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "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": "0.0.8" + "minimist": "^1.2.5" } }, "modularscale": { @@ -8979,9 +35530,9 @@ } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "move-concurrently": { "version": "1.0.1", @@ -8994,6 +35545,16 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "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" + } + } } }, "ms": { @@ -9049,16 +35610,6 @@ "to-regex": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -9077,12 +35628,20 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, + "native-url": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", + "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", + "requires": { + "querystring": "^0.2.0" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9094,31 +35653,44 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "nested-error-stacks": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nlcst-to-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.2.tgz", - "integrity": "sha512-DV7wVvMcAsmZ5qEwvX1JUNF4lKkAAKbChwNlIH7NLsPR7LWWoeIt53YlZ5CQH5KDXEXQ9Xa3mw0PbPewymrtew==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz", + "integrity": "sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==" }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { - "lodash.toarray": "^4.4.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } } }, "node-eta": { @@ -9136,19 +35708,14 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -9160,7 +35727,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -9172,13 +35739,18 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } }, "punycode": { "version": "1.4.1", @@ -9187,13 +35759,15 @@ } } }, + "node-object-hash": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.1.tgz", + "integrity": "sha512-ab7pm34jqISawXpJ+fHjj2E9CmzDtm2fTTdurgzbWXIrdTEk2q2cSZRzoeGrwa0cvq6Sqezq6S9bhOBYPHRzuQ==" + }, "node-releases": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.21.tgz", - "integrity": "sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q==", - "requires": { - "semver": "^5.3.0" - } + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" }, "noms": { "version": "0.0.0", @@ -9265,55 +35839,71 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" } } }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" } }, "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "requires": { "boolbase": "~1.0.0" } }, "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=" - }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } }, "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=" - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -9339,15 +35929,20 @@ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" + }, "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-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", + "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==" }, "object-visit": { "version": "1.0.1", @@ -9355,44 +35950,49 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", - "function-bind": "^1.1.1", - "has": "^1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" } }, "object.pick": { @@ -9401,23 +36001,16 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } } }, "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -9455,10 +36048,29 @@ "mimic-fn": "^1.0.0" } }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, "opentracing": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.3.tgz", - "integrity": "sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo=" + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.5.tgz", + "integrity": "sha512-XLKtEfHxqrWyF1fzxznsv78w3csW41ucHnjiKnfzZLD5FN8UBDZZL1i4q0FR29zjxXhm+2Hop+5Vr/b8tKIvEg==" }, "opn": { "version": "5.5.0", @@ -9469,25 +36081,25 @@ } }, "optimize-css-assets-webpack-plugin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", - "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", "requires": { - "cssnano": "^4.1.0", + "cssnano": "^4.1.10", "last-call-webpack-plugin": "^3.0.0" } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "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.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, "original": { @@ -9503,16 +36115,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -9524,9 +36126,9 @@ "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" }, "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", + "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==" }, "p-finally": { "version": "1.0.0", @@ -9534,9 +36136,9 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { "version": "1.3.0", @@ -9555,9 +36157,20 @@ } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "requires": { + "retry": "^0.12.0" + } }, "p-timeout": { "version": "1.2.1", @@ -9573,47 +36186,127 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" }, "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "create-error-class": "^3.0.0", + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" } } } }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -9624,43 +36317,35 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" } }, "parse-english": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.1.1.tgz", - "integrity": "sha512-g7hegR9AFIlGXl5645mG8nQeeWW7SrK7lgmgIWR0KKWvGyZO5mxa4GGoNxRLm6VW2LGpLnn6g4O9yyLJQ4IzQw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.2.0.tgz", + "integrity": "sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==", "requires": { "nlcst-to-string": "^2.0.0", "parse-latin": "^4.0.0", - "unist-util-modify-children": "^1.0.0", + "unist-util-modify-children": "^2.0.0", "unist-util-visit-children": "^1.0.0" } }, "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "requires": { "character-entities": "^1.0.0", "character-entities-legacy": "^1.0.0", @@ -9671,20 +36356,23 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "requires": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, "parse-latin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.1.1.tgz", - "integrity": "sha512-9fPVvDdw6G8LxL3o/PL6IzSGNGpF+3HEjCzFe0dN83sZPstftyr+McP9dNi3+EnR7ICYOHbHKCZ0l7JD90K5xQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.3.0.tgz", + "integrity": "sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==", "requires": { "nlcst-to-string": "^2.0.0", - "unist-util-modify-children": "^1.0.0", + "unist-util-modify-children": "^2.0.0", "unist-util-visit-children": "^1.0.0" } }, @@ -9698,46 +36386,128 @@ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, + "parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + }, + "dependencies": { + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=" + }, "parse-unit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" }, + "parse-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.2.tgz", + "integrity": "sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==", + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + } + } + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" }, "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" }, "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, + "password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "requires": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } + } + }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" }, "path-dirname": { "version": "1.0.2", @@ -9760,9 +36530,9 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.6", @@ -9775,24 +36545,14 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -9806,6 +36566,11 @@ "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=" }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -9825,114 +36590,69 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { - "find-up": "^3.0.0" + "find-up": "^2.1.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "p-try": "^2.0.0" + "lodash": "^4.17.14" } }, - "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==", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { - "p-limit": "^2.0.0" + "ms": "^2.1.1" } }, - "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==" + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, - "pnp-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", - "requires": { - "ts-pnp": "^1.1.2" - } - }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - } - }, "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.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, "dependencies": { - "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" - } - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9949,14 +36669,20 @@ } }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "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==" + } } }, "postcss-colormin": { @@ -9969,18 +36695,6 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } } }, "postcss-convert-values": { @@ -10025,48 +36739,40 @@ } }, "postcss-flexbugs-fixes": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-3.3.1.tgz", - "integrity": "sha512-9y9kDDf2F9EjKX6x9ueNa5GARvsUbXw4ezH8vXItXHwKzljbu8awP7t5dCaabKYm18Vs1lo5bKQcnc0HkISt+w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "postcss": "^7.0.26" } }, "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "requires": { - "cosmiconfig": "^4.0.0", + "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" }, "dependencies": { "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { + "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "parse-json": { @@ -10077,34 +36783,34 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" } } }, "postcss-loader": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", - "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", "requires": { "loader-utils": "^1.1.0", - "postcss": "^6.0.0", + "postcss": "^7.0.0", "postcss-load-config": "^2.0.0", - "schema-utils": "^0.4.0" + "schema-utils": "^1.0.0" }, "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -10132,22 +36838,12 @@ "vendors": "^1.0.0" }, "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -10185,18 +36881,6 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } } }, "postcss-minify-selectors": { @@ -10211,11 +36895,11 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -10393,18 +37077,6 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } } }, "postcss-normalize-url": { @@ -10418,6 +37090,11 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, "normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", @@ -10453,18 +37130,6 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - } } }, "postcss-reduce-transforms": { @@ -10479,28 +37144,26 @@ } }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.5.tgz", + "integrity": "sha512-aFYPoYmXbZ1V6HZaSvat08M97A8HqO6Pjz+PiNpw/DhuRrC72XWAdp3hL6wusDCN31sSmcZyMGa2hZEuX+Xfhg==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "dependencies": { "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" } } }, "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "requires": { - "is-svg": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" @@ -10531,42 +37194,76 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, + "prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==" + }, "pretty-bytes": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + } + } } }, "prismjs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", - "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", + "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", "requires": { "clipboard": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "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==" }, "progress": { "version": "2.0.3", @@ -10587,12 +37284,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "prompts": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz", - "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "requires": { - "kleur": "^3.0.2", - "sisteransi": "^1.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" } }, "prop-types": { @@ -10615,6 +37312,16 @@ } } }, + "proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "requires": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, "property-information": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-4.2.0.tgz", @@ -10623,13 +37330,18 @@ "xtend": "^4.0.1" } }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" + }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -10655,10 +37367,10 @@ "safe-buffer": "^5.1.2" }, "dependencies": { - "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==" + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -10697,6 +37409,14 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -10708,13 +37428,14 @@ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", "requires": { "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" } }, "querystring": { @@ -10732,6 +37453,11 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -10768,21 +37494,6 @@ "http-errors": "1.7.2", "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==" - }, - "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" - } - } } }, "raw-loader": { @@ -10801,10 +37512,10 @@ "strip-json-comments": "~2.0.1" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" } } }, @@ -10817,28 +37528,6 @@ "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.13.6" - }, - "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - } - } - } } }, "react-dev-utils": { @@ -11009,28 +37698,6 @@ "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.13.6" - }, - "dependencies": { - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - } - } - } } }, "react-error-overlay": { @@ -11050,18 +37717,17 @@ } }, "react-hot-loader": { - "version": "4.8.8", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.8.8.tgz", - "integrity": "sha512-58bgeS7So8V93MhhnKogbraor8xdrTncil+b6IoIXkTIr3blJNAE7bU4tn/iJvy2J7rjxQmKFRaxKrWdKUZpqg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz", + "integrity": "sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA==", "requires": { "fast-levenshtein": "^2.0.6", "global": "^4.3.0", "hoist-non-react-statics": "^3.3.0", "loader-utils": "^1.1.0", - "lodash": "^4.17.11", "prop-types": "^15.6.1", "react-lifecycles-compat": "^3.0.4", - "shallowequal": "^1.0.2", + "shallowequal": "^1.1.0", "source-map": "^0.7.3" }, "dependencies": { @@ -11073,26 +37739,19 @@ } }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, - "react-reconciler": { - "version": "0.20.4", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.20.4.tgz", - "integrity": "sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA==", - "optional": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.6" - } + "react-refresh": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", + "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" }, "react-side-effect": { "version": "1.1.5", @@ -11140,6 +37799,21 @@ "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } } }, "read-pkg-up": { @@ -11152,16 +37826,16 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "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": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -11203,22 +37877,11 @@ } }, "redux": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", - "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - }, - "dependencies": { - "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==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - } + "@babel/runtime": "^7.9.2" } }, "redux-thunk": { @@ -11232,24 +37895,24 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "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==", "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -11280,55 +37943,58 @@ } } }, - "regexp-tree": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", - "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==" + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.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.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "^1.2.8" } }, "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "requires": { - "rc": "^1.0.1" + "rc": "^1.2.8" } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "requires": { "jsesc": "~0.5.0" }, @@ -11340,51 +38006,196 @@ } } }, - "relay-runtime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-2.0.0.tgz", - "integrity": "sha512-o/LPFHTI6+3FLJXM3Ec4N6hzkKYILVHYRJThNX0UQlMnqjTVPR6NO4qFE2QzzEiUS+lys+qfnvBzSmNbSh1zWQ==", + "remark": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", + "integrity": "sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==", "requires": { - "@babel/runtime": "^7.0.0", - "fbjs": "^1.0.0" + "remark-parse": "^6.0.0", + "remark-stringify": "^6.0.0", + "unified": "^7.0.0" }, "dependencies": { - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + }, + "mdast-util-compact": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", + "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "remark-stringify": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "unist-util-stringify-position": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + }, + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" } }, - "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } } } }, - "remark": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", - "integrity": "sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A==", + "remark-mdx": { + "version": "2.0.0-next.9", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.0.0-next.9.tgz", + "integrity": "sha512-I5dCKP5VE18SMd5ycIeeEk8Hl6oaldUY6PIvjrfm65l7d0QRnLqknb62O2g3QEmOxCswcHTtwITtz6rfUIVs+A==", + "requires": { + "mdast-util-mdx": "^0.1.1", + "micromark-extension-mdx": "^0.2.0", + "micromark-extension-mdxjs": "^0.3.0" + } + }, + "remark-mdxjs": { + "version": "2.0.0-next.8", + "resolved": "https://registry.npmjs.org/remark-mdxjs/-/remark-mdxjs-2.0.0-next.8.tgz", + "integrity": "sha512-Z/+0eWc7pBEABwg3a5ptL+vCTWHYMFnYzpLoJxTm2muBSk8XyB/CL+tEJ6SV3Q/fScHX2dtG4JRcGSpbZFLazQ==", "requires": { - "remark-parse": "^5.0.0", - "remark-stringify": "^5.0.0", - "unified": "^6.0.0" + "@babel/core": "7.10.5", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.10.4", + "@babel/plugin-syntax-jsx": "7.10.4", + "@mdx-js/util": "^2.0.0-next.8" + }, + "dependencies": { + "@babel/core": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", + "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/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==" + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", + "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-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "remark-parse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-5.0.0.tgz", - "integrity": "sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", + "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", "requires": { "collapse-white-space": "^1.0.2", "is-alphabetical": "^1.0.0", @@ -11401,20 +38212,35 @@ "unist-util-remove-position": "^1.0.0", "vfile-location": "^2.0.0", "xtend": "^4.0.1" + }, + "dependencies": { + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + } } }, "remark-retext": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.2.tgz", - "integrity": "sha512-+48KzJdSXvsPupY5pj5AY7oBUSiDOqFPZBKebX5WemrMyIG+RImIt9hgeqelluVDd1kooHen33K/aybTPyoI9g==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.3.tgz", + "integrity": "sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==", "requires": { "mdast-util-to-nlcst": "^3.2.0" } }, "remark-stringify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-5.0.0.tgz", - "integrity": "sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", "requires": { "ccount": "^1.0.0", "is-alphanumeric": "^1.0.0", @@ -11422,14 +38248,26 @@ "is-whitespace-character": "^1.0.0", "longest-streak": "^2.0.1", "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", "repeat-string": "^1.5.4", "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", + "stringify-entities": "^3.0.0", "unherit": "^1.0.4", "xtend": "^4.0.1" + }, + "dependencies": { + "stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + } + } } }, "remove-trailing-separator": { @@ -11438,15 +38276,15 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", "requires": { - "css-select": "^1.1.0", + "css-select": "^2.0.2", "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" } }, "repeat-element": { @@ -11469,15 +38307,15 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, "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=" + "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==" + }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=" }, "requires-port": { "version": "1.0.0", @@ -11485,19 +38323,20 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" } }, "resolve-dir": { @@ -11510,9 +38349,9 @@ } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, "resolve-url": { "version": "0.2.1", @@ -11542,14 +38381,24 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "retext-english": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.2.tgz", - "integrity": "sha512-iWffdWUvJngqaRlE570SaYRgQbn4/QVBfGa/XseEBuBazymnyW24o37oLPY0vm+PJdLmDghnjZX0UbkZSZF0Cg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.4.tgz", + "integrity": "sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==", "requires": { "parse-english": "^4.0.0", "unherit": "^1.0.4" } }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -11561,9 +38410,9 @@ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -11578,11 +38427,16 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "requires": { - "is-promise": "^2.1.0" + "queue-microtask": "^1.2.2" } }, "run-queue": { @@ -11607,17 +38461,17 @@ } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "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", @@ -11633,46 +38487,78 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sanitize-html": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.0.tgz", - "integrity": "sha512-BpxXkBoAG+uKCHjoXFmox6kCSYpnulABoGcZ/R3QyY9ndXbIM5S94eOr1IqnzTG8TnbmXaxWoDDzKC5eJv7fEQ==", - "requires": { - "chalk": "^2.4.1", - "htmlparser2": "^3.10.0", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.mergewith": "^4.6.1", - "postcss": "^7.0.5", - "srcset": "^1.0.0", - "xtend": "^4.0.1" + "version": "1.27.5", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", + "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", + "requires": { + "htmlparser2": "^4.1.0", + "lodash": "^4.17.15", + "parse-srcset": "^1.0.2", + "postcss": "^7.0.27" }, "dependencies": { - "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==", + "dom-serializer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.1.tgz", + "integrity": "sha512-Pv2ZluG5ife96udGgEDovOOOA5UELkltfJpnIExPrAk1LTvecolUGn6lIaoLh86d83GiB86CjzciMd9BuRB71Q==", "requires": { - "color-convert": "^1.9.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "requires": { + "domelementtype": "^2.2.0" + } + } } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "domelementtype": "^2.0.1" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "domutils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz", + "integrity": "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==", "requires": { - "has-flag": "^3.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" } } } @@ -11700,15 +38586,6 @@ "ajv-keywords": "^3.1.0" } }, - "scroll-behavior": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/scroll-behavior/-/scroll-behavior-0.9.10.tgz", - "integrity": "sha512-JVJQkBkqMLEM4ATtbHTKare97zhz/qlla9mNttFYY/bcpyOb4BuBGEQ/N9AQWXvshzf6zo9jP60TlphnJ4YPoQ==", - "requires": { - "dom-helpers": "^3.2.1", - "invariant": "^2.2.2" - } - }, "section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -11719,9 +38596,9 @@ }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -11737,24 +38614,31 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "requires": { - "node-forge": "0.7.5" + "node-forge": "^0.10.0" } }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "requires": { - "semver": "^5.0.3" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, "send": { @@ -11790,9 +38674,12 @@ } }, "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -11843,9 +38730,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "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", @@ -11878,9 +38765,9 @@ "integrity": "sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==" }, "shallowequal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.0.2.tgz", - "integrity": "sha512-zlVXeVUKvo+HEv1e2KQF/csyeMKx2oHvatQ9l6XjCUj3agvC8XGf6R9HvIPDSmp8FNPvx7b5kaEJTRi7CqxtEw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, "shebang-command": { "version": "1.2.0", @@ -11906,20 +38793,20 @@ "jsonify": "~0.0.0" } }, - "sift": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/sift/-/sift-5.1.0.tgz", - "integrity": "sha1-G78t+w63HlbEzH+1Z/vRNRtlAV4=" + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "signedsource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", - "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-swizzle": { "version": "0.2.2", @@ -11936,10 +38823,18 @@ } } }, - "sisteransi": { + "single-trailing-newline": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", - "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==" + "resolved": "https://registry.npmjs.org/single-trailing-newline/-/single-trailing-newline-1.0.0.tgz", + "integrity": "sha1-gfCtKtZFGBlFyAlSpcFBSZLulmQ=", + "requires": { + "detect-newline": "^1.0.3" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "slash": { "version": "1.0.0", @@ -11954,15 +38849,13 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } } }, + "slugify": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.2.tgz", + "integrity": "sha512-Grpsq9/NLsae2qF2GJcoTcnDxIKp1Yt59mC+Lq+SE5xovVAckY8xG4A8jUPdY7IXhHg84u0cU/oij1XX4FXxpA==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -12032,15 +38925,10 @@ "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -12053,111 +38941,103 @@ } }, "socket.io": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", - "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.1.tgz", + "integrity": "sha512-7cBWdsDC7bbyEF6WbBqffjizc/H4YF1wLdZoOzuYfo2uMNSFjJKuQ36t0H40o9B20DO6p+mSytEd92oP4S15bA==", "requires": { - "debug": "~4.1.0", - "engine.io": "~3.3.1", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.2.0", - "socket.io-parser": "~3.3.0" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": "^14.14.10", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==" }, "socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.3.1", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-3.1.1.tgz", + "integrity": "sha512-BLgIuCjI7Sf3mDHunKddX9zKR/pbkP7IACM3sJS3jha+zJ6/pGKRV6Fz5XSBHCfUs9YzT8kYIqNwOOuFNLtnYA==", + "requires": { + "@types/component-emitter": "^1.2.10", + "backo2": "~1.0.2", + "component-emitter": "~1.3.0", + "debug": "~4.3.1", + "engine.io-client": "~4.1.0", + "parseuri": "0.0.6", + "socket.io-parser": "~4.0.4" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - }, - "dependencies": { - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "requires": { - "websocket-driver": ">=0.5.1" - } - } + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" } }, "sockjs-client": { @@ -12204,9 +39084,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12251,9 +39131,9 @@ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, "spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "requires": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -12263,17 +39143,17 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -12291,38 +39171,35 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } } } }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -12355,21 +39232,26 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "srcset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", - "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "requires": { - "array-uniq": "^1.0.2", - "number-is-nan": "^1.0.0" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "st": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/st/-/st-2.0.0.tgz", + "integrity": "sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==", "requires": { - "figgy-pudding": "^3.5.1" + "async-cache": "^1.1.0", + "bl": "^4.0.0", + "fd": "~0.0.2", + "graceful-fs": "^4.2.3", + "mime": "^2.4.4", + "negotiator": "~0.6.2" } }, "stable": { @@ -12382,20 +39264,15 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==" - }, "stackframe": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", - "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" }, "state-toggle": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", - "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" }, "static-extend": { "version": "0.1.2", @@ -12449,74 +39326,31 @@ "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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" - } - }, - "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" - } - } } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string-length": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "optional": true, + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, + "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": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "optional": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "safe-buffer": "~5.1.0" } }, + "string-env-interpolation": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", + "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==" + }, "string-similarity": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.2.tgz", @@ -12543,11 +39377,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "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=" - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -12558,12 +39387,36 @@ } } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "string.prototype.matchall": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", + "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", "requires": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "stringify-entities": { @@ -12600,23 +39453,40 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", "requires": { "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5" + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "style-to-object": { @@ -12637,28 +39507,50 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "browserslist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", - "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==", - "requires": { - "caniuse-lite": "^1.0.30000967", - "electron-to-chromium": "^1.3.133", - "node-releases": "^1.1.19" - } - }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } } } }, + "subscriptions-transport-ws": { + "version": "0.9.18", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz", + "integrity": "sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA==", + "requires": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0" + }, + "dependencies": { + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12668,17 +39560,16 @@ } }, "svgo": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz", - "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "requires": { "chalk": "^2.4.1", "coa": "^2.0.2", "css-select": "^2.0.0", "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", "object.values": "^1.1.0", @@ -12688,32 +39579,15 @@ "util.promisify": "~1.0.0" }, "dependencies": { - "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^2.1.2", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "requires": { - "boolbase": "~1.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } } } @@ -12723,13 +39597,29 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, + "sync-fetch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz", + "integrity": "sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==", + "requires": { + "buffer": "^5.7.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } + } + }, "table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", - "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -12744,11 +39634,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, - "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=" - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -12775,21 +39660,18 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "^0.7.0" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" }, "terser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", - "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "requires": { - "commander": "^2.19.0", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.10" + "source-map-support": "~0.5.12" }, "dependencies": { "source-map": { @@ -12800,36 +39682,70 @@ } }, "terser-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", - "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", - "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", - "worker-farm": "^1.7.0" + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" }, "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==" + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.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-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "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": "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" + } } } }, @@ -12850,41 +39766,12 @@ "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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" - } - }, - "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" - } - } } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, "timed-out": { "version": "4.0.1", @@ -12892,13 +39779,22 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "requires": { "setimmediate": "^1.0.4" } }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "timsort": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", @@ -12911,18 +39807,13 @@ "optional": true }, "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "requires": { - "os-tmpdir": "~1.0.1" + "rimraf": "^3.0.0" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -12941,6 +39832,11 @@ "kind-of": "^3.0.2" } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -12978,16 +39874,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "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" - } - } } }, "toidentifier": { @@ -12995,14 +39881,6 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "requires": { - "hoek": "6.x.x" - } - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -13018,44 +39896,83 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, "trim-trailing-lines": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz", - "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" }, "trough": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.3.tgz", - "integrity": "sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" }, "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==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "requires": { - "glob": "^7.1.2" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" } }, "ts-pnp": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.2.tgz", - "integrity": "sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + } + } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "requires": { + "tslib": "^1.8.1" + } }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "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", @@ -13065,9 +39982,9 @@ } }, "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.0.2.tgz", + "integrity": "sha512-a720oz3Kjbp3ll0zkeN9qjRhO7I34MKMhPGQiQJAmaZQZQ1lo+NWThK322f7sXV+kTg9B1Ybt16KgBXWgteT8w==" }, "type-is": { "version": "1.6.18", @@ -13088,6 +40005,20 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "peer": true + }, "typography": { "version": "0.16.19", "resolved": "https://registry.npmjs.org/typography/-/typography-0.16.19.tgz", @@ -13128,9 +40059,20 @@ } }, "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } }, "unc-path-regex": { "version": "0.1.2", @@ -13147,12 +40089,12 @@ } }, "unherit": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", - "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", "requires": { - "inherits": "^2.0.1", - "xtend": "^4.0.1" + "inherits": "^2.0.0", + "xtend": "^4.0.0" } }, "unicode-canonical-property-names-ecmascript": { @@ -13170,50 +40112,43 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + "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==" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + "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==" }, "unified": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", - "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", + "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", "requires": { "bail": "^1.0.0", "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", + "is-plain-obj": "^2.0.0", "trough": "^1.0.0", - "vfile": "^2.0.0", - "x-is-string": "^0.1.0" + "vfile": "^4.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + } } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "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": "^0.4.3" - }, - "dependencies": { - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -13235,19 +40170,19 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "requires": { "imurmurhash": "^0.1.4" } }, "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "^2.0.0" } }, "unist-builder": { @@ -13269,9 +40204,9 @@ "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" }, "unist-util-modify-children": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.3.tgz", - "integrity": "sha512-Aw3Us+NPrJGYWyLhcaqYzgxd/pryIanDNHVVvwdtTEEQ3Yfa/+sjnT2EeAAHbtTMAaYEdPW3XN6jxbzVWAo/BQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz", + "integrity": "sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==", "requires": { "array-iterate": "^1.0.0" } @@ -13281,10 +40216,25 @@ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.2.tgz", "integrity": "sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g==" }, + "unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "requires": { + "unist-util-is": "^4.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" + } + } + }, "unist-util-remove-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz", - "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "requires": { "unist-util-visit": "^1.1.0" } @@ -13300,9 +40250,12 @@ } }, "unist-util-stringify-position": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } }, "unist-util-visit": { "version": "1.4.0", @@ -13313,9 +40266,9 @@ } }, "unist-util-visit-children": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.2.tgz", - "integrity": "sha512-q4t6aprUcSQ2/+xlswuh2wUKwUUuMmDjSkfwkMjeVwCXc8NqX8g0FSmNf68CznCmbkrsOPDUR0wj14bCFXXqbA==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz", + "integrity": "sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==" }, "unist-util-visit-parents": { "version": "2.0.1", @@ -13323,13 +40276,6 @@ "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", "requires": { "unist-util-is": "^2.1.2" - }, - "dependencies": { - "unist-util-is": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", - "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" - } } }, "universalify": { @@ -13337,6 +40283,14 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" }, + "unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", + "requires": { + "normalize-path": "^2.1.1" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -13380,18 +40334,13 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" }, "upath": { "version": "1.1.2", @@ -13399,61 +40348,142 @@ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" }, "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" }, "dependencies": { - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "string-width": "^2.0.0" + "color-convert": "^2.0.1" } }, "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" } }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "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-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.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": { - "ci-info": "^1.5.0" + "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, @@ -13509,9 +40539,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -13549,12 +40579,15 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" } }, "utila": { @@ -13568,14 +40601,14 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", - "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "valid-url": { "version": "1.0.9", @@ -13591,64 +40624,218 @@ "spdx-expression-parse": "~1.0.0" } }, + "value-or-promise": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", + "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" }, "vfile": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz", - "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", "requires": { - "is-buffer": "^1.1.4", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + } } }, "vfile-location": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.4.tgz", - "integrity": "sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", + "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==" }, "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", "requires": { - "unist-util-stringify-position": "^1.1.1" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "requires": { "loose-envify": "^1.0.0" } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "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==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "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==", + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + } } }, "wbuf": { @@ -13665,40 +40852,61 @@ "integrity": "sha512-II+n2ms4mPxK+RnIxRPOw3zwF2jRscdJIUE9BfkKHm4FYEg9+biIoTMnaZF5MpemE3T+VhMLrhbyD4ilkPCSbg==" }, "webpack": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", - "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } }, "eslint-scope": { "version": "4.0.3", @@ -13708,78 +40916,195 @@ "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "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" + } + }, + "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==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "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" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, "webpack-dev-middleware": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", - "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "requires": { "memory-fs": "^0.4.1", - "mime": "^2.4.2", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", "range-parser": "^1.2.1", "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", - "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==" - } } }, "webpack-dev-server": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.4.1.tgz", - "integrity": "sha512-CRqZQX2ryMtrg0r3TXQPpNh76eM1HD3Wmu6zDBxIKi/d2y+4aa28Ia8weNT0bfgWpY6Vs3Oq/K8+DjfbR+tWYw==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.1.6", + "chokidar": "^2.1.8", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "debug": "^4.1.1", "del": "^4.1.1", - "express": "^4.17.0", - "html-entities": "^1.2.1", - "http-proxy-middleware": "^0.19.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.1", + "loglevel": "^1.6.8", "opn": "^5.5.0", - "portfinder": "^1.0.20", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", - "semver": "^6.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.0", + "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", - "yargs": "12.0.5" + "ws": "^6.2.1", + "yargs": "^13.3.2" }, "dependencies": { "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "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", @@ -13787,9 +41112,9 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "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", @@ -13806,50 +41131,31 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "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": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } - } - }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "del": { @@ -13866,26 +41172,17 @@ "rimraf": "^2.6.3" } }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "requires": { - "original": "^1.0.0" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "requires": { + "original": "^1.0.0" } }, "find-up": { @@ -13896,47 +41193,29 @@ "locate-path": "^3.0.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "is-path-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", - "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { - "path-is-inside": "^1.0.2" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "locate-path": { "version": "3.0.0", @@ -13947,45 +41226,20 @@ "path-exists": "^3.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "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" } @@ -14013,6 +41267,14 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, + "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" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -14024,33 +41286,53 @@ } }, "semver": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", - "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { "ms": "^2.1.1" } } } }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -14059,29 +41341,60 @@ "has-flag": "^3.0.0" } }, + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "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" @@ -14110,17 +41423,17 @@ } }, "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -14134,16 +41447,40 @@ } }, "webpack-stats-plugin": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-0.1.5.tgz", - "integrity": "sha1-KeXxLr/VMVjTHWVqETrB97hhedk=" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-0.3.2.tgz", + "integrity": "sha512-kxEtPQ6lBBik2qtJlsZkiaDMI6rGXe9w1kLH9ZCdt0wgCGVnbwwPlP60cMqG6tILNFYqXDxNt4+c4OIIuE+Fnw==" + }, + "webpack-virtual-modules": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz", + "integrity": "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==", + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -14165,17 +41502,64 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "requires": { - "string-width": "^2.1.1" + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "with-open-file": { @@ -14200,10 +41584,10 @@ } } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "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==" }, "worker-farm": { "version": "1.7.0", @@ -14214,22 +41598,62 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" } } } @@ -14248,22 +41672,21 @@ } }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "requires": { - "async-limiter": "~1.0.0" - } + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "requires": {} }, "x-is-string": { "version": "0.1.0", @@ -14271,19 +41694,28 @@ "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=" }, "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" }, "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz", + "integrity": "sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg==" + }, + "xss": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", + "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + } }, "xstate": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.6.0.tgz", - "integrity": "sha512-1bPy5an0QLUX3GiqtJB68VgBrLIotxZwpItDBO3vbakgzEY0D8UG1hsbM4MJM3BN1Y43pnac3ChmPL5s+Bca0A==" + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.19.1.tgz", + "integrity": "sha512-tnBh6ue9MiyoMkE2+w1IqfvJm4nBe3S4Ky/RLvlo9vka8FdO4WyyT3M7PA0pQoM/FZ9aJVWFOlsNw0Nc7E+4Bw==" }, "xtend": { "version": "4.0.1", @@ -14291,47 +41723,87 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, "yaml-loader": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.5.0.tgz", - "integrity": "sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.6.0.tgz", + "integrity": "sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==", "requires": { - "js-yaml": "^3.5.2" + "loader-utils": "^1.4.0", + "yaml": "^1.8.3" } }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==" + } } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "requires": { "camelcase": "^4.1.0" } @@ -14341,36 +41813,34 @@ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, "yoga-layout-prebuilt": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.3.tgz", - "integrity": "sha512-9SNQpwuEh2NucU83i2KMZnONVudZ86YNcFk9tq74YaqrQfgJWO3yB9uzH1tAg8iqh5c9F5j0wuyJ2z72wcum2w==", - "optional": true + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz", + "integrity": "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==", + "requires": { + "@types/yoga-layout": "1.9.2" + } }, "yurnalist": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-1.0.5.tgz", - "integrity": "sha512-EuLjqX3Q15iVM0UtZa5Ju536uRmklKd2kKhdE5D5fIh8RZmh+pJ8c6wj2oGo0TA+T/Ii2o79cIHCTMfciW8jlA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/yurnalist/-/yurnalist-2.1.0.tgz", + "integrity": "sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==", "requires": { - "babel-runtime": "^6.26.0", - "chalk": "^2.1.0", - "cli-table3": "^0.5.1", - "debug": "^4.1.0", - "deep-equal": "^1.0.1", - "detect-indent": "^5.0.0", - "inquirer": "^6.2.0", - "invariant": "^2.2.0", - "is-builtin-module": "^3.0.0", + "chalk": "^2.4.2", + "inquirer": "^7.0.0", "is-ci": "^2.0.0", - "leven": "^2.0.0", - "loud-rejection": "^1.2.0", - "node-emoji": "^1.6.1", - "object-path": "^0.11.2", "read": "^1.0.7", - "rimraf": "^2.5.0", - "semver": "^5.1.0", - "strip-ansi": "^5.0.0", - "strip-bom": "^3.0.0" + "strip-ansi": "^5.2.0" }, "dependencies": { "ansi-regex": { @@ -14378,32 +41848,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, - "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==" - }, - "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" - } - }, - "is-builtin-module": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.0.0.tgz", - "integrity": "sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw==", - "requires": { - "builtin-modules": "^3.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", From 72cd5284296e4cdb3fe88f2982ec7528604b6618 Mon Sep 17 00:00:00 2001 From: flyskyko Date: Sun, 4 Jul 2021 13:17:07 +0900 Subject: [PATCH 293/377] add features for border-style dashed, dotted, double. (#2531) --- src/css/property-descriptors/border-style.ts | 11 +- src/css/property-descriptors/display.ts | 1 + src/global.d.ts | 6 +- src/render/border.ts | 99 +++++++++++ src/render/bound-curves.ts | 161 +++++++++++++++++- src/render/canvas/canvas-renderer.ts | 168 ++++++++++++++++++- tests/karma.ts | 15 +- 7 files changed, 434 insertions(+), 27 deletions(-) diff --git a/src/css/property-descriptors/border-style.ts b/src/css/property-descriptors/border-style.ts index 8ebdb5c61..b70ff077b 100644 --- a/src/css/property-descriptors/border-style.ts +++ b/src/css/property-descriptors/border-style.ts @@ -1,7 +1,10 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; export enum BORDER_STYLE { NONE = 0, - SOLID = 1 + SOLID = 1, + DASHED = 2, + DOTTED = 3, + DOUBLE = 4 } const borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({ @@ -13,6 +16,12 @@ const borderStyleForSide = (side: string): IPropertyIdentValueDescriptor = { const parseDisplayValue = (display: string): Display => { switch (display) { case 'block': + case '-webkit-box': return DISPLAY.BLOCK; case 'inline': return DISPLAY.INLINE; diff --git a/src/global.d.ts b/src/global.d.ts index a94aa9617..88c1d5215 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,7 +1,7 @@ interface CSSStyleDeclaration { - textDecorationColor: string | null; - textDecorationLine: string | null; - overflowWrap: string | null; + textDecorationColor: string; + textDecorationLine: string; + overflowWrap: string; } interface DocumentType extends Node, ChildNode { diff --git a/src/render/border.ts b/src/render/border.ts index 05c6a995b..20882c7d0 100644 --- a/src/render/border.ts +++ b/src/render/border.ts @@ -36,6 +36,105 @@ export const parsePathForBorder = (curves: BoundCurves, borderSide: number): Pat } }; +export const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => { + switch (borderSide) { + case 0: + return createPathFromCurves( + curves.topLeftBorderBox, + curves.topLeftBorderDoubleOuterBox, + curves.topRightBorderBox, + curves.topRightBorderDoubleOuterBox + ); + case 1: + return createPathFromCurves( + curves.topRightBorderBox, + curves.topRightBorderDoubleOuterBox, + curves.bottomRightBorderBox, + curves.bottomRightBorderDoubleOuterBox + ); + case 2: + return createPathFromCurves( + curves.bottomRightBorderBox, + curves.bottomRightBorderDoubleOuterBox, + curves.bottomLeftBorderBox, + curves.bottomLeftBorderDoubleOuterBox + ); + case 3: + default: + return createPathFromCurves( + curves.bottomLeftBorderBox, + curves.bottomLeftBorderDoubleOuterBox, + curves.topLeftBorderBox, + curves.topLeftBorderDoubleOuterBox + ); + } +}; + +export const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => { + switch (borderSide) { + case 0: + return createPathFromCurves( + curves.topLeftBorderDoubleInnerBox, + curves.topLeftPaddingBox, + curves.topRightBorderDoubleInnerBox, + curves.topRightPaddingBox + ); + case 1: + return createPathFromCurves( + curves.topRightBorderDoubleInnerBox, + curves.topRightPaddingBox, + curves.bottomRightBorderDoubleInnerBox, + curves.bottomRightPaddingBox + ); + case 2: + return createPathFromCurves( + curves.bottomRightBorderDoubleInnerBox, + curves.bottomRightPaddingBox, + curves.bottomLeftBorderDoubleInnerBox, + curves.bottomLeftPaddingBox + ); + case 3: + default: + return createPathFromCurves( + curves.bottomLeftBorderDoubleInnerBox, + curves.bottomLeftPaddingBox, + curves.topLeftBorderDoubleInnerBox, + curves.topLeftPaddingBox + ); + } +}; + +export const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => { + switch (borderSide) { + case 0: + return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke); + case 1: + return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke); + case 2: + return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke); + case 3: + default: + return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke); + } +}; + +const createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => { + const path = []; + if (isBezierCurve(outer1)) { + path.push(outer1.subdivide(0.5, false)); + } else { + path.push(outer1); + } + + if (isBezierCurve(outer2)) { + path.push(outer2.subdivide(0.5, true)); + } else { + path.push(outer2); + } + + return path; +}; + const createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => { const path = []; if (isBezierCurve(outer1)) { diff --git a/src/render/bound-curves.ts b/src/render/bound-curves.ts index 6f19899dd..f6d19d4b1 100644 --- a/src/render/bound-curves.ts +++ b/src/render/bound-curves.ts @@ -5,6 +5,18 @@ import {BezierCurve} from './bezier-curve'; import {Path} from './path'; export class BoundCurves { + readonly topLeftBorderDoubleOuterBox: Path; + readonly topRightBorderDoubleOuterBox: Path; + readonly bottomRightBorderDoubleOuterBox: Path; + readonly bottomLeftBorderDoubleOuterBox: Path; + readonly topLeftBorderDoubleInnerBox: Path; + readonly topRightBorderDoubleInnerBox: Path; + readonly bottomRightBorderDoubleInnerBox: Path; + readonly bottomLeftBorderDoubleInnerBox: Path; + readonly topLeftBorderStroke: Path; + readonly topRightBorderStroke: Path; + readonly bottomRightBorderStroke: Path; + readonly bottomLeftBorderStroke: Path; readonly topLeftBorderBox: Path; readonly topRightBorderBox: Path; readonly bottomRightBorderBox: Path; @@ -60,6 +72,141 @@ export class BoundCurves { const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width); const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width); + this.topLeftBorderDoubleOuterBox = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + borderLeftWidth / 3, + bounds.top + borderTopWidth / 3, + tlh - borderLeftWidth / 3, + tlv - borderTopWidth / 3, + CORNER.TOP_LEFT + ) + : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3); + this.topRightBorderDoubleOuterBox = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + topWidth, + bounds.top + borderTopWidth / 3, + trh - borderRightWidth / 3, + trv - borderTopWidth / 3, + CORNER.TOP_RIGHT + ) + : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3); + this.bottomRightBorderDoubleOuterBox = + brh > 0 || brv > 0 + ? getCurvePoints( + bounds.left + bottomWidth, + bounds.top + rightHeight, + brh - borderRightWidth / 3, + brv - borderBottomWidth / 3, + CORNER.BOTTOM_RIGHT + ) + : new Vector( + bounds.left + bounds.width - borderRightWidth / 3, + bounds.top + bounds.height - borderBottomWidth / 3 + ); + this.bottomLeftBorderDoubleOuterBox = + blh > 0 || blv > 0 + ? getCurvePoints( + bounds.left + borderLeftWidth / 3, + bounds.top + leftHeight, + blh - borderLeftWidth / 3, + blv - borderBottomWidth / 3, + CORNER.BOTTOM_LEFT + ) + : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3); + this.topLeftBorderDoubleInnerBox = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + (borderLeftWidth * 2) / 3, + bounds.top + (borderTopWidth * 2) / 3, + tlh - (borderLeftWidth * 2) / 3, + tlv - (borderTopWidth * 2) / 3, + CORNER.TOP_LEFT + ) + : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3); + this.topRightBorderDoubleInnerBox = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + topWidth, + bounds.top + (borderTopWidth * 2) / 3, + trh - (borderRightWidth * 2) / 3, + trv - (borderTopWidth * 2) / 3, + CORNER.TOP_RIGHT + ) + : new Vector( + bounds.left + bounds.width - (borderRightWidth * 2) / 3, + bounds.top + (borderTopWidth * 2) / 3 + ); + this.bottomRightBorderDoubleInnerBox = + brh > 0 || brv > 0 + ? getCurvePoints( + bounds.left + bottomWidth, + bounds.top + rightHeight, + brh - (borderRightWidth * 2) / 3, + brv - (borderBottomWidth * 2) / 3, + CORNER.BOTTOM_RIGHT + ) + : new Vector( + bounds.left + bounds.width - (borderRightWidth * 2) / 3, + bounds.top + bounds.height - (borderBottomWidth * 2) / 3 + ); + this.bottomLeftBorderDoubleInnerBox = + blh > 0 || blv > 0 + ? getCurvePoints( + bounds.left + (borderLeftWidth * 2) / 3, + bounds.top + leftHeight, + blh - (borderLeftWidth * 2) / 3, + blv - (borderBottomWidth * 2) / 3, + CORNER.BOTTOM_LEFT + ) + : new Vector( + bounds.left + (borderLeftWidth * 2) / 3, + bounds.top + bounds.height - (borderBottomWidth * 2) / 3 + ); + this.topLeftBorderStroke = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + borderLeftWidth / 2, + bounds.top + borderTopWidth / 2, + tlh - borderLeftWidth / 2, + tlv - borderTopWidth / 2, + CORNER.TOP_LEFT + ) + : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2); + this.topRightBorderStroke = + tlh > 0 || tlv > 0 + ? getCurvePoints( + bounds.left + topWidth, + bounds.top + borderTopWidth / 2, + trh - borderRightWidth / 2, + trv - borderTopWidth / 2, + CORNER.TOP_RIGHT + ) + : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2); + this.bottomRightBorderStroke = + brh > 0 || brv > 0 + ? getCurvePoints( + bounds.left + bottomWidth, + bounds.top + rightHeight, + brh - borderRightWidth / 2, + brv - borderBottomWidth / 2, + CORNER.BOTTOM_RIGHT + ) + : new Vector( + bounds.left + bounds.width - borderRightWidth / 2, + bounds.top + bounds.height - borderBottomWidth / 2 + ); + this.bottomLeftBorderStroke = + blh > 0 || blv > 0 + ? getCurvePoints( + bounds.left + borderLeftWidth / 2, + bounds.top + leftHeight, + blh - borderLeftWidth / 2, + blv - borderBottomWidth / 2, + CORNER.BOTTOM_LEFT + ) + : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2); this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) @@ -89,10 +236,10 @@ export class BoundCurves { this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints( - bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth), + bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, - topWidth > bounds.width + borderRightWidth ? 0 : trh - borderRightWidth, - trv - borderTopWidth, + topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), + Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT ) : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth); @@ -100,9 +247,9 @@ export class BoundCurves { brh > 0 || brv > 0 ? getCurvePoints( bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), - bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth), + bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), - brv - borderBottomWidth, + Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT ) : new Vector( @@ -113,9 +260,9 @@ export class BoundCurves { blh > 0 || blv > 0 ? getCurvePoints( bounds.left + borderLeftWidth, - bounds.top + leftHeight, + bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), - blv - borderBottomWidth, + Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT ) : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth); diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index f6d3a4af1..ae72b45b3 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -8,10 +8,15 @@ import {TextContainer} from '../../dom/text-container'; import {Path, transformPath} from '../path'; import {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip'; import {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves'; -import {isBezierCurve} from '../bezier-curve'; +import {BezierCurve, isBezierCurve} from '../bezier-curve'; import {Vector} from '../vector'; import {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image'; -import {parsePathForBorder} from '../border'; +import { + parsePathForBorder, + parsePathForBorderDoubleInner, + parsePathForBorderDoubleOuter, + parsePathForBorderStroke +} from '../border'; import {Cache} from '../../core/cache-storage'; import {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background'; import {isDimensionToken} from '../../css/syntax/parser'; @@ -630,22 +635,37 @@ export class CanvasRenderer { } } - async renderBorder(color: Color, side: number, curvePoints: BoundCurves) { + async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves) { this.path(parsePathForBorder(curvePoints, side)); this.ctx.fillStyle = asString(color); this.ctx.fill(); } + async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves) { + if (width < 3) { + await this.renderSolidBorder(color, side, curvePoints); + return; + } + + const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side); + this.path(outerPaths); + this.ctx.fillStyle = asString(color); + this.ctx.fill(); + const innerPaths = parsePathForBorderDoubleInner(curvePoints, side); + this.path(innerPaths); + this.ctx.fill(); + } + async renderNodeBackgroundAndBorders(paint: ElementPaint) { this.applyEffects(paint.effects, EffectTarget.BACKGROUND_BORDERS); const styles = paint.container.styles; const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length; const borders = [ - {style: styles.borderTopStyle, color: styles.borderTopColor}, - {style: styles.borderRightStyle, color: styles.borderRightColor}, - {style: styles.borderBottomStyle, color: styles.borderBottomColor}, - {style: styles.borderLeftStyle, color: styles.borderLeftColor} + {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth}, + {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth}, + {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth}, + {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth} ]; const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea( @@ -705,13 +725,143 @@ export class CanvasRenderer { let side = 0; for (const border of borders) { - if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color)) { - await this.renderBorder(border.color, side, paint.curves); + if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) { + if (border.style === BORDER_STYLE.DASHED) { + await this.renderDashedDottedBorder( + border.color, + border.width, + side, + paint.curves, + BORDER_STYLE.DASHED + ); + } else if (border.style === BORDER_STYLE.DOTTED) { + await this.renderDashedDottedBorder( + border.color, + border.width, + side, + paint.curves, + BORDER_STYLE.DOTTED + ); + } else if (border.style === BORDER_STYLE.DOUBLE) { + await this.renderDoubleBorder(border.color, border.width, side, paint.curves); + } else { + await this.renderSolidBorder(border.color, side, paint.curves); + } } side++; } } + async renderDashedDottedBorder( + color: Color, + width: number, + side: number, + curvePoints: BoundCurves, + style: BORDER_STYLE + ) { + this.ctx.save(); + + const strokePaths = parsePathForBorderStroke(curvePoints, side); + const boxPaths = parsePathForBorder(curvePoints, side); + + if (style === BORDER_STYLE.DASHED) { + this.path(boxPaths); + this.ctx.clip(); + } + + let startX, startY, endX, endY; + if (isBezierCurve(boxPaths[0])) { + startX = (boxPaths[0] as BezierCurve).start.x; + startY = (boxPaths[0] as BezierCurve).start.y; + } else { + startX = (boxPaths[0] as Vector).x; + startY = (boxPaths[0] as Vector).y; + } + if (isBezierCurve(boxPaths[1])) { + endX = (boxPaths[1] as BezierCurve).end.x; + endY = (boxPaths[1] as BezierCurve).end.y; + } else { + endX = (boxPaths[1] as Vector).x; + endY = (boxPaths[1] as Vector).y; + } + + let length; + if (side === 0 || side === 2) { + length = Math.abs(startX - endX); + } else { + length = Math.abs(startY - endY); + } + + this.ctx.beginPath(); + if (style === BORDER_STYLE.DOTTED) { + this.formatPath(strokePaths); + } else { + this.formatPath(boxPaths.slice(0, 2)); + } + + let dashLength = width < 3 ? width * 3 : width * 2; + let spaceLength = width < 3 ? width * 2 : width; + if (style === BORDER_STYLE.DOTTED) { + dashLength = width; + spaceLength = width; + } + + let useLineDash = true; + if (length <= dashLength * 2) { + useLineDash = false; + } else if (length <= dashLength * 2 + spaceLength) { + const multiplier = length / (2 * dashLength + spaceLength); + dashLength *= multiplier; + spaceLength *= multiplier; + } else { + const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength)); + const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1); + const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes; + spaceLength = + maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) + ? minSpace + : maxSpace; + } + + if (useLineDash) { + if (style === BORDER_STYLE.DOTTED) { + this.ctx.setLineDash([0, dashLength + spaceLength]); + } else { + this.ctx.setLineDash([dashLength, spaceLength]); + } + } + + if (style === BORDER_STYLE.DOTTED) { + this.ctx.lineCap = 'round'; + this.ctx.lineWidth = width; + } else { + this.ctx.lineWidth = width * 2 + 1.1; + } + this.ctx.strokeStyle = asString(color); + this.ctx.stroke(); + this.ctx.setLineDash([]); + + // dashed round edge gap + if (style === BORDER_STYLE.DASHED) { + if (isBezierCurve(boxPaths[0])) { + const path1 = boxPaths[3] as BezierCurve; + const path2 = boxPaths[0] as BezierCurve; + this.ctx.beginPath(); + this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); + this.ctx.stroke(); + } + if (isBezierCurve(boxPaths[1])) { + const path1 = boxPaths[1] as BezierCurve; + const path2 = boxPaths[2] as BezierCurve; + this.ctx.beginPath(); + this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); + this.ctx.stroke(); + } + } + + this.ctx.restore(); + } + async render(element: ElementContainer): Promise { if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); diff --git a/tests/karma.ts b/tests/karma.ts index 454db1ba2..edf896087 100644 --- a/tests/karma.ts +++ b/tests/karma.ts @@ -23,10 +23,11 @@ const servers: Server[] = []; servers.push(screenshotApp.listen(8000)); servers.push(corsApp.listen(8081)); -karmaTestRunner().then(() => { - servers.forEach(server => server.close()); -}).catch(e => { - console.error(e); - process.exit(1); -}); - +karmaTestRunner() + .then(() => { + servers.forEach(server => server.close()); + }) + .catch(e => { + console.error(e); + process.exit(1); + }); From b09ee30daed50e85d24ec8a2bb6128c37bb68b2d Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 4 Jul 2021 05:15:53 +0000 Subject: [PATCH 294/377] chore(release): 1.0.0 --- CHANGELOG.md | 21 +++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18a1e8b86..3089f33f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,27 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.7...v1.0.0) (2021-07-04) + + +### ci + +* update docs publish action (#2451) ([7222aba](https://github.com/niklasvh/html2canvas/commit/7222aba1b42138c3d466525172411b3d9869095f)), closes [#2451](https://github.com/niklasvh/html2canvas/issues/2451) + +### deps + +* update www deps (#2525) ([2a013e2](https://github.com/niklasvh/html2canvas/commit/2a013e20c814b7dbaea98f54f0bde8f553eb79a2)), closes [#2525](https://github.com/niklasvh/html2canvas/issues/2525) + +### fix + +* opacity with overflow hidden (#2450) ([82b7da5](https://github.com/niklasvh/html2canvas/commit/82b7da558c342e7f53d298bb1d843a5db86c3b21)), closes [#2450](https://github.com/niklasvh/html2canvas/issues/2450) + +### test + +* update karma runner (#2524) ([ff35c7d](https://github.com/niklasvh/html2canvas/commit/ff35c7dbd33f863f5b614d778baf8cb1e8dded60)), closes [#2524](https://github.com/niklasvh/html2canvas/issues/2524) + + + # [1.0.0-rc.7](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.6...v1.0.0-rc.7) (2020-08-09) diff --git a/package-lock.json b/package-lock.json index 0a9df6cb9..f142acc29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0-rc.7", + "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 52b7344f3..f89a75389 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0-rc.7", + "version": "1.0.0", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From bb9237155cf0ec090432ee6c5d9c555eb6ffa81f Mon Sep 17 00:00:00 2001 From: Chang Wang Date: Sun, 4 Jul 2021 01:40:25 -0400 Subject: [PATCH 295/377] fix: Ensure resizeImage's canvas has at least 1px of width and height (#2409) * ensure resizeImage canvas has > 0 width, height * add tests for sliver background images --- src/render/canvas/canvas-renderer.ts | 4 ++-- tests/assets/bg-sliver.png | Bin 0 -> 190 bytes tests/reftests/background/size.html | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 tests/assets/bg-sliver.png diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index ae72b45b3..05408e02c 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -541,8 +541,8 @@ export class CanvasRenderer { } const canvas = (this.canvas.ownerDocument as Document).createElement('canvas'); - canvas.width = width; - canvas.height = height; + canvas.width = Math.max(1, width); + canvas.height = Math.max(1, height); const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height); return canvas; diff --git a/tests/assets/bg-sliver.png b/tests/assets/bg-sliver.png new file mode 100644 index 0000000000000000000000000000000000000000..06ed91f36ceea9f94fdb4665c4974fea65a6b5e6 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0y~yU=;zf89CU1PQis{uiy!Lt^VrEJ>+GJhbzkn+vbkU1owvLne(1W-s~4-U{qby{ zUbpsYRQ7h$7mf@}0u2l-3PAH6keCm`nf8_!muoNG^S{G->#u6HS7(;@MQ=TKQuTY! hFLl|tb9)-A7|h!}-uIm{hygl?!PC{xWt~$(69BPTNlO3# literal 0 HcmV?d00001 diff --git a/tests/reftests/background/size.html b/tests/reftests/background/size.html index 6cdf0fccd..d5511369b 100644 --- a/tests/reftests/background/size.html +++ b/tests/reftests/background/size.html @@ -9,6 +9,10 @@ display: block; background:url("../../assets/image.jpg") center center; } + .sliver div { + background:url("../../assets/bg-sliver.png") center center; + background-size: 650px auto; + } .vertical { float: right; @@ -57,5 +61,8 @@
            +
            +
            +
            From cf35a282b2c9d41b601c3148e8c08fe7ba61a5f9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 4 Jul 2021 14:12:48 +0800 Subject: [PATCH 296/377] docs: update border-style support --- docs/features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features.md b/docs/features.md index a6fa8020e..e14c33d69 100644 --- a/docs/features.md +++ b/docs/features.md @@ -18,7 +18,7 @@ Below is a list of all the supported CSS properties and values. - border - border-color - border-radius - - border-style (**Only supports `solid`**) + - border-style - border-width - bottom - box-sizing From 85f79c1a5e4c0b422ace552c430dd389c8477a44 Mon Sep 17 00:00:00 2001 From: ljsnagy Date: Sun, 11 Jul 2021 13:23:23 +0800 Subject: [PATCH 297/377] fix: use baseline for text positioning (#2109) --- src/render/canvas/canvas-renderer.ts | 36 ++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 05408e02c..2635686bd 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -148,13 +148,13 @@ export class CanvasRenderer { } } - renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number) { + renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number) { if (letterSpacing === 0) { - this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); + this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { const letters = toCodePoints(text.text).map(i => fromCodePoint(i)); letters.reduce((left, letter) => { - this.ctx.fillText(letter, left, text.bounds.top + text.bounds.height); + this.ctx.fillText(letter, left, text.bounds.top + baseline); return left + this.ctx.measureText(letter).width; }, text.bounds.left); @@ -181,10 +181,13 @@ export class CanvasRenderer { const [font, fontFamily, fontSize] = this.createFontStyle(styles); this.ctx.font = font; + this.ctx.textBaseline = 'alphabetic'; + + const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize); text.textBounds.forEach(text => { this.ctx.fillStyle = asString(styles.color); - this.renderTextWithLetterSpacing(text, styles.letterSpacing); + this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); const textShadows: TextShadow = styles.textShadow; if (textShadows.length && text.text.trim().length) { @@ -214,7 +217,6 @@ export class CanvasRenderer { // Draws a line at the baseline of the font // TODO As some browsers display the line as more than 1px if the font-size is big, // need to take that into account both in position and size - const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize); this.ctx.fillRect( text.bounds.left, Math.round(text.bounds.top + baseline), @@ -228,7 +230,6 @@ export class CanvasRenderer { break; case TEXT_DECORATION_LINE.LINE_THROUGH: // TODO try and find exact position for line-through - const {middle} = this.fontMetrics.getMetrics(fontFamily, fontSize); this.ctx.fillRect( text.bounds.left, Math.ceil(text.bounds.top + middle), @@ -371,7 +372,10 @@ export class CanvasRenderer { } if (isTextInputElement(container) && container.value.length) { - [this.ctx.font] = this.createFontStyle(styles); + const [fontFamily, fontSize] = this.createFontStyle(styles); + const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize); + + this.ctx.font = fontFamily; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = 'middle'; @@ -401,7 +405,11 @@ export class CanvasRenderer { ]); this.ctx.clip(); - this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing); + this.renderTextWithLetterSpacing( + new TextBounds(container.value, textBounds), + styles.letterSpacing, + baseline + ); this.ctx.restore(); this.ctx.textBaseline = 'bottom'; this.ctx.textAlign = 'left'; @@ -421,7 +429,9 @@ export class CanvasRenderer { } } } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) { - [this.ctx.font] = this.createFontStyle(styles); + const [fontFamily, fontSize] = this.createFontStyle(styles); + + this.ctx.font = fontFamily; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = 'middle'; @@ -433,7 +443,13 @@ export class CanvasRenderer { computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1 ); - this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing); + const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize); + + this.renderTextWithLetterSpacing( + new TextBounds(paint.listValue, bounds), + styles.letterSpacing, + baseline + ); this.ctx.textBaseline = 'bottom'; this.ctx.textAlign = 'left'; } From e7a021ab931f3c0de060b4643e88fad85345c3d3 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 11 Jul 2021 19:48:18 +0800 Subject: [PATCH 298/377] ci: fail build if no artifacts uploaded (#2566) --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6efdad067..15de11611 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,16 +43,19 @@ jobs: with: name: npm path: html2canvas.tgz + if-no-files-found: error - name: Upload dist uses: actions/upload-artifact@v2 with: name: dist path: dist + if-no-files-found: error - name: Upload build uses: actions/upload-artifact@v2 with: name: build path: build + if-no-files-found: error test: runs-on: ubuntu-latest @@ -170,6 +173,7 @@ jobs: with: name: reftest-results path: tmp/reftests + if-no-files-found: error publish: runs-on: ubuntu-latest name: Publish @@ -282,6 +286,7 @@ jobs: with: name: docs path: www/public + if-no-files-found: error publish-docs: runs-on: ubuntu-latest name: Publish Docs From b2902ec31c2a414ea26f864f8e00aa8846890ffc Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 11 Jul 2021 20:25:22 +0800 Subject: [PATCH 299/377] deps: update dependencies with lint fixes (#2565) --- .eslintrc | 3 +- package-lock.json | 27642 +++++++++------- package.json | 65 +- rollup.config.ts | 10 +- scripts/create-reftest-list.ts | 2 +- scripts/create-reftest-result-list.ts | 14 +- src/__tests__/index.ts | 2 - src/core/__mocks__/logger.ts | 15 +- src/core/__tests__/cache-storage.ts | 10 +- src/core/__tests__/logger.ts | 5 +- src/core/cache-storage.ts | 10 +- src/core/features.ts | 20 +- src/core/logger.ts | 10 +- src/css/index.ts | 3 +- src/css/layout/__mocks__/bounds.ts | 2 +- src/css/layout/text.ts | 4 +- .../__tests__/background-tests.ts | 5 +- .../__tests__/transform-tests.ts | 12 +- .../property-descriptors/background-clip.ts | 2 +- .../property-descriptors/background-image.ts | 2 +- .../property-descriptors/background-origin.ts | 2 +- .../property-descriptors/background-repeat.ts | 4 +- .../property-descriptors/background-size.ts | 2 +- src/css/property-descriptors/font-family.ts | 4 +- src/css/property-descriptors/font-variant.ts | 2 +- src/css/property-descriptors/overflow.ts | 2 +- .../text-decoration-line.ts | 4 +- src/css/property-descriptors/transform.ts | 4 +- src/css/syntax/parser.ts | 8 +- src/css/syntax/tokenizer.ts | 17 +- src/css/types/__tests__/image-tests.ts | 25 +- src/css/types/angle.ts | 2 +- src/css/types/color.ts | 4 +- src/css/types/functions/-webkit-gradient.ts | 6 +- .../functions/__tests__/radial-gradient.ts | 5 +- src/css/types/functions/counter.ts | 134 +- src/css/types/functions/gradient.ts | 7 +- src/css/types/image.ts | 4 +- src/css/types/length-percentage.ts | 4 +- src/dom/__mocks__/document-cloner.ts | 7 +- src/dom/document-cloner.ts | 27 +- .../iframe-element-container.ts | 5 +- .../input-element-container.ts | 31 +- src/global.d.ts | 1 + src/invariant.ts | 2 +- src/render/background.ts | 2 +- src/render/canvas/canvas-renderer.ts | 60 +- src/render/canvas/foreignobject-renderer.ts | 6 +- src/render/stacking-context.ts | 2 +- tests/karma.ts | 4 +- tests/rollup.config.ts | 18 +- tests/testrunner.ts | 8 +- tests/tsconfig.json | 7 +- tsconfig.json | 4 +- www/src/preview.ts | 4 +- 55 files changed, 15663 insertions(+), 12603 deletions(-) diff --git a/.eslintrc b/.eslintrc index 3bf500422..c5efba265 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,8 +2,7 @@ "parser": "@typescript-eslint/parser", "extends": [ "plugin:@typescript-eslint/recommended", - "prettier/@typescript-eslint", - "plugin:prettier/recommended", + "prettier" ], "parserOptions": { "project": "./tsconfig.json", diff --git a/package-lock.json b/package-lock.json index f142acc29..8d6584c27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "requires": true, "packages": { "": { - "version": "1.0.0-rc.7", + "version": "1.0.0", "license": "MIT", "dependencies": { "css-line-break": "1.1.1" @@ -15,36 +15,40 @@ "@babel/core": "^7.4.3", "@babel/preset-env": "^7.4.3", "@babel/preset-flow": "^7.0.0", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", "@types/chai": "^4.1.7", - "@types/express": "^4.17.11", + "@types/express": "^4.17.13", "@types/glob": "^7.1.1", - "@types/jest": "^24.0.18", + "@types/jest": "^26.0.24", "@types/karma": "^6.3.0", - "@types/mocha": "^5.2.6", - "@types/node": "^11.13.2", - "@types/platform": "^1.3.2", + "@types/mocha": "^8.2.3", + "@types/node": "^16.3.1", + "@types/platform": "^1.3.4", "@types/promise-polyfill": "^6.0.3", - "@typescript-eslint/eslint-plugin": "^1.7.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", "appium-ios-simulator": "^3.10.0", "babel-eslint": "^10.0.1", "babel-loader": "^8.0.5", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-dev-expression": "^0.2.1", "base64-arraybuffer": "0.2.0", - "body-parser": "^1.18.3", + "body-parser": "^1.19.0", "chai": "4.1.1", "chromeless": "^1.5.2", - "cors": "2.8.4", - "es6-promise": "^4.2.6", - "eslint": "^5.16.0", - "eslint-config-prettier": "^4.2.0", - "eslint-plugin-prettier": "3.0.1", + "cors": "^2.8.5", + "es6-promise": "^4.2.8", + "eslint": "^7.30.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "3.4.0", "express": "^4.17.1", "filenamify-url": "1.0.0", "glob": "7.1.3", "html2canvas-proxy": "1.0.1", - "jest": "^24.9.0", + "jest": "^27.0.6", "jquery": "^3.5.1", "js-polyfills": "^0.1.42", "karma": "^6.3.2", @@ -56,28 +60,25 @@ "karma-mocha": "^2.0.1", "karma-safarinative-launcher": "^1.1.0", "karma-sauce-launcher": "^2.0.2", - "mocha": "^6.1.4", + "mocha": "^9.0.2", "node-simctl": "^5.3.0", - "platform": "1.3.4", - "prettier": "1.17.0", + "platform": "^1.3.6", + "prettier": "^2.3.2", "replace-in-file": "^3.0.0", - "rimraf": "2.6.1", - "rollup": "^1.10.1", - "rollup-plugin-commonjs": "^9.3.4", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^4.2.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-typescript2": "^0.21.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-sourcemaps": "^0.6.3", "serve-index": "^1.9.1", "slash": "1.0.0", "standard-version": "^8.0.2", - "ts-jest": "^24.1.0", - "ts-loader": "^5.3.3", - "ts-node": "^8.0.3", - "typescript": "^3.4.3", - "uglify-js": "^3.5.11", - "uglifyjs-webpack-plugin": "^1.1.2", - "webpack": "^4.29.6", + "ts-jest": "^27.0.3", + "ts-loader": "^8.3.0", + "ts-node": "^10.1.0", + "tslib": "^2.3.0", + "typescript": "^4.3.5", + "uglify-js": "^3.13.10", + "uglifyjs-webpack-plugin": "^2.2.0", + "webpack": "^4.46.0", "webpack-cli": "^3.3.12", "yargs": "^17.0.1" }, @@ -86,18 +87,16 @@ } }, "node_modules/@babel/cli": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.3.tgz", - "integrity": "sha512-cbC5H9iTDV9H7sMxK5rUm18UbdVPNTPqgdzmQAkOUP3YLysgDWLZaysVAfylK49rgTlzL01a6tXyq9rCb3yLhQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.5.tgz", + "integrity": "sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg==", "dev": true, "dependencies": { - "commander": "^2.8.1", + "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", + "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" }, @@ -105,15 +104,25 @@ "babel": "bin/babel.js", "babel-external-helpers": "bin/babel-external-helpers.js" }, + "engines": { + "node": ">=6.9.0" + }, "optionalDependencies": { - "chokidar": "^2.0.4" + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/cli/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/@babel/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } }, "node_modules/@babel/cli/node_modules/slash": { "version": "2.0.0", @@ -125,37 +134,54 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dev": true, "dependencies": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", - "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", + "node_modules/@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helpers": "^7.4.3", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "convert-source-map": "^1.1.0", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/@babel/core/node_modules/debug": { @@ -168,12 +194,12 @@ } }, "node_modules/@babel/core/node_modules/json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" }, "bin": { "json5": "lib/cli.js" @@ -182,12 +208,6 @@ "node": ">=6" } }, - "node_modules/@babel/core/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/core/node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -201,25 +221,26 @@ "dev": true }, "node_modules/@babel/core/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "dependencies": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/jsesc": { @@ -234,12 +255,6 @@ "node": ">=4" } }, - "node_modules/@babel/generator/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", @@ -270,6 +285,33 @@ "@babel/types": "^7.4.0" } }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-map": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", @@ -281,12 +323,6 @@ "lodash": "^4.17.11" } }, - "node_modules/@babel/helper-define-map/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", @@ -298,86 +334,106 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", - "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dev": true, "dependencies": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", - "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.11" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-regex": { "version": "7.4.3", @@ -388,12 +444,6 @@ "lodash": "^4.17.11" } }, - "node_modules/@babel/helper-regex/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", @@ -408,34 +458,60 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", - "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dev": true, "dependencies": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "dependencies": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { @@ -451,51 +527,31 @@ } }, "node_modules/@babel/helpers": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", - "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dev": true, "dependencies": { - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/js-tokens": { @@ -504,22 +560,10 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -628,12 +672,39 @@ } }, "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-flow": { @@ -645,31 +716,130 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { @@ -711,12 +881,6 @@ "lodash": "^4.17.11" } }, - "node_modules/@babel/plugin-transform-block-scoping/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/plugin-transform-classes": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz", @@ -1158,29 +1322,6 @@ "semver": "^5.5.0" } }, - "node_modules/@babel/preset-env/node_modules/browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" - }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@babel/preset-flow": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.0.0.tgz", @@ -1201,31 +1342,37 @@ } }, "node_modules/@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/debug": { @@ -1246,12 +1393,6 @@ "node": ">=4" } }, - "node_modules/@babel/traverse/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/traverse/node_modules/ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -1259,22 +1400,18 @@ "dev": true }, "node_modules/@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "dependencies": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/types/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/@babel/types/node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1284,563 +1421,1068 @@ "node": ">=4" } }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=0.1.95" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@cnakazawa/watch/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">= 6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@jest/console/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/@eslint/eslintrc/node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=6" + "node": ">=10.10.0" } }, - "node_modules/@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "dependencies": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">= 6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/@jest/core/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "node_modules/@jest/console": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", "dev": true, "dependencies": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", + "slash": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/@jimp/bmp": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", - "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "node_modules/@jest/core": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "bmp-js": "^0.1.0" + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", + "micromatch": "^4.0.4", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jimp/bmp/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jimp/bmp/node_modules/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 - }, - "node_modules/@jimp/core": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", - "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/core/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jimp/core/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/@jimp/core/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@jest/core/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/core/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "node_modules/@jimp/core/node_modules/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 - }, - "node_modules/@jimp/custom": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", - "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jimp/custom/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@jimp/custom/node_modules/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==", + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jimp/gif": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", - "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "node_modules/@jest/core/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/gif/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/gif/node_modules/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 - }, - "node_modules/@jimp/jpeg": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", - "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "node_modules/@jest/core/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1", - "jpeg-js": "0.4.2" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/@jimp/jpeg/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/@jimp/jpeg/node_modules/jpeg-js": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", - "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", - "dev": true - }, - "node_modules/@jimp/jpeg/node_modules/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 - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", - "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/plugin-blit/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/plugin-blit/node_modules/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==", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/environment": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.0.6", + "@sinonjs/fake-timers": "^7.0.2", + "@types/node": "*", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jimp/plugin-blur": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", - "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/plugin-blur/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jimp/plugin-blur/node_modules/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==", + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", + "dev": true, + "dependencies": { + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.0.6", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.0.6", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jimp/plugin-circle": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", - "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "node_modules/@jest/transform/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jimp/plugin-circle/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/@jimp/plugin-circle/node_modules/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==", + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@jest/types": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jimp/plugin-color": { + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jimp/bmp": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", - "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.1", - "tinycolor2": "^1.4.1" + "bmp-js": "^0.1.0" } }, - "node_modules/@jimp/plugin-color/node_modules/@babel/runtime": { + "node_modules/@jimp/bmp/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1849,23 +2491,32 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-color/node_modules/regenerator-runtime": { + "node_modules/@jimp/bmp/node_modules/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 }, - "node_modules/@jimp/plugin-contain": { + "node_modules/@jimp/core": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", - "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" } }, - "node_modules/@jimp/plugin-contain/node_modules/@babel/runtime": { + "node_modules/@jimp/core/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1874,23 +2525,45 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-contain/node_modules/regenerator-runtime": { + "node_modules/@jimp/core/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/@jimp/core/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@jimp/core/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "node_modules/@jimp/core/node_modules/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 }, - "node_modules/@jimp/plugin-cover": { + "node_modules/@jimp/custom": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", - "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "@jimp/core": "^0.16.1" } }, - "node_modules/@jimp/plugin-cover/node_modules/@babel/runtime": { + "node_modules/@jimp/custom/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1899,23 +2572,25 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-cover/node_modules/regenerator-runtime": { + "node_modules/@jimp/custom/node_modules/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 }, - "node_modules/@jimp/plugin-crop": { + "node_modules/@jimp/gif": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", - "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" } }, - "node_modules/@jimp/plugin-crop/node_modules/@babel/runtime": { + "node_modules/@jimp/gif/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1924,23 +2599,24 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-crop/node_modules/regenerator-runtime": { + "node_modules/@jimp/gif/node_modules/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 }, - "node_modules/@jimp/plugin-displace": { + "node_modules/@jimp/jpeg": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", - "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.1" + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" } }, - "node_modules/@jimp/plugin-displace/node_modules/@babel/runtime": { + "node_modules/@jimp/jpeg/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1949,23 +2625,29 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-displace/node_modules/regenerator-runtime": { + "node_modules/@jimp/jpeg/node_modules/jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==", + "dev": true + }, + "node_modules/@jimp/jpeg/node_modules/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 }, - "node_modules/@jimp/plugin-dither": { + "node_modules/@jimp/plugin-blit": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", - "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.1" } }, - "node_modules/@jimp/plugin-dither/node_modules/@babel/runtime": { + "node_modules/@jimp/plugin-blit/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1974,23 +2656,23 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-dither/node_modules/regenerator-runtime": { + "node_modules/@jimp/plugin-blit/node_modules/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 }, - "node_modules/@jimp/plugin-fisheye": { + "node_modules/@jimp/plugin-blur": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", - "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.1" } }, - "node_modules/@jimp/plugin-fisheye/node_modules/@babel/runtime": { + "node_modules/@jimp/plugin-blur/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -1999,23 +2681,23 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-fisheye/node_modules/regenerator-runtime": { + "node_modules/@jimp/plugin-blur/node_modules/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 }, - "node_modules/@jimp/plugin-flip": { + "node_modules/@jimp/plugin-circle": { "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", - "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", "@jimp/utils": "^0.16.1" } }, - "node_modules/@jimp/plugin-flip/node_modules/@babel/runtime": { + "node_modules/@jimp/plugin-circle/node_modules/@babel/runtime": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", @@ -2024,13 +2706,214 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/plugin-flip/node_modules/regenerator-runtime": { + "node_modules/@jimp/plugin-circle/node_modules/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 }, - "node_modules/@jimp/plugin-gaussian": { + "node_modules/@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/plugin-color/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-color/node_modules/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 + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-contain/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-contain/node_modules/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 + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-cover/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-cover/node_modules/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 + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-crop/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-crop/node_modules/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 + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-displace/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-displace/node_modules/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 + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-dither/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-dither/node_modules/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 + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-fisheye/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-fisheye/node_modules/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 + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "node_modules/@jimp/plugin-flip/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@jimp/plugin-flip/node_modules/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 + }, + "node_modules/@jimp/plugin-gaussian": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", @@ -2433,6 +3316,209 @@ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "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" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz", + "integrity": "sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz", + "integrity": "sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.1.tgz", + "integrity": "sha512-Qd2E1pleDR4bwyFxqbjt4eJf+wB0UKVMLc7/BAFDGVdAXQMCsD4DUv5/7/ww47BZCYxWtJqe1Lo0KVNswBJlRw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0", + "tslib": "*", + "typescript": ">=3.7.0" + } + }, + "node_modules/@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, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -2442,10 +3528,61 @@ "node": ">=4" } }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", + "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "dev": true + }, "node_modules/@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2456,18 +3593,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2475,9 +3612,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", - "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -2526,12 +3663,6 @@ "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", "dev": true }, - "node_modules/@types/core-js": { - "version": "0.9.46", - "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", - "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", - "dev": true - }, "node_modules/@types/cors": { "version": "2.8.10", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", @@ -2551,9 +3682,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -2584,44 +3715,205 @@ "@types/node": "*" } }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*", "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "24.0.18", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", - "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "dependencies": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@types/jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@types/jest/node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@types/jest-diff": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/jest-diff": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", - "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "node_modules/@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", "dev": true }, "node_modules/@types/karma": { @@ -2652,22 +3944,16 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", "dev": true }, - "node_modules/@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", - "dev": true - }, "node_modules/@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", "dev": true }, "node_modules/@types/node": { - "version": "11.13.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.2.tgz", - "integrity": "sha512-HOtU5KqROKT7qX/itKHuTtt5fV0iXbheQvrgbLNXFJQBY/eh+VS5vmmTAVlo3qIGMsypm0G4N1t2AXjy1ZicaQ==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.1.tgz", + "integrity": "sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -2677,9 +3963,15 @@ "dev": true }, "node_modules/@types/platform": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.2.tgz", - "integrity": "sha512-Tn6OuJDAG7bJbyi4R7HqcxXp1w2lmIxVXqyNhPt1Bm0FO2EWIi3CI87JVzF7ncqK0ZMPuUycS3wTMIk85EeF1Q==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.4.tgz", + "integrity": "sha512-U0o4K+GNiK0PNxoDwd8xRnvLVe4kzei6opn3/FCjAriqaP+rfrDdSl1kP/hLL6Y3/Y3hhGnBwD4dCkkAqs1W/Q==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "node_modules/@types/promise-polyfill": { @@ -2700,21 +3992,6 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", "dev": true }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/rimraf": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", - "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", - "dev": true - }, "node_modules/@types/serve-static": { "version": "1.13.9", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", @@ -2726,252 +4003,517 @@ } }, "node_modules/@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, "node_modules/@types/yargs": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", - "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", - "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.2.tgz", + "integrity": "sha512-PGqpLLzHSxq956rzNGasO3GsAPf2lY9lDUBXhS++SKonglUmJypaUtcKzRtUte8CV7nruwnDxtLUKpVxs0wQBw==", "dev": true, "dependencies": { - "@typescript-eslint/parser": "1.7.0", - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-utils": "^1.3.1", - "regexpp": "^2.0.1", - "requireindex": "^1.2.0", - "tsutils": "^3.7.0" + "@typescript-eslint/experimental-utils": "4.28.2", + "@typescript-eslint/scope-manager": "4.28.2", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", - "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.2.tgz", + "integrity": "sha512-MwHPsL6qo98RC55IoWWP8/opTykjTp4JzfPu1VfO2Z0MshNP0UZ1GEV5rYSSnZSUI8VD7iHvtIPVGW5Nfh7klQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.2", + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/typescript-estree": "4.28.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.2.tgz", + "integrity": "sha512-Q0gSCN51eikAgFGY+gnd5p9bhhCUAl0ERMiDKrTzpSoMYRubdB8MJrTTR/BBii8z+iFwz8oihxd0RAdP4l8w8w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.28.2", + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/typescript-estree": "4.28.2", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.2.tgz", + "integrity": "sha512-MqbypNjIkJFEFuOwPWNDjq0nqXAKZvDNNs9yNseoGBB1wYfz1G0WHC2AVOy4XD7di3KCcW3+nhZyN6zruqmp2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/visitor-keys": "4.28.2" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.2.tgz", + "integrity": "sha512-Gr15fuQVd93uD9zzxbApz3wf7ua3yk4ZujABZlZhaxxKY8ojo448u7XTm/+ETpy0V0dlMtj6t4VdDvdc0JmUhA==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", - "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.2.tgz", + "integrity": "sha512-86lLstLvK6QjNZjMoYUBMMsULFw0hPHJlk1fzhAVoNjDBuPVxiwvGuPQq3fsBMCxuDJwmX87tM/AXoadhHRljg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/visitor-keys": "4.28.2", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "lodash.unescape": "4.0.1", - "semver": "5.5.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.14.0" + "node": ">=10" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.2.tgz", + "integrity": "sha512-aT2B4PLyyRDUVUafXzpZFoc0C9t0za4BJAKP5sgWIhG+jHECQZUEjuQSCIwZdiJJ4w4cgu5r3Kh20SOdtEBl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.28.2", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" } }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "dependencies": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "node_modules/@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -2988,9 +4530,9 @@ "dev": true }, "node_modules/abab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", - "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, "node_modules/accepts": { @@ -3018,32 +4560,41 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, "node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -3064,6 +4615,41 @@ "node": ">=0.3.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/aggregate-error": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", @@ -3102,23 +4688,14 @@ "dev": true }, "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -3151,590 +4728,247 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "optional": true, "dependencies": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" } }, - "node_modules/anymatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "node_modules/appium-ios-simulator": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", + "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "async-lock": "^1.0.0", + "asyncbox": "^2.3.1", + "bluebird": "^3.5.1", + "fkill": "^5.0.0", + "lodash": "^4.2.1", + "node-simctl": "^4.0.0", + "openssl-wrapper": "^0.3.4", + "semver": "^5.5.0", + "shell-quote": "^1.6.1", + "source-map-support": "^0.5.3", + "teen_process": "^1.3.0" } }, - "node_modules/anymatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/appium-ios-simulator/node_modules/appium-support": { + "version": "2.53.0", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", + "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^4.1.2", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" } }, - "node_modules/anymatch/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/anymatch/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/anymatch/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/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 + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", + "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", "dev": true, + "engines": [ + "node" + ], "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/appium-ios-simulator/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/appium-ios-simulator/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/appium-ios-simulator/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/appium-ios-simulator/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/appium-ios-simulator/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/anymatch/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/appium-ios-simulator/node_modules/node-simctl": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", + "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/appium-ios-simulator": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", - "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "async-lock": "^1.0.0", - "asyncbox": "^2.3.1", - "bluebird": "^3.5.1", - "fkill": "^5.0.0", - "lodash": "^4.2.1", - "node-simctl": "^4.0.0", - "openssl-wrapper": "^0.3.4", - "semver": "^5.5.0", - "shell-quote": "^1.6.1", - "source-map-support": "^0.5.3", - "teen_process": "^1.3.0" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-support": { - "version": "2.53.0", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", - "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "archiver": "^5.0.0", - "axios": "^0.x", - "base64-stream": "^1.0.0", - "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.x", - "form-data": "^4.0.0", - "get-stream": "^6.0.0", - "glob": "^7.1.2", - "jimp": "^0.x", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", - "lodash": "^4.2.1", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", - "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^6.0.0", - "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "shell-quote": "^1.7.2", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1", - "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/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 - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/appium-ios-simulator/node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/appium-ios-simulator/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/appium-ios-simulator/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/appium-ios-simulator/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/appium-ios-simulator/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/appium-ios-simulator/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/appium-ios-simulator/node_modules/node-simctl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", - "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "asyncbox": "^2.3.1", - "lodash": "^4.2.1", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1" + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "appium-xcode": "^3.1.0", + "asyncbox": "^2.3.1", + "lodash": "^4.2.1", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1" } }, "node_modules/appium-ios-simulator/node_modules/pngjs": { @@ -3746,27 +4980,6 @@ "node": ">=12.13.0" } }, - "node_modules/appium-ios-simulator/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/appium-ios-simulator/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/appium-ios-simulator/node_modules/teen_process": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", @@ -3965,12 +5178,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, "node_modules/array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -4010,6 +5217,15 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -4035,22 +5251,30 @@ "dev": true }, "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "dependencies": { + "object-assign": "^4.1.1", "util": "0.10.3" } }, @@ -4097,12 +5321,12 @@ } }, "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/async": { @@ -4133,12 +5357,6 @@ "integrity": "sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ==", "dev": true }, - "node_modules/async/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/asyncbox": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/asyncbox/-/asyncbox-2.5.2.tgz", @@ -4162,9 +5380,9 @@ "dev": true }, "node_modules/atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true, "bin": { "atob": "bin/atob.js" @@ -4209,33 +5427,12 @@ "dev": true }, "node_modules/axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "dev": true, - "dependencies": { - "follow-redirects": "1.5.10" - } - }, - "node_modules/axios/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/axios/node_modules/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==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "dev": true, "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" + "follow-redirects": "^1.10.0" } }, "node_modules/babel-eslint": { @@ -4269,170 +5466,126 @@ } }, "node_modules/babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", "dev": true, "dependencies": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.0.6", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/babel-jest/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6.9" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/babel-loader/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/babel-loader/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-loader/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", "dev": true, "dependencies": { - "find-up": "^3.0.0" + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/babel-loader/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">= 6.9" } }, "node_modules/babel-plugin-add-module-exports": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", - "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", - "dev": true, - "optionalDependencies": { - "chokidar": "^2.0.4" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true }, "node_modules/babel-plugin-dev-expression": { "version": "0.2.1", @@ -4441,101 +5594,73 @@ "dev": true }, "node_modules/babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/babel-plugin-jest-hoist": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", + "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/babel-plugin-istanbul/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "dev": true, - "dependencies": { - "@types/babel__traverse": "^7.0.6" + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", + "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", "dev": true, "dependencies": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "babel-plugin-jest-hoist": "^27.0.6", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/babel-runtime": { @@ -4627,19 +5752,10 @@ "node": ">=0.10.0" } }, - "node_modules/base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -4700,9 +5816,9 @@ } }, "node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { "node": "*" @@ -4719,9 +5835,9 @@ } }, "node_modules/bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dev": true, "dependencies": { "readable-stream": "^2.3.5", @@ -4729,9 +5845,9 @@ } }, "node_modules/bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "node_modules/bmp-js": { @@ -4741,9 +5857,9 @@ "dev": true }, "node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "node_modules/body-parser": { @@ -4860,24 +5976,9 @@ "dev": true }, "node_modules/browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "node_modules/browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "dependencies": { - "resolve": "1.1.7" - } - }, - "node_modules/browser-resolve/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, "node_modules/browser-stdout": { @@ -4924,30 +6025,72 @@ } }, "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "dependencies": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "node_modules/browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "dependencies": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, + "node_modules/browserify-sign/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -4957,6 +6100,29 @@ "pako": "~1.0.5" } }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, "node_modules/bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", @@ -4970,9 +6136,9 @@ } }, "node_modules/bser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", - "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { "node-int64": "^0.4.0" @@ -5066,42 +6232,73 @@ } }, "node_modules/cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "dependencies": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" } }, + "node_modules/cacache/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, "node_modules/cacache/node_modules/rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "glob": "^7.0.5" + "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" } }, - "node_modules/cacache/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/cache-base": { @@ -5124,15 +6321,6 @@ "node": ">=0.10.0" } }, - "node_modules/cache-base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", @@ -5258,21 +6446,13 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30000957", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", - "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", - "dev": true - }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", "dev": true, - "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/caseless": { @@ -5312,11 +6492,14 @@ "node": ">=4" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/check-error": { "version": "1.0.2", @@ -5328,492 +6511,177 @@ } }, "node_modules/chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "dev": true, - "optional": true, - "dependencies": { - "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" - } - }, - "node_modules/chokidar/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, - "optional": true, "dependencies": { - "is-buffer": "^1.1.5" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "node": ">= 8.10.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/chokidar/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/chokidar/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "optional": true, "dependencies": { - "is-extendable": "^0.1.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/chokidar/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/chokidar/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "optional": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/chokidar/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/chokidar/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, "dependencies": { - "is-descriptor": "^1.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/chokidar/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/chokidar/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/chokidar/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/chokidar/node_modules/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==", + "node_modules/chokidar/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "optional": true, "dependencies": { - "is-extglob": "^2.1.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/chokidar/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/chokidar/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/chokidar/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/chokidar/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/chokidar/node_modules/micromatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-launcher": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.7.tgz", + "integrity": "sha512-IoQLp64s2n8OQuvKZwt77CscVj3UlV2Dj7yZtd1EBMld9mSdGcsGy9fN5hd/r4vJuWZR09it78n1+A17gB+AIQ==", "dev": true, - "optional": true, "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" } }, - "node_modules/chokidar/node_modules/micromatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/chrome-launcher/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, - "optional": true, "dependencies": { - "is-plain-object": "^2.0.4" + "minimist": "0.0.8" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/chokidar/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "node_modules/chrome-launcher/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "optional": true, "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "glob": "^7.1.3" }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/chokidar/node_modules/upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4", - "yarn": "*" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, "node_modules/chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { "node": ">=6.0" } @@ -5837,28 +6705,6 @@ "node": ">= 6.10.0" } }, - "node_modules/chromeless/node_modules/@types/node": { - "version": "9.6.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz", - "integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==", - "dev": true - }, - "node_modules/chromeless/node_modules/chrome-launcher": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.5.tgz", - "integrity": "sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g==", - "dev": true, - "dependencies": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" - } - }, "node_modules/chromeless/node_modules/chrome-remote-interface": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz", @@ -5915,18 +6761,6 @@ "node": ">=4" } }, - "node_modules/chromeless/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/chromeless/node_modules/p-cancelable": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", @@ -5981,9 +6815,9 @@ } }, "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, "node_modules/cipher-base": { @@ -5996,6 +6830,12 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/cjs-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz", + "integrity": "sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==", + "dev": true + }, "node_modules/class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -6023,15 +6863,6 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-stack": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", @@ -6041,54 +6872,50 @@ "node": ">=4" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "node_modules/cliui": { + "node_modules/cliui/node_modules/ansi-regex": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/cliui/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/clone-response": { @@ -6119,6 +6946,12 @@ "node": ">=0.10.0" } }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -6147,6 +6980,12 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -6287,13 +7126,10 @@ } }, "node_modules/console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "dependencies": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "node_modules/console-control-strings": { "version": "1.1.0", @@ -6663,12 +7499,6 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-core/node_modules/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==", - "dev": true - }, "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", @@ -6763,16 +7593,6 @@ "node": ">= 6" } }, - "node_modules/conventional-changelog-core/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "node_modules/conventional-changelog-core/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -6821,15 +7641,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/conventional-changelog-core/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-changelog-ember": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", @@ -7080,12 +7891,6 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/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==", - "dev": true - }, "node_modules/conventional-changelog-writer/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -7174,16 +7979,6 @@ "node": ">= 6" } }, - "node_modules/conventional-changelog-writer/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "node_modules/conventional-changelog-writer/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -7217,15 +8012,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-commits-filter": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", @@ -7388,12 +8174,6 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/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==", - "dev": true - }, "node_modules/conventional-commits-parser/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -7482,16 +8262,6 @@ "node": ">= 6" } }, - "node_modules/conventional-commits-parser/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "node_modules/conventional-commits-parser/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -7540,15 +8310,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/conventional-commits-parser/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-recommended-bump": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.0.9.tgz", @@ -7601,9 +8362,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "dependencies": { "safe-buffer": "~5.1.1" @@ -7638,6 +8399,18 @@ "run-queue": "^1.0.0" } }, + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -7659,20 +8432,6 @@ "semver": "^6.0.0" } }, - "node_modules/core-js-compat/node_modules/browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" - }, - "bin": { - "browserslist": "cli.js" - } - }, "node_modules/core-js-compat/node_modules/core-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", @@ -7701,16 +8460,16 @@ "dev": true }, "node_modules/cors": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", - "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "dependencies": { "object-assign": "^4", "vary": "^1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, "node_modules/crc-32": { @@ -7757,15 +8516,21 @@ } }, "node_modules/create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "dependencies": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" } }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -7793,6 +8558,12 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -7845,20 +8616,29 @@ } }, "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "node_modules/cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" } }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, "node_modules/csv-parser": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-1.12.1.tgz", @@ -7907,6 +8687,16 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "node_modules/dargs": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", @@ -7931,35 +8721,18 @@ "node": ">=0.10" } }, - "node_modules/dashdash/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/date-format": { @@ -7971,12 +8744,6 @@ "node": ">=4.0" } }, - "node_modules/date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -8026,6 +8793,12 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -8047,6 +8820,12 @@ "node": ">=4" } }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "node_modules/deep-eql": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", @@ -8074,6 +8853,15 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -8137,15 +8925,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/define-property/node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -8180,9 +8959,9 @@ } }, "node_modules/des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -8214,12 +8993,12 @@ } }, "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/di": { @@ -8229,21 +9008,21 @@ "dev": true }, "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/diffie-hellman": { @@ -8257,6 +9036,33 @@ "randombytes": "^2.0.0" } }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -8298,12 +9104,24 @@ } }, "node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "dependencies": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/dot-prop": { @@ -8436,9 +9254,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", - "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", + "version": "1.3.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz", + "integrity": "sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==", "dev": true }, "node_modules/elliptic": { @@ -8468,6 +9286,18 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, "node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -8475,12 +9305,12 @@ "dev": true }, "node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 4" } }, "node_modules/encodeurl": { @@ -8540,19 +9370,6 @@ "node": ">= 0.6.0" } }, - "node_modules/engine.io/node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/engine.io/node_modules/debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -8577,9 +9394,9 @@ "dev": true }, "node_modules/engine.io/node_modules/ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true, "engines": { "node": ">=8.3.0" @@ -8598,19 +9415,44 @@ } }, "node_modules/enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -8669,6 +9511,42 @@ "node": ">= 0.4" } }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "node_modules/es6-mapify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-mapify/-/es6-mapify-1.1.0.tgz", @@ -8682,9 +9560,9 @@ } }, "node_modules/es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "node_modules/es6-promisify": { @@ -8696,6 +9574,39 @@ "es6-promise": "^4.0.3" } }, + "node_modules/es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-set/node_modules/es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -8721,13 +9632,13 @@ } }, "node_modules/escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "dependencies": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", + "esprima": "^4.0.1", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1" }, @@ -8736,23 +9647,19 @@ "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { - "node": ">=4" + "node": ">=4.0" } }, "node_modules/escodegen/node_modules/source-map": { @@ -8766,86 +9673,93 @@ } }, "node_modules/eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.2.0.tgz", - "integrity": "sha512-y0uWc/FRfrHhpPZCYflWC8aE0KRJRY04rdZVfl8cL3sEZmOYyaBdhdlQPjKZBnuRMyLVK+JUZr7HaZFClQiH4w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, - "dependencies": { - "get-stdin": "^6.0.0" - }, "bin": { - "eslint-config-prettier-check": "bin/cli.js" - } - }, - "node_modules/eslint-config-prettier/node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true, - "engines": { - "node": ">=4" + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-prettier": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz", - "integrity": "sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, "node_modules/eslint-scope": { @@ -8862,26 +9776,50 @@ } }, "node_modules/eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" } }, "node_modules/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "engines": { "node": ">=4" } }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/eslint/node_modules/ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", @@ -8894,29 +9832,82 @@ "uri-js": "^4.2.2" } }, + "node_modules/eslint/node_modules/ajv/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, "node_modules/eslint/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/eslint/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" + "node": ">= 8" } }, "node_modules/eslint/node_modules/debug": { @@ -8928,63 +9919,274 @@ "ms": "^2.1.1" } }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint/node_modules/ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/eslint/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "engines": { - "node": ">=6.0.0" + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "bin": { "esparse": "bin/esparse.js", @@ -8995,29 +10197,47 @@ } }, "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -9028,9 +10248,9 @@ } }, "node_modules/estree-walker": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", - "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, "node_modules/esutils": { @@ -9051,6 +10271,16 @@ "node": ">= 0.6" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -9070,67 +10300,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exec-sh": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", - "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", - "dev": true - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -9210,20 +10379,32 @@ } }, "node_modules/expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" + "@jest/types": "^27.0.6", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/express": { @@ -9282,6 +10463,21 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", + "dev": true + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -9313,20 +10509,6 @@ "node": ">=0.10.0" } }, - "node_modules/external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -9409,9 +10591,9 @@ } }, "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9438,77 +10620,148 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "dependencies": { - "bser": "^2.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "node_modules/fast-glob/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "node_modules/fast-glob/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "node_modules/fast-glob/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/filename-reserved-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", - "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/filenamify": { - "version": "1.2.1", + "node_modules/fast-glob/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify": { + "version": "1.2.1", "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", "dev": true, @@ -9580,17 +10833,17 @@ } }, "node_modules/find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "dependencies": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/find-up": { @@ -9671,61 +10924,33 @@ "node": ">=4" } }, - "node_modules/fkill/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/flat/node_modules/is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/flat-cache/node_modules/flatted": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", + "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", + "dev": true }, "node_modules/flatted": { "version": "2.0.2", @@ -9744,32 +10969,25 @@ } }, "node_modules/follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", "dev": true, - "dependencies": { - "debug": "^3.2.6" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/follow-redirects/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/follow-redirects/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -9870,12 +11088,12 @@ "dev": true }, "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" }, @@ -10713,11 +11931,23 @@ "is-property": "^1.0.0" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, "node_modules/get-func-name": { "version": "2.0.0", @@ -10728,6 +11958,15 @@ "node": "*" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/get-pkg-repo": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", @@ -11002,15 +12241,6 @@ "assert-plus": "^1.0.0" } }, - "node_modules/getpass/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/gifwrap": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.2.tgz", @@ -11342,12 +12572,6 @@ "node": ">=8" } }, - "node_modules/git-semver-tags/node_modules/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==", - "dev": true - }, "node_modules/git-semver-tags/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -11422,16 +12646,6 @@ "node": ">=8" } }, - "node_modules/git-semver-tags/node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "node_modules/git-semver-tags/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -11456,15 +12670,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/git-semver-tags/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/gitconfiglocal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", @@ -11492,9 +12697,9 @@ } }, "node_modules/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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -11534,15 +12739,6 @@ "path-dirname": "^1.0.0" } }, - "node_modules/glob-stream/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob-stream/node_modules/is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", @@ -11626,12 +12822,68 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/graceful-fs": { @@ -11649,12 +12901,6 @@ "node": ">=4.x" } }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -11791,15 +13037,6 @@ "node": ">=0.10.0" } }, - "node_modules/has-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", @@ -11813,54 +13050,71 @@ "node": ">=0.10.0" } }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/hash-base/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/hash.js": { "version": "1.1.7", @@ -11917,18 +13171,21 @@ } }, "node_modules/hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" } }, "node_modules/html-escaper": { @@ -11947,6 +13204,19 @@ "request": "2.87.0" } }, + "node_modules/html2canvas-proxy/node_modules/cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", @@ -11982,6 +13252,43 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/http-proxy/node_modules/eventemitter3": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", @@ -12049,6 +13356,15 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/humanize-url": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", @@ -12111,9 +13427,9 @@ "dev": true }, "node_modules/import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { "parent-module": "^1.0.0", @@ -12121,6 +13437,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-local": { @@ -12139,76 +13458,6 @@ "node": ">=6" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -12227,12 +13476,6 @@ "node": ">=4" } }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -12261,51 +13504,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -12346,15 +13544,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -12445,12 +13634,12 @@ } }, "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", "dev": true, "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.1.1" }, "bin": { "is-ci": "bin.js" @@ -12650,19 +13839,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-plain-object/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, "node_modules/is-property": { @@ -12671,6 +13851,15 @@ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, + "node_modules/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, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -12755,6 +13944,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -12819,30 +14020,27 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "dependencies": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { @@ -12855,98 +14053,93 @@ } }, "node_modules/istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "dependencies": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", + "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "ms": "2.1.2" }, "engines": { - "node": ">=6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/istanbul-lib-source-maps/node_modules/ms": { @@ -12955,36 +14148,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/istanbul-lib-source-maps/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12995,15 +14158,16 @@ } }, "node_modules/istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/isurl": { @@ -13020,526 +14184,488 @@ } }, "node_modules/jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", "dev": true, "dependencies": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" + "@jest/core": "^27.0.6", + "import-local": "^3.0.2", + "jest-cli": "^27.0.6" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, "node_modules/jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "@jest/types": "^27.0.6", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" + "node": ">= 8" } }, "node_modules/jest-changed-files/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/jest-changed-files/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "detect-newline": "^2.1.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "node_modules/jest-changed-files/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "node_modules/jest-changed-files/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "node_modules/jest-changed-files/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "node_modules/jest-changed-files/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "isexe": "^2.0.0" }, - "engines": { - "node": ">= 6" + "bin": { + "node-which": "bin/node-which" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">= 8" } }, - "node_modules/jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "node_modules/jest-circus": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^24.9.0", + "dedent": "^0.7.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "node_modules/jest-circus/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "node_modules/jest-cli": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", "dev": true, + "dependencies": { + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "prompts": "^2.0.1", + "yargs": "^16.0.3" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "node_modules/jest-cli/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "node_modules/jest-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - }, - "engines": { - "node": ">= 6" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "dev": true, - "dependencies": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-regex": { + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/jest-cli/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/jest-runtime/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/jest-cli/node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jest-cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/jest-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "node_modules/jest-cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/jest-cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/p-try": { + "node_modules/jest-cli/node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", @@ -13548,934 +14674,863 @@ "node": ">=6" } }, - "node_modules/jest-runtime/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/jest-cli/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/jest-cli/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/jest-cli/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/jest-cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "node_modules/jest-cli/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "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.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "node_modules/jest-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "node_modules/jest-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/jest-config": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/jest-config/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-util/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/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==", + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "node_modules/jest-config/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jest-config/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 6" + "node": ">=8.6" } }, - "node_modules/jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/jest-config/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=8.0" } }, - "node_modules/jest/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/jest-diff": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/jest/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=8" } }, - "node_modules/jest/node_modules/jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" + "has-flag": "^4.0.0" }, - "bin": { - "jest": "bin/jest.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/jest-each": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/jest/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/jest-environment-jsdom": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", + "jsdom": "^16.6.0" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/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==", - "dev": true - }, - "node_modules/jest/node_modules/yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "node_modules/jest-environment-node": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest/node_modules/yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "node_modules/jest-get-type": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jimp": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", - "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "node_modules/jest-haste-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", "dev": true, "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.1", - "@jimp/plugins": "^0.16.1", - "@jimp/types": "^0.16.1", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jimp/node_modules/@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - } - }, - "node_modules/jimp/node_modules/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 - }, - "node_modules/jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", - "dev": true, + "@jest/types": "^27.0.6", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, "engines": { - "node": ">= 0.6.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", - "dev": true - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "node_modules/jest-haste-map/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/js-polyfills": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/js-polyfills/-/js-polyfills-0.1.42.tgz", - "integrity": "sha1-XUhJArNh489gH9I60PMLr8yT8Ug=", - "dev": true - }, - "node_modules/js-tokens": { + "node_modules/jest-haste-map/node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "node_modules/jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/jsdom/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/jsftp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/jsftp/-/jsftp-2.1.3.tgz", - "integrity": "sha512-r79EVB8jaNAZbq8hvanL8e8JGu2ZNr2bXdHC4ZdQhRImpSPpnWwm5DYVzQ5QxJmtGtKhNNuvqGgbNaFl604fEQ==", + "node_modules/jest-haste-map/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "debug": "^3.1.0", - "ftp-response-parser": "^1.0.1", - "once": "^1.4.0", - "parse-listing": "^1.1.3", - "stream-combiner": "^0.2.2", - "unorm": "^1.4.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/jsftp/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "node": ">=8" } }, - "node_modules/jsftp/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "node_modules/jest-haste-map/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "dependencies": { - "jsonify": "~0.0.0" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/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=", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "node_modules/jest-haste-map/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "node_modules/jest-haste-map/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.6" + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "node_modules/jest-haste-map/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/jest-haste-map/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "is-number": "^7.0.0" }, "engines": { - "node": "*" + "node": ">=8.0" } }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "node_modules/jest-jasmine2": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/jsprim/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "throat": "^6.0.1" + }, "engines": { - "node": ">=0.8" - } - }, - "node_modules/jszip": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", - "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/karma": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", - "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.4.2", - "colors": "^1.4.0", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.6", - "graceful-fs": "^4.2.4", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.6", - "lodash": "^4.17.19", - "log4js": "^6.2.1", - "mime": "^2.4.5", - "minimatch": "^3.0.4", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^3.1.0", - "source-map": "^0.6.1", - "tmp": "0.2.1", - "ua-parser-js": "^0.7.23", - "yargs": "^16.1.1" - }, - "bin": { - "karma": "bin/karma" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "which": "^1.2.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/karma-edge-launcher": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", - "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "edge-launcher": "1.2.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/karma-firefox-launcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.0.tgz", - "integrity": "sha512-dkiyqN2R6fCWt78rciOXJLFDWcQ7QEQi++HgebPJlw1y0ycDjGNDHuSrhdh48QG02fzZKK20WHFWVyBZ6CPngg==", + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-wsl": "^2.2.0", - "which": "^2.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/karma-firefox-launcher/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/karma-firefox-launcher/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/jest-leak-detector": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" }, "engines": { - "node": ">= 8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/karma-ie-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", - "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", + "node_modules/jest-matcher-utils": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", "dev": true, "dependencies": { - "lodash": "^4.6.1" + "chalk": "^4.0.0", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/karma-junit-reporter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", - "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "path-is-absolute": "^1.0.0", - "xmlbuilder": "12.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" }, - "peerDependencies": { - "karma": ">=0.9" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma-junit-reporter/node_modules/xmlbuilder": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", - "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/karma-mocha": { + "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "minimist": "^1.2.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/karma-mocha/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/karma-safarinative-launcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-safarinative-launcher/-/karma-safarinative-launcher-1.1.0.tgz", - "integrity": "sha512-vdMjdQDHkSUbOZc8Zq2K5bBC0yJGFEgfrKRJTqt0Um0SC1Rt8drS2wcN6UA3h4LgsL3f1pMcmRSvKucbJE8Qdg==", - "dev": true + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/karma-sauce-launcher": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz", - "integrity": "sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "sauce-connect-launcher": "^1.2.4", - "saucelabs": "^1.5.0", - "selenium-webdriver": "^4.0.0-alpha.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/jest-message-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.0.6", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/karma/node_modules/ansi-styles": { + "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -14490,29 +15545,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/karma/node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/karma/node_modules/braces": { + "node_modules/jest-message-util/node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", @@ -14524,39 +15557,23 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/karma/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/karma/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -14568,19 +15585,13 @@ "node": ">=7.0.0" } }, - "node_modules/karma/node_modules/color-name": { + "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/karma/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/karma/node_modules/fill-range": { + "node_modules/jest-message-util/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", @@ -14592,143 +15603,465 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/jest-message-util/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=0.12.0" } }, - "node_modules/karma/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/jest-message-util/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": "*" + "node": ">=8.6" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/jest-mock": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.0.6", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/karma/node_modules/is-fullwidth-code-point": { + "node_modules/jest-resolve/node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/karma/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "node_modules/jest-runner": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/karma/node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "mime": "cli.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/jest-runtime": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "dev": true, + "dependencies": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-runtime/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/karma/node_modules/string-width": { + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", @@ -14742,7 +16075,7 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/strip-ansi": { + "node_modules/jest-runtime/node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", @@ -14754,31 +16087,28 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/karma/node_modules/wrap-ansi": { + "node_modules/jest-runtime/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", @@ -14795,7 +16125,7 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/karma/node_modules/y18n": { + "node_modules/jest-runtime/node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", @@ -14804,7 +16134,7 @@ "node": ">=10" } }, - "node_modules/karma/node_modules/yargs": { + "node_modules/jest-runtime/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", @@ -14822,573 +16152,506 @@ "node": ">=10" } }, - "node_modules/keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "node_modules/jest-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", "dev": true, "dependencies": { - "json-buffer": "3.0.0" + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-snapshot": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "natural-compare": "^1.4.0", + "pretty-format": "^27.0.6", + "semver": "^7.3.2" }, "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "readable-stream": "^2.0.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.6.3" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "invert-kv": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/leven": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", - "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "leven": "cli.js" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "immediate": "~3.0.5" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/lighthouse-logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.0.1.tgz", - "integrity": "sha1-8HPYP3rLyWcpvxAKEhyPAGmRrmE=", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "debug": "^2.6.8" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/load-bmfont": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", - "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "node_modules/jest-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", "dev": true, "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/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=", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=7.0.0" } }, - "node_modules/loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/lockfile": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", - "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", - "dev": true, - "dependencies": { - "signal-exit": "^3.0.2" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.unescape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/jest-validate": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", "dev": true, "dependencies": { - "chalk": "^2.0.1" + "@jest/types": "^27.0.6", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "leven": "^3.1.0", + "pretty-format": "^27.0.6" }, "engines": { - "node": ">=4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log4js/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log4js/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "js-tokens": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "engines": { + "node": ">=8" } }, - "node_modules/magic-string": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", - "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "node_modules/jest-validate/node_modules/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, - "dependencies": { - "sourcemap-codec": "^1.4.4" + "engines": { + "node": ">=6" } }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" + "node": ">=8" } }, - "node_modules/mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "node_modules/jest-watcher": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", "dev": true, "dependencies": { - "p-defer": "^1.0.0" + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.0.6", + "string-length": "^4.0.1" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "object-visit": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/jest-watcher/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", - "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "node_modules/jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "arrify": "^2.0.1", - "camelcase": "^6.0.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" } }, - "node_modules/meow/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/meow/node_modules/camelcase": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", - "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/meow/node_modules/find-up": { + "node_modules/jest/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", @@ -15401,31 +16664,35 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/jest/node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { "node": ">=8" } }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/jest/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/meow/node_modules/p-limit": { + "node_modules/jest/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", @@ -15435,9 +16702,12 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/p-locate": { + "node_modules/jest/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", @@ -15449,7 +16719,7 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/p-try": { + "node_modules/jest/node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", @@ -15458,7 +16728,7 @@ "node": ">=6" } }, - "node_modules/meow/node_modules/path-exists": { + "node_modules/jest/node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", @@ -15467,710 +16737,2215 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/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==", - "dev": true - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/jest/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/jest/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/jest/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" } }, - "node_modules/meow/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/jimp/node_modules/@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", "dev": true, "dependencies": { - "path-parse": "^1.0.6" + "regenerator-runtime": "^0.13.4" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/jimp/node_modules/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 + }, + "node_modules/jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.6.0" } }, - "node_modules/meow/node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "node_modules/js-polyfills": { + "version": "0.1.42", + "resolved": "https://registry.npmjs.org/js-polyfills/-/js-polyfills-0.1.42.tgz", + "integrity": "sha1-XUhJArNh489gH9I60PMLr8yT8Ug=", "dev": true }, - "node_modules/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==", + "node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "node_modules/jsdom": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", + "xml-name-validator": "^3.0.0" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/jsdom/node_modules/acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true, "bin": { - "mime": "cli.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true, - "engines": { - "node": ">= 0.6" + "node": ">=0.4.0" } }, - "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "node_modules/jsdom/node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "mime-db": "1.47.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-response": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", - "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", - "dev": true, - "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "node_modules/jsdom/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/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==", - "dev": true, + "ms": "2.1.2" + }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": "*" + "node": ">= 6" } }, - "node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "agent-base": "6", + "debug": "4" }, "engines": { "node": ">= 6" } }, - "node_modules/minimist-options/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/jsdom/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/jsdom/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", "dev": true, "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=6" } }, - "node_modules/mississippi/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "node_modules/jsftp": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/jsftp/-/jsftp-2.1.3.tgz", + "integrity": "sha512-r79EVB8jaNAZbq8hvanL8e8JGu2ZNr2bXdHC4ZdQhRImpSPpnWwm5DYVzQ5QxJmtGtKhNNuvqGgbNaFl604fEQ==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "debug": "^3.1.0", + "ftp-response-parser": "^1.0.1", + "once": "^1.4.0", + "parse-listing": "^1.1.3", + "stream-combiner": "^0.2.2", + "unorm": "^1.4.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node_modules/jsftp/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "ms": "^2.1.1" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { + "node_modules/jsftp/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "node_modules/json-stable-stringify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "jsonify": "~0.0.0" } }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/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=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.0" }, "bin": { - "mkdirp": "bin/cmd.js" + "json5": "lib/cli.js" } }, - "node_modules/mkdirp/node_modules/minimist": { + "node_modules/json5/node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "node_modules/mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 6.0.0" + "graceful-fs": "^4.1.6" } }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "node_modules/jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/mocha/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true, - "engines": { - "node": ">=6" - } + "engines": [ + "node >= 0.2.0" + ] }, - "node_modules/mocha/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" }, "engines": { - "node": ">=4.8" + "node": "*" } }, - "node_modules/mocha/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { - "ms": "^2.1.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "node_modules/mocha/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/jszip": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" } }, - "node_modules/mocha/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/karma": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" }, "engines": { - "node": ">=6" + "node": ">= 10" } }, - "node_modules/mocha/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" + "dependencies": { + "which": "^1.2.1" } }, - "node_modules/mocha/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/karma-edge-launcher": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", + "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "edge-launcher": "1.2.2" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/karma-firefox-launcher": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.0.tgz", + "integrity": "sha512-dkiyqN2R6fCWt78rciOXJLFDWcQ7QEQi++HgebPJlw1y0ycDjGNDHuSrhdh48QG02fzZKK20WHFWVyBZ6CPngg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "is-wsl": "^2.2.0", + "which": "^2.0.1" } }, - "node_modules/mocha/node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "node_modules/karma-firefox-launcher/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/mocha/node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "node_modules/karma-firefox-launcher/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "invert-kv": "^2.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/mocha/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/karma-ie-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", + "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" + "lodash": "^4.6.1" } }, - "node_modules/mocha/node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "node_modules/karma-junit-reporter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", + "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", "dev": true, "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "path-is-absolute": "^1.0.0", + "xmlbuilder": "12.0.0" }, "engines": { - "node": ">=6" + "node": ">= 8" + }, + "peerDependencies": { + "karma": ">=0.9" } }, - "node_modules/mocha/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/karma-junit-reporter/node_modules/xmlbuilder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", + "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=6.0" } }, - "node_modules/mocha/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "node_modules/karma-mocha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", "dev": true, "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "minimist": "^1.2.3" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "node_modules/karma-mocha/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "node_modules/mocha/node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "node_modules/karma-safarinative-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-safarinative-launcher/-/karma-safarinative-launcher-1.1.0.tgz", + "integrity": "sha512-vdMjdQDHkSUbOZc8Zq2K5bBC0yJGFEgfrKRJTqt0Um0SC1Rt8drS2wcN6UA3h4LgsL3f1pMcmRSvKucbJE8Qdg==", + "dev": true + }, + "node_modules/karma-sauce-launcher": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz", + "integrity": "sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA==", "dev": true, "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "sauce-connect-launcher": "^1.2.4", + "saucelabs": "^1.5.0", + "selenium-webdriver": "^4.0.0-alpha.1" }, "engines": { - "node": ">=6" + "node": ">= 8.9.0" } }, - "node_modules/mocha/node_modules/p-limit": { + "node_modules/karma/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/karma/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/karma/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/karma/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/karma/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/karma/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/leven": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM=", + "dev": true, + "bin": { + "leven": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.0.1.tgz", + "integrity": "sha1-8HPYP3rLyWcpvxAKEhyPAGmRrmE=", + "dev": true, + "dependencies": { + "debug": "^2.6.8" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-bmfont": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "dev": true, + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/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, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "dev": true, + "dependencies": { + "signal-exit": "^3.0.2" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "dependencies": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/log4js/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/log4js/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/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, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "dependencies": { + "tmpl": "1.0.x" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", + "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "arrify": "^2.0.1", + "camelcase": "^6.0.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "dependencies": { + "mime-db": "1.47.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mocha": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.2.tgz", + "integrity": "sha512-FpspiWU+UT9Sixx/wKimvnpkeW0mh6ROAKkIaPokj3xZgxeRhcna/k5X57jJghEr8X+Cgu/Vegf8zCX5ugSuTA==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.2", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.7", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "3.0.4", + "ms": "2.1.3", + "nanoid": "3.1.23", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.1.5", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/mocha/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/mocha/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/mocha/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/mocha/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "semver": "bin/semver" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/mocha/node_modules/string-width": { + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/mocha/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/mocha/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/mocha/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/mocha/node_modules/yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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.0.0" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/mocha/node_modules/yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=10" } }, "node_modules/modify-values": { @@ -16205,15 +18980,28 @@ "run-queue": "^1.0.3" } }, + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/mqtt": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.2.tgz", - "integrity": "sha512-egP6gbLES2aELu6LNtwOtpC779Hu7LVTYm6HKE5wJdTuX2jZ4JOOtK7HS2JWyW6IfKN5U99u/VU155tLwFAKbQ==", + "version": "2.18.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.8.tgz", + "integrity": "sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA==", "dev": true, "dependencies": { "commist": "^1.0.0", "concat-stream": "^1.6.2", "end-of-stream": "^1.4.1", + "es6-map": "^0.1.5", "help-me": "^1.0.1", "inherits": "^2.0.3", "minimist": "^1.2.0", @@ -16258,12 +19046,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "node_modules/mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -16313,6 +19095,18 @@ "dev": true, "optional": true }, + "node_modules/nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -16335,24 +19129,6 @@ "node": ">=0.10.0" } }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nanomatch/node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -16447,9 +19223,15 @@ } }, "node_modules/neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "node_modules/nice-try": { @@ -16458,25 +19240,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16484,9 +19247,9 @@ "dev": true }, "node_modules/node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "dependencies": { "assert": "^1.1.1", @@ -16499,7 +19262,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -16511,13 +19274,13 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" } }, "node_modules/node-libs-browser/node_modules/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { "node": ">=0.8.x" @@ -16542,45 +19305,11 @@ "node": ">=0.10.0" } }, - "node_modules/node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/node-releases": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", - "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", - "dev": true, - "dependencies": { - "semver": "^5.3.0" - } - }, - "node_modules/node-releases/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true }, "node_modules/node-simctl": { "version": "5.3.0", @@ -16759,18 +19488,6 @@ "node": ">=12.13.0" } }, - "node_modules/node-simctl/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/node-simctl/node_modules/semver": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", @@ -16849,6 +19566,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -16914,9 +19632,9 @@ } }, "node_modules/nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, "node_modules/oauth-sign": { @@ -16984,30 +19702,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-visit/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -17033,15 +19727,6 @@ "node": ">=0.10.0" } }, - "node_modules/object.pick/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/omggif": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", @@ -17069,18 +19754,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/openssl-wrapper": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/openssl-wrapper/-/openssl-wrapper-0.3.4.tgz", @@ -17119,20 +19792,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -17142,36 +19801,16 @@ "node": ">=0.10.0" } }, - "node_modules/output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, - "dependencies": { - "p-reduce": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-finally": { @@ -17183,15 +19822,6 @@ "node": ">=4" } }, - "node_modules/p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -17216,15 +19846,6 @@ "node": ">=4" } }, - "node_modules/p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -17264,14 +19885,13 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "dependencies": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -17349,9 +19969,9 @@ } }, "node_modules/parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "node_modules/parseurl": { @@ -17373,9 +19993,9 @@ } }, "node_modules/path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "node_modules/path-dirname": { @@ -17402,12 +20022,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -17418,9 +20032,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/path-to-regexp": { @@ -17451,9 +20065,9 @@ } }, "node_modules/pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "dependencies": { "create-hash": "^1.1.2", @@ -17485,12 +20099,15 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, "engines": { "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pid-from-port": { @@ -17578,21 +20195,82 @@ } }, "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "dependencies": { - "find-up": "^2.1.0" + "find-up": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/platform": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", - "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, "node_modules/pluralize": { @@ -17604,12 +20282,6 @@ "node": ">=4" } }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, "node_modules/pngjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", @@ -17647,15 +20319,15 @@ } }, "node_modules/prettier": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", - "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, "node_modules/prettier-linter-helpers": { @@ -17671,27 +20343,39 @@ } }, "node_modules/pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", "dev": true, "dependencies": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/printj": { @@ -17758,13 +20442,13 @@ "dev": true }, "node_modules/prompts": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", - "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "dev": true, "dependencies": { "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "sisteransi": "^1.0.5" }, "engines": { "node": ">= 6" @@ -17808,6 +20492,12 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "node_modules/public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -17822,6 +20512,12 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -17918,6 +20614,26 @@ "node": ">=0.4.x" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -17993,9 +20709,9 @@ "dev": true }, "node_modules/react-is": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", - "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, "node_modules/read-pkg": { @@ -18012,77 +20728,6 @@ "node": ">=4" } }, - "node_modules/read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -18108,11 +20753,10 @@ } }, "node_modules/readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "optional": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -18120,18 +20764,6 @@ "node": ">=8.10.0" } }, - "node_modules/realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "dependencies": { - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -18213,12 +20845,15 @@ } }, "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6.5.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/reinterval": { @@ -18264,90 +20899,150 @@ } }, "node_modules/replace-in-file": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.0.tgz", - "integrity": "sha512-fto9Ooab00CniGkSjRCZCamER7P5S4mZHQ4w4dLd09nwP3FtFfjUJh8/OVC/In4ki5MEy+dYO5v9r7rtq2DrYQ==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.4.tgz", + "integrity": "sha512-ehq0dFsxSpfPiPLBU5kli38Ud8bZL0CQKG8WQVbvhmyilXaMJ8y4LtDZs/K3MD8C0+rHbsfW8c9r2bUEy0B/6Q==", "dev": true, "dependencies": { - "chalk": "^2.3.2", - "glob": "^7.1.2", - "yargs": "^11.0.0" + "chalk": "^2.4.2", + "glob": "^7.1.3", + "yargs": "^13.2.2" }, "bin": { "replace-in-file": "bin/cli.js" } }, - "node_modules/replace-in-file/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/replace-in-file/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/replace-in-file/node_modules/chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "node_modules/replace-in-file/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/replace-in-file/node_modules/supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "node_modules/replace-in-file/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/replace-in-file/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true + "node_modules/replace-in-file/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/replace-in-file/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/replace-in-file/node_modules/yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "node_modules/replace-in-file/node_modules/yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "dependencies": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, "node_modules/request": { @@ -18381,32 +21076,6 @@ "node": ">= 4" } }, - "node_modules/request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dev": true, - "dependencies": { - "lodash": "^4.17.11" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/request/node_modules/qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -18425,21 +21094,21 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "engines": { - "node": ">=0.10.5" + "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -18447,12 +21116,16 @@ "dev": true }, "node_modules/resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { - "path-parse": "^1.0.5" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { @@ -18527,19 +21200,6 @@ "lowercase-keys": "^1.0.0" } }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -18549,6 +21209,16 @@ "node": ">=0.12" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", @@ -18556,15 +21226,18 @@ "dev": true }, "node_modules/rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "glob": "^7.0.5" + "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { @@ -18578,173 +21251,87 @@ } }, "node_modules/rollup": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.1.tgz", - "integrity": "sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw==", + "version": "2.53.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.1.tgz", + "integrity": "sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw==", "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "@types/node": "^11.13.5", - "acorn": "^6.1.1" - }, "bin": { - "rollup": "bin/rollup" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", - "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.0", - "magic-string": "^0.25.2", - "resolve": "^1.10.0", - "rollup-pluginutils": "^2.6.0" - } - }, - "node_modules/rollup-plugin-commonjs/node_modules/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==", - "dev": true - }, - "node_modules/rollup-plugin-commonjs/node_modules/resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "dependencies": { - "rollup-pluginutils": "^2.5.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.3.tgz", - "integrity": "sha512-r+WaesPzdGEynpLZLALFEDugA4ACa5zn7bc/+LVX4vAXQQ8IgDHv0xfsSvJ8tDXUtprfBtrDtRFg27ifKjcJTg==", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.10.0" - } - }, - "node_modules/rollup-plugin-node-resolve/node_modules/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==", - "dev": true - }, - "node_modules/rollup-plugin-node-resolve/node_modules/resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-sourcemaps": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", - "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "dev": true, "dependencies": { - "rollup-pluginutils": "^2.0.1", - "source-map-resolve": "^0.5.0" + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" }, "engines": { - "node": ">=4.5.0", - "npm": ">=2.15.9" - } - }, - "node_modules/rollup-plugin-typescript2": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.21.0.tgz", - "integrity": "sha512-fbUAc2bvWxRrg1GGMYCFVf6aSxq3zvWn0sY2ubzFW9shJNT95ztFbM6GHO4/2rDSCjier7IswQnbr1ySqoLNPw==", - "dev": true, - "dependencies": { - "fs-extra": "7.0.1", - "resolve": "1.10.0", - "rollup-pluginutils": "2.4.1", - "tslib": "1.9.3" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/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==", - "dev": true - }, - "node_modules/rollup-plugin-typescript2/node_modules/resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/rollup-plugin-typescript2/node_modules/rollup-pluginutils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz", - "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.0", - "micromatch": "^3.1.10" + "node": ">=10.0.0" + }, + "peerDependencies": { + "@types/node": ">=10.0.0", + "rollup": ">=0.31.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "node_modules/rollup-plugin-sourcemaps/node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "dependencies": { - "estree-walker": "^0.6.1" + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" } }, - "node_modules/rollup-pluginutils/node_modules/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 - }, - "node_modules/rollup/node_modules/@types/node": { - "version": "11.13.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz", - "integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==", - "dev": true - }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "6.* || >= 7.*" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "is-promise": "^2.1.0" - }, - "engines": { - "node": ">=0.12.0" + "queue-microtask": "^1.2.2" } }, "node_modules/run-queue": { @@ -18756,18 +21343,6 @@ "aproba": "^1.1.1" } }, - "node_modules/rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -18789,90 +21364,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/sane/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/sane/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sane/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/sane/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -18898,6 +21389,18 @@ "node": ">= 4" } }, + "node_modules/sauce-connect-launcher/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/saucelabs": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", @@ -18916,35 +21419,52 @@ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", "dev": true }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "dependencies": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">= 4.8.0 || >= 6.9.0 || >= 8.9.0" + "node": ">= 4" } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/schema-utils/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "node_modules/schema-utils/node_modules/json-schema-traverse": { @@ -18977,6 +21497,18 @@ "node": ">= 8.9.0" } }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/selenium-webdriver/node_modules/tmp": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", @@ -18990,9 +21522,9 @@ } }, "node_modules/semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -19057,9 +21589,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "node_modules/serve-index": { @@ -19212,22 +21744,16 @@ "node": ">=4" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "node_modules/sisteransi": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", - "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "node_modules/slash": { @@ -19240,17 +21766,62 @@ } }, "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/snapdragon": { @@ -19336,19 +21907,10 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -19645,31 +22207,34 @@ "tweetnacl": "~0.14.0" } }, - "node_modules/sshpk/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "figgy-pudding": "^3.5.1" } }, - "node_modules/ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "node_modules/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.1" + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/standard-version": { @@ -19785,15 +22350,6 @@ "node": ">=10" } }, - "node_modules/standard-version/node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/standard-version/node_modules/dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -19837,15 +22393,6 @@ "node": ">=8" } }, - "node_modules/standard-version/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/standard-version/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -19918,12 +22465,6 @@ "node": ">=8" } }, - "node_modules/standard-version/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/standard-version/node_modules/semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", @@ -20045,15 +22586,6 @@ "node": ">= 0.6" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -20152,20 +22684,6 @@ } } }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/streamroller/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -20191,37 +22709,37 @@ } }, "node_modules/string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "dependencies": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/string-length/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/string-length/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/string-width": { @@ -20308,6 +22826,15 @@ "node": ">=0.10.0" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -20321,12 +22848,15 @@ } }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-outer": { @@ -20362,6 +22892,40 @@ "node": ">=4" } }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -20369,83 +22933,104 @@ "dev": true }, "node_modules/table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "dependencies": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0.0" } }, "node_modules/table/node_modules/ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz", + "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/table/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/table/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true, "engines": { "node": ">=6" @@ -20505,336 +23090,132 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/taskkill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", - "integrity": "sha1-o1QwVwKpZDVwMwJ6qUnq7VMxt4Q=", - "dev": true, - "dependencies": { - "arrify": "^1.0.0", - "execa": "^0.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/taskkill/node_modules/execa": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.1.1.tgz", - "integrity": "sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=", - "dev": true, - "dependencies": { - "cross-spawn-async": "^2.1.1", - "object-assign": "^4.0.1", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/tasklist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tasklist/-/tasklist-3.1.1.tgz", - "integrity": "sha512-G3I7QWUBSNWaekrJcDabydF6dcvy+vZ2PrX04JYq1p914TOLgpN+ryMtheGavs1LYVevTbTmwjQY8aeX8yLsyA==", - "dev": true, - "dependencies": { - "neat-csv": "^2.1.0", - "pify": "^2.2.0", - "sec": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tasklist/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/terser-webpack-plugin/node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "node_modules/taskkill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", + "integrity": "sha1-o1QwVwKpZDVwMwJ6qUnq7VMxt4Q=", "dev": true, "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "arrify": "^1.0.0", + "execa": "^0.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/terser-webpack-plugin/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/taskkill/node_modules/execa": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.1.1.tgz", + "integrity": "sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "cross-spawn-async": "^2.1.1", + "object-assign": "^4.0.1", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.12" } }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/tasklist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tasklist/-/tasklist-3.1.1.tgz", + "integrity": "sha512-G3I7QWUBSNWaekrJcDabydF6dcvy+vZ2PrX04JYq1p914TOLgpN+ryMtheGavs1LYVevTbTmwjQY8aeX8yLsyA==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "neat-csv": "^2.1.0", + "pify": "^2.2.0", + "sec": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/terser-webpack-plugin/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/tasklist/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "find-up": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/terminal-link/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "dependencies": { - "glob": "^7.1.3" + "engines": { + "node": ">=10" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", "dev": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">= 6.9.0" } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { @@ -20855,15 +23236,6 @@ "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, "node_modules/terser-webpack-plugin/node_modules/terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -20881,67 +23253,40 @@ "node": ">=6.0.0" } }, - "node_modules/terser-webpack-plugin/node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "errno": "~0.1.7" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/terser-webpack-plugin/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "node_modules/test-exclude/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { - "glob": "^7.1.3", + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/test-exclude/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -20958,9 +23303,9 @@ "dev": true }, "node_modules/throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, "node_modules/through": { @@ -20999,9 +23344,9 @@ } }, "node_modules/timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "dependencies": { "setimmediate": "^1.0.4" @@ -21025,18 +23370,6 @@ "node": "*" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -21102,18 +23435,6 @@ "node": ">=0.10.0" } }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -21142,12 +23463,15 @@ "dev": true }, "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/tr46/node_modules/punycode": { @@ -21160,9 +23484,9 @@ } }, "node_modules/trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, "engines": { "node": ">=8" @@ -21189,15 +23513,6 @@ "node": ">=0.10.0" } }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -21208,27 +23523,31 @@ } }, "node_modules/ts-jest": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", - "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "version": "27.0.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.3.tgz", + "integrity": "sha512-U5rdMjnYam9Ucw+h0QvtNDbc5+88nxt7tbIvqaZUhFrfG4+SkWhMXjejCLVGcpILTPuV+H3W/GZDZrnZFpPeXw==", "dev": true, "dependencies": { "bs-logger": "0.x", "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", "json5": "2.x", - "lodash.memoize": "4.x", + "lodash": "4.x", "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" } }, "node_modules/ts-jest/node_modules/json5": { @@ -21246,95 +23565,351 @@ "node": ">=6" } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-jest/node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "node_modules/ts-jest/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/ts-jest/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "bin": { - "semver": "bin/semver" + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "node_modules/ts-jest/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "camelcase": "^4.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/ts-jest/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/ts-loader": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz", - "integrity": "sha512-KwF1SplmOJepnoZ4eRIloH/zXL195F51skt7reEsS6jvDqzgc/YSbz9b8E07GxIUwLXdcD4ssrJu6v8CwaTafA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", + "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==", "dev": true, "dependencies": { - "chalk": "^2.3.0", + "chalk": "^4.1.0", "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" }, "engines": { - "node": ">=6.11.5" + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/ts-loader/node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-loader/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/ts-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, + "node_modules/ts-loader/node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "node_modules/ts-loader/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, + "node_modules/ts-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/ts-node": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz", - "integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", + "integrity": "sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==", "dev": true, "dependencies": { + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.1", "arg": "^4.1.0", - "diff": "^3.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "source-map-support": "^0.5.17", + "yn": "3.1.1" }, "bin": { - "ts-node": "dist/bin.js" + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.0.0" }, "peerDependencies": { - "typescript": ">=2.0" + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" } }, "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", "dev": true }, "node_modules/tsutils": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", - "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "dependencies": { "tslib": "^1.8.1" }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -21360,6 +23935,12 @@ "dev": true, "optional": true }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -21409,10 +23990,19 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.3.tgz", - "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -21441,46 +24031,11 @@ "node": "*" } }, - "node_modules/uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "dependencies": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-es/node_modules/commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "node_modules/uglify-es/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/uglify-js": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", - "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", "dev": true, - "dependencies": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - }, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -21488,32 +24043,27 @@ "node": ">=0.8.0" } }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/uglifyjs-webpack-plugin": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz", - "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "dev": true, "dependencies": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "uglify-js": "^3.6.0", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">= 4.8 < 5.0.0 || >= 5.10" + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { @@ -21596,9 +24146,9 @@ } }, "node_modules/unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "dependencies": { "unique-slug": "^2.0.0" @@ -21698,15 +24248,6 @@ "node": ">=0.10.0" } }, - "node_modules/unset-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -21846,6 +24387,29 @@ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, + "node_modules/v8-to-istanbul": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz", + "integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -21879,23 +24443,11 @@ "extsprintf": "^1.2.0" } }, - "node_modules/verror/node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "dependencies": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "node_modules/void-elements": { "version": "2.0.1", @@ -21907,12 +24459,24 @@ } }, "node_modules/w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "dependencies": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/walker": { @@ -21925,9 +24489,9 @@ } }, "node_modules/watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -21935,20 +24499,17 @@ }, "optionalDependencies": { "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "node_modules/watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "dependencies": { "chokidar": "^2.1.8" - }, - "engines": { - "node": "<8.10.0" } }, "node_modules/watchpack-chokidar2/node_modules/chokidar": { @@ -22021,177 +24582,62 @@ "node": ">=0.10" } }, - "node_modules/watchpack/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/watchpack/node_modules/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==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", - "dev": true, - "optional": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 8.10.0" - } - }, - "node_modules/watchpack/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/watchpack/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/watchpack/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/watchpack/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, "engines": { - "node": ">=8.0" + "node": ">=10.4" } }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "node_modules/webpack": { - "version": "4.29.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", - "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "bin": { "webpack": "bin/webpack.js" }, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-cli": { @@ -22228,15 +24674,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/webpack-cli/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -22246,17 +24683,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, "node_modules/webpack-cli/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -22273,29 +24699,6 @@ "node": ">=4.8" } }, - "node_modules/webpack-cli/node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-cli/node_modules/enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/webpack-cli/node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -22308,41 +24711,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/webpack-cli/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/webpack-cli/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/webpack-cli/node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -22356,25 +24724,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/webpack-cli/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/webpack-cli/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -22408,21 +24757,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/webpack-cli/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/webpack-cli/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -22461,26 +24795,6 @@ "node": ">=6" } }, - "node_modules/webpack-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/webpack-cli/node_modules/yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", @@ -22510,9 +24824,9 @@ } }, "node_modules/webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "dependencies": { "source-list-map": "^2.0.0", @@ -22529,21 +24843,34 @@ } }, "node_modules/webpack/node_modules/ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "node_modules/webpack/node_modules/json-schema-traverse": { @@ -22552,39 +24879,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack/node_modules/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, "node_modules/websocket-stream": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.1.2.tgz", @@ -22626,14 +24920,17 @@ "dev": true }, "node_modules/whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/which": { @@ -22663,6 +24960,15 @@ "string-width": "^1.0.2 || 2" } }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -22670,51 +24976,67 @@ "dev": true }, "node_modules/worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "dependencies": { "errno": "~0.1.7" } }, + "node_modules/workerpool": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "dev": true + }, "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/wrap-ansi/node_modules/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=", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/wrappy": { @@ -22723,36 +25045,37 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "node_modules/ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/xhr": { @@ -22801,6 +25124,12 @@ "node": ">=0.8.0" } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/xmldom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", @@ -22859,235 +25188,53 @@ } }, "node_modules/yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/yargs-unparser/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs-unparser/node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "node": ">=10" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs-unparser/node_modules/mimic-fn": { + "node_modules/yargs-unparser/node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/yargs-unparser/node_modules/yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "node_modules/yargs-unparser/node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node": ">=8" } }, - "node_modules/yargs-unparser/node_modules/yargs/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/yargs/node_modules/ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -23144,15 +25291,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/yargs/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -23239,6 +25377,18 @@ "node": ">=6" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", @@ -23270,27 +25420,26 @@ }, "dependencies": { "@babel/cli": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.3.tgz", - "integrity": "sha512-cbC5H9iTDV9H7sMxK5rUm18UbdVPNTPqgdzmQAkOUP3YLysgDWLZaysVAfylK49rgTlzL01a6tXyq9rCb3yLhQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.14.5.tgz", + "integrity": "sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg==", "dev": true, "requires": { - "chokidar": "^2.0.4", - "commander": "^2.8.1", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.2", + "chokidar": "^3.4.0", + "commander": "^4.0.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", + "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" }, "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, "slash": { @@ -23302,33 +25451,40 @@ } }, "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.14.5" } }, + "@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "dev": true + }, "@babel/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", - "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helpers": "^7.4.3", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "convert-source-map": "^1.1.0", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "dependencies": { @@ -23342,20 +25498,14 @@ } }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -23369,24 +25519,22 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" }, "dependencies": { "jsesc": { @@ -23394,12 +25542,6 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true } } }, @@ -23433,6 +25575,26 @@ "@babel/types": "^7.4.0" } }, + "@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@babel/helper-define-map": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", @@ -23442,14 +25604,6 @@ "@babel/helper-function-name": "^7.1.0", "@babel/types": "^7.4.0", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } } }, "@babel/helper-explode-assignable-expression": { @@ -23463,87 +25617,81 @@ } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", - "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz", - "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-regex": { @@ -23553,14 +25701,6 @@ "dev": true, "requires": { "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } } }, "@babel/helper-remap-async-to-generator": { @@ -23577,36 +25717,47 @@ } }, "@babel/helper-replace-supers": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", - "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.14.5" } }, + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", @@ -23620,68 +25771,39 @@ } }, "@babel/helpers": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", - "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dev": true, "requires": { - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -23774,12 +25896,30 @@ } }, "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "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.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-flow": { @@ -23791,31 +25931,94 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "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.0.0" + "@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.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "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.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { @@ -23855,14 +26058,6 @@ "requires": { "@babel/helper-plugin-utils": "^7.0.0", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } } }, "@babel/plugin-transform-classes": { @@ -24288,25 +26483,6 @@ "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" - }, - "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } } }, "@babel/preset-flow": { @@ -24329,31 +26505,31 @@ } }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "globals": "^11.1.0" }, "dependencies": { "debug": { @@ -24371,12 +26547,6 @@ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -24386,22 +26556,15 @@ } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" }, "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -24410,158 +26573,537 @@ } } }, - "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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 + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz", + "integrity": "sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.0.6", + "jest-util": "^27.0.6", + "slash": "^3.0.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "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" + } } } }, "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz", + "integrity": "sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/reporters": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.0.6", + "jest-config": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-resolve-dependencies": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "jest-watcher": "^27.0.6", + "micromatch": "^4.0.4", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz", + "integrity": "sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg==", "dev": true, "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6" } }, "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz", + "integrity": "sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/types": "^27.0.6", + "@sinonjs/fake-timers": "^7.0.2", + "@types/node": "*", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" } }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "@jest/globals": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz", + "integrity": "sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", + "@jest/environment": "^27.0.6", + "@jest/types": "^27.0.6", + "expect": "^27.0.6" + } + }, + "@jest/reporters": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz", + "integrity": "sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "slash": "^3.0.0", "source-map": "^0.6.0", - "string-length": "^2.0.0" + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.0.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "source-map": { @@ -24569,17 +27111,26 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "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" + } } } }, "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", + "graceful-fs": "^4.2.4", "source-map": "^0.6.0" }, "dependencies": { @@ -24592,56 +27143,130 @@ } }, "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz", + "integrity": "sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@jest/console": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz", + "integrity": "sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" + "@jest/test-result": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-runtime": "^27.0.6" } }, "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz", + "integrity": "sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", + "@jest/types": "^27.0.6", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.0.6", + "micromatch": "^4.0.4", "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", + "slash": "^3.0.0", "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "write-file-atomic": "^3.0.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "source-map": { @@ -24649,18 +27274,89 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "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" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } } } }, "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz", + "integrity": "sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "@jimp/bmp": { @@ -25570,16 +28266,223 @@ } } }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.2", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz", + "integrity": "sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^5.1.2", + "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": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz", + "integrity": "sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz", + "integrity": "sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@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": "*" + } + } + } + }, + "@rollup/plugin-typescript": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.1.tgz", + "integrity": "sha512-Qd2E1pleDR4bwyFxqbjt4eJf+wB0UKVMLc7/BAFDGVdAXQMCsD4DUv5/7/ww47BZCYxWtJqe1Lo0KVNswBJlRw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "resolve": "^1.17.0" + } + }, + "@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" + } + }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.1.tgz", + "integrity": "sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==", + "dev": true + }, "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -25590,18 +28493,18 @@ } }, "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -25609,9 +28512,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", - "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -25660,12 +28563,6 @@ "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", "dev": true }, - "@types/core-js": { - "version": "0.9.46", - "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", - "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", - "dev": true - }, "@types/cors": { "version": "2.8.10", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", @@ -25685,9 +28582,9 @@ "dev": true }, "@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, "requires": { "@types/body-parser": "*", @@ -25718,44 +28615,168 @@ "@types/node": "*" } }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, "@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } }, "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*", "@types/istanbul-lib-report": "*" } }, "@types/jest": { - "version": "24.0.18", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.18.tgz", - "integrity": "sha512-jcDDXdjTcrQzdN06+TSVsPPqxvsZA/5QkYfIZlq1JMw7FdP5AZylbOc+6B/cuDurctRe+MziUMtQ3xQdrbjqyQ==", + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", "dev": true, "requires": { - "@types/jest-diff": "*" + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "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" + } + } } }, - "@types/jest-diff": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", - "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", "dev": true }, "@types/karma": { @@ -25786,22 +28807,16 @@ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", "dev": true }, - "@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", - "dev": true - }, "@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", "dev": true }, "@types/node": { - "version": "11.13.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.2.tgz", - "integrity": "sha512-HOtU5KqROKT7qX/itKHuTtt5fV0iXbheQvrgbLNXFJQBY/eh+VS5vmmTAVlo3qIGMsypm0G4N1t2AXjy1ZicaQ==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.1.tgz", + "integrity": "sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA==", "dev": true }, "@types/normalize-package-data": { @@ -25811,9 +28826,15 @@ "dev": true }, "@types/platform": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.2.tgz", - "integrity": "sha512-Tn6OuJDAG7bJbyi4R7HqcxXp1w2lmIxVXqyNhPt1Bm0FO2EWIi3CI87JVzF7ncqK0ZMPuUycS3wTMIk85EeF1Q==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.4.tgz", + "integrity": "sha512-U0o4K+GNiK0PNxoDwd8xRnvLVe4kzei6opn3/FCjAriqaP+rfrDdSl1kP/hLL6Y3/Y3hhGnBwD4dCkkAqs1W/Q==", + "dev": true + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "@types/promise-polyfill": { @@ -25834,21 +28855,6 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", "dev": true }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/rimraf": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", - "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", - "dev": true - }, "@types/serve-static": { "version": "1.13.9", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", @@ -25860,242 +28866,405 @@ } }, "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, "@types/yargs": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", - "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz", - "integrity": "sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.2.tgz", + "integrity": "sha512-PGqpLLzHSxq956rzNGasO3GsAPf2lY9lDUBXhS++SKonglUmJypaUtcKzRtUte8CV7nruwnDxtLUKpVxs0wQBw==", "dev": true, "requires": { - "@typescript-eslint/parser": "1.7.0", - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-utils": "^1.3.1", - "regexpp": "^2.0.1", - "requireindex": "^1.2.0", - "tsutils": "^3.7.0" + "@typescript-eslint/experimental-utils": "4.28.2", + "@typescript-eslint/scope-manager": "4.28.2", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.2.tgz", + "integrity": "sha512-MwHPsL6qo98RC55IoWWP8/opTykjTp4JzfPu1VfO2Z0MshNP0UZ1GEV5rYSSnZSUI8VD7iHvtIPVGW5Nfh7klQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.2", + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/typescript-estree": "4.28.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + } } }, "@typescript-eslint/parser": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.7.0.tgz", - "integrity": "sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.2.tgz", + "integrity": "sha512-Q0gSCN51eikAgFGY+gnd5p9bhhCUAl0ERMiDKrTzpSoMYRubdB8MJrTTR/BBii8z+iFwz8oihxd0RAdP4l8w8w==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "1.7.0", - "eslint-scope": "^4.0.0", - "eslint-visitor-keys": "^1.0.0" + "@typescript-eslint/scope-manager": "4.28.2", + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/typescript-estree": "4.28.2", + "debug": "^4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.2.tgz", + "integrity": "sha512-MqbypNjIkJFEFuOwPWNDjq0nqXAKZvDNNs9yNseoGBB1wYfz1G0WHC2AVOy4XD7di3KCcW3+nhZyN6zruqmp2A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/visitor-keys": "4.28.2" } }, + "@typescript-eslint/types": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.2.tgz", + "integrity": "sha512-Gr15fuQVd93uD9zzxbApz3wf7ua3yk4ZujABZlZhaxxKY8ojo448u7XTm/+ETpy0V0dlMtj6t4VdDvdc0JmUhA==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz", - "integrity": "sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.2.tgz", + "integrity": "sha512-86lLstLvK6QjNZjMoYUBMMsULFw0hPHJlk1fzhAVoNjDBuPVxiwvGuPQq3fsBMCxuDJwmX87tM/AXoadhHRljg==", "dev": true, "requires": { - "lodash.unescape": "4.0.1", - "semver": "5.5.0" + "@typescript-eslint/types": "4.28.2", + "@typescript-eslint/visitor-keys": "4.28.2", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, + "@typescript-eslint/visitor-keys": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.2.tgz", + "integrity": "sha512-aT2B4PLyyRDUVUafXzpZFoc0C9t0za4BJAKP5sgWIhG+jHECQZUEjuQSCIwZdiJJ4w4cgu5r3Kh20SOdtEBl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.28.2", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -26112,9 +29281,9 @@ "dev": true }, "abab": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.1.tgz", - "integrity": "sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, "accepts": { @@ -26133,32 +29302,35 @@ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } } }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "add-stream": { @@ -26173,6 +29345,32 @@ "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", "dev": true }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "aggregate-error": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", @@ -26208,15 +29406,9 @@ "dev": true }, "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { @@ -26245,285 +29437,10 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "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==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } } }, "appium-ios-simulator": { @@ -26689,12 +29606,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -26731,21 +29642,6 @@ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, "teen_process": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", @@ -26911,12 +29807,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -26953,6 +29843,12 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -26972,22 +29868,32 @@ "dev": true }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -27027,9 +29933,9 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -27039,14 +29945,6 @@ "dev": true, "requires": { "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - } } }, "async-each": { @@ -27088,9 +29986,9 @@ "dev": true }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "aws-sdk": { @@ -27123,32 +30021,12 @@ "dev": true }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "dev": true, "requires": { - "follow-redirects": "1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "debug": "=3.1.0" - } - } + "follow-redirects": "^1.10.0" } }, "babel-eslint": { @@ -27178,136 +30056,96 @@ } }, "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, - "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz", + "integrity": "sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.0.6", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "color-convert": "^2.0.1" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "color-name": "~1.1.4" } }, - "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==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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 }, - "pkg-dir": { + "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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": { - "find-up": "^3.0.0" + "has-flag": "^4.0.0" } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true } } }, - "babel-plugin-add-module-exports": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz", - "integrity": "sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==", + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", "dev": true, "requires": { - "chokidar": "^2.0.4" + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" } }, + "babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, "babel-plugin-dev-expression": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz", @@ -27315,79 +30153,58 @@ "dev": true }, "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - } + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz", + "integrity": "sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==", "dev": true, "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", "@types/babel__traverse": "^7.0.6" } }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", + "integrity": "sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "babel-plugin-jest-hoist": "^27.0.6", + "babel-preset-current-node-syntax": "^1.0.0" } }, "babel-runtime": { @@ -27466,16 +30283,10 @@ "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -27526,9 +30337,9 @@ "dev": true }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "binary-extensions": { @@ -27539,9 +30350,9 @@ "optional": true }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dev": true, "requires": { "readable-stream": "^2.3.5", @@ -27549,9 +30360,9 @@ } }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bmp-js": { @@ -27561,9 +30372,9 @@ "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "body-parser": { @@ -27669,28 +30480,11 @@ "dev": true }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -27735,28 +30529,55 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -27768,6 +30589,19 @@ "pako": "~1.0.5" } }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, "bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", @@ -27778,9 +30612,9 @@ } }, "bser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", - "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { "node-int64": "^0.4.0" @@ -27862,39 +30696,64 @@ "dev": true }, "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" }, "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } @@ -27914,14 +30773,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "cacheable-request": { @@ -28026,20 +30877,11 @@ } }, "caniuse-lite": { - "version": "1.0.30000957", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz", - "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==", + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", "dev": true }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -28071,10 +30913,10 @@ "supports-color": "^5.3.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, "check-error": { @@ -28084,413 +30926,139 @@ "dev": true }, "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, - "optional": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "optional": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "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=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "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=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } + "fill-range": "^7.0.1" } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } + "to-regex-range": "^5.0.1" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, - "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==", + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "optional": true, "requires": { - "is-extglob": "^2.1.1" + "binary-extensions": "^2.0.0" } }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "optional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "optional": true - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true + "dev": true }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "is-number": "^7.0.0" } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true, - "optional": true } } }, "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "chrome-launcher": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.7.tgz", + "integrity": "sha512-IoQLp64s2n8OQuvKZwt77CscVj3UlV2Dj7yZtd1EBMld9mSdGcsGy9fN5hd/r4vJuWZR09it78n1+A17gB+AIQ==", "dev": true, "requires": { - "tslib": "^1.9.0" + "@types/node": "*", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, "chromeless": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/chromeless/-/chromeless-1.5.2.tgz", @@ -28507,28 +31075,6 @@ "mqtt": "^2.15.0" }, "dependencies": { - "@types/node": { - "version": "9.6.47", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.47.tgz", - "integrity": "sha512-56wEJWXZs+3XXoTe/OCpdZ6czrONhy+6hT0GdPOb7HvudLTMJ1T5tuZPs37K5cPR5t+J9+vLPFDQgUQ8NWJE1w==", - "dev": true - }, - "chrome-launcher": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.5.tgz", - "integrity": "sha512-Gbzg8HlWhyuoVqflhiXwfFXhzNfNWvAkSWv2QR1Yl6mwsMo1oCLAVjp2tIySuS4lrZLEjzVx1fOy584yE76P4g==", - "dev": true, - "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" - } - }, "chrome-remote-interface": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz", @@ -28576,15 +31122,6 @@ "url-to-options": "^1.0.1" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, "p-cancelable": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", @@ -28629,9 +31166,9 @@ } }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", "dev": true }, "cipher-base": { @@ -28644,6 +31181,12 @@ "safe-buffer": "^5.0.1" } }, + "cjs-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz", + "integrity": "sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -28664,12 +31207,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -28679,45 +31216,41 @@ "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -28743,6 +31276,12 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -28768,6 +31307,12 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -28891,13 +31436,10 @@ } }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -29195,12 +31737,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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==", - "dev": true - }, "read-pkg-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", @@ -29273,16 +31809,6 @@ "util-deprecate": "^1.0.1" } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -29321,12 +31847,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true } } }, @@ -29519,12 +32039,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -29599,16 +32113,6 @@ "util-deprecate": "^1.0.1" } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -29635,12 +32139,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true } } }, @@ -29767,12 +32265,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -29847,16 +32339,6 @@ "util-deprecate": "^1.0.1" } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -29895,12 +32377,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true } } }, @@ -29946,9 +32422,9 @@ } }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -29978,6 +32454,17 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "copy-descriptor": { @@ -29998,17 +32485,6 @@ "semver": "^6.0.0" }, "dependencies": { - "browserslist": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz", - "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000955", - "electron-to-chromium": "^1.3.122", - "node-releases": "^1.1.13" - } - }, "core-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", @@ -30036,9 +32512,9 @@ "dev": true }, "cors": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", - "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "requires": { "object-assign": "^4", @@ -30079,13 +32555,21 @@ } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "create-hash": { @@ -30115,6 +32599,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -30164,18 +32654,26 @@ } }, "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, "csv-parser": { @@ -30222,6 +32720,16 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dargs": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", @@ -30238,38 +32746,17 @@ "dev": true, "requires": { "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" } }, "date-format": { @@ -30278,12 +32765,6 @@ "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", "dev": true }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -30323,6 +32804,12 @@ } } }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -30338,6 +32825,12 @@ "mimic-response": "^1.0.0" } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-eql": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", @@ -30361,6 +32854,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "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 + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -30409,12 +32908,6 @@ "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -30442,9 +32935,9 @@ "dev": true }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -30470,9 +32963,9 @@ "dev": true }, "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, "di": { @@ -30482,15 +32975,15 @@ "dev": true }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", "dev": true }, "diffie-hellman": { @@ -30502,6 +32995,31 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } } }, "doctrine": { @@ -30538,12 +33056,20 @@ "dev": true }, "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, "dot-prop": { @@ -30657,9 +33183,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.124", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz", - "integrity": "sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w==", + "version": "1.3.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz", + "integrity": "sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==", "dev": true }, "elliptic": { @@ -30691,6 +33217,12 @@ } } }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -30698,9 +33230,9 @@ "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -30733,16 +33265,6 @@ "ws": "~7.4.2" }, "dependencies": { - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -30759,9 +33281,9 @@ "dev": true }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true, "requires": {} } @@ -30785,14 +33307,35 @@ } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" } }, "ent": { @@ -30844,6 +33387,42 @@ "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==", + "dev": true, + "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=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-mapify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-mapify/-/es6-mapify-1.1.0.tgz", @@ -30854,9 +33433,9 @@ } }, "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-promisify": { @@ -30868,6 +33447,41 @@ "es6-promise": "^4.0.3" } }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -30887,22 +33501,22 @@ "dev": true }, "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", + "esprima": "^4.0.1", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true }, "source-map": { @@ -30915,49 +33529,62 @@ } }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.30.0.tgz", + "integrity": "sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", @@ -30968,25 +33595,65 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "dependencies": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + } } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "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" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "debug": { @@ -30998,10 +33665,55 @@ "ms": "^2.1.1" } }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "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 }, "json-schema-traverse": { @@ -31010,50 +33722,136 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "eslint-config-prettier": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-4.2.0.tgz", - "integrity": "sha512-y0uWc/FRfrHhpPZCYflWC8aE0KRJRY04rdZVfl8cL3sEZmOYyaBdhdlQPjKZBnuRMyLVK+JUZr7HaZFClQiH4w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, - "requires": { - "get-stdin": "^6.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - } - } + "requires": {} }, "eslint-plugin-prettier": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz", - "integrity": "sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -31070,53 +33868,85 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -31126,9 +33956,9 @@ "dev": true }, "estree-walker": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", - "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "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": { @@ -31143,6 +33973,16 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -31159,57 +33999,6 @@ "safe-buffer": "^5.1.1" } }, - "exec-sh": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", - "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "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" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", @@ -31273,17 +34062,25 @@ } }, "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz", + "integrity": "sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" + "@jest/types": "^27.0.6", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-regex-util": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } } }, "express": { @@ -31338,6 +34135,23 @@ } } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -31365,17 +34179,6 @@ } } }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -31440,9 +34243,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -31465,6 +34268,64 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -31477,13 +34338,22 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, "requires": { - "bser": "^2.0.0" + "bser": "2.1.1" } }, "figgy-pudding": { @@ -31492,22 +34362,13 @@ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-type": { @@ -31582,14 +34443,14 @@ } }, "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { @@ -31654,51 +34515,30 @@ "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true } } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true - } - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "flatted": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", + "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", + "dev": true } } }, @@ -31719,30 +34559,10 @@ } }, "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", - "dev": true, - "requires": { - "debug": "^3.2.6" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true }, "for-each": { "version": "0.3.3", @@ -31823,12 +34643,12 @@ "dev": true }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } @@ -32505,10 +35325,16 @@ "is-property": "^1.0.0" } }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { @@ -32517,6 +35343,12 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-pkg-repo": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", @@ -32725,14 +35557,6 @@ "dev": true, "requires": { "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "gifwrap": { @@ -32993,12 +35817,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -33062,16 +35880,6 @@ } } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -33089,12 +35897,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true } } }, @@ -33122,9 +35924,9 @@ } }, "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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -33158,12 +35960,6 @@ "path-dirname": "^1.0.0" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", @@ -33235,10 +36031,49 @@ } }, "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 + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } }, "graceful-fs": { "version": "4.2.6", @@ -33252,12 +36087,6 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -33358,14 +36187,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -33378,26 +36199,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.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=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -33410,13 +36211,39 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash.js": { @@ -33468,18 +36295,18 @@ } }, "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^1.0.5" } }, "html-escaper": { @@ -33496,6 +36323,18 @@ "requires": { "cors": "2.8.4", "request": "2.87.0" + }, + "dependencies": { + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + } } }, "http-cache-semantics": { @@ -33535,6 +36374,34 @@ } } }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -33588,6 +36455,12 @@ } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "humanize-url": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", @@ -33638,9 +36511,9 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -33655,60 +36528,6 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } } }, "imurmurhash": { @@ -33723,12 +36542,6 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -33757,44 +36570,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "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==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -33828,12 +36603,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -33905,12 +36674,12 @@ "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "^3.1.1" } }, "is-core-module": { @@ -34053,20 +36822,12 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, "is-property": { @@ -34075,6 +36836,15 @@ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, + "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.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -34138,6 +36908,12 @@ "unc-path-regex": "^0.1.2" } }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -34187,24 +36963,21 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "dependencies": { "semver": { @@ -34216,79 +36989,66 @@ } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.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 + }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "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==", + "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": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", + "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "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" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "ms": "2.1.2" } }, "ms": { @@ -34297,27 +37057,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -34327,12 +37066,13 @@ } }, "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { - "html-escaper": "^2.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, "isurl": { @@ -34346,100 +37086,426 @@ } }, "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz", + "integrity": "sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA==", "dev": true, "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" + "@jest/core": "^27.0.6", + "import-local": "^3.0.2", + "jest-cli": "^27.0.6" }, "dependencies": { - "ansi-regex": { + "find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "jest-changed-files": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz", + "integrity": "sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA==", + "dev": true, + "requires": { + "@jest/types": "^27.0.6", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-circus": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz", + "integrity": "sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q==", + "dev": true, + "requires": { + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.0.6", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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" + } + } + } + }, + "jest-cli": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz", + "integrity": "sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg==", + "dev": true, + "requires": { + "@jest/core": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "prompts": "^2.0.1", + "yargs": "^16.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.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==", + "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 }, - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" } }, - "locate-path": { + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { @@ -34448,658 +37514,1356 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "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==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.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==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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.1" - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } } } }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "jest-config": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz", + "integrity": "sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.0.6", + "@jest/types": "^27.0.6", + "babel-jest": "^27.0.6", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "jest-circus": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-jasmine2": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runner": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "color-convert": "^2.0.1" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "fill-range": "^7.0.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "pump": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "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" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } } } }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz", + "integrity": "sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz", + "integrity": "sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz", + "integrity": "sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6", + "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz", + "integrity": "sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "jest-mock": "^27.0.6", + "jest-util": "^27.0.6" } }, "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", "dev": true }, "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz", + "integrity": "sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", + "@jest/types": "^27.0.6", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", + "micromatch": "^4.0.4", "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", + "integrity": "sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", + "@jest/environment": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^24.9.0", + "expect": "^27.0.6", "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" + "jest-each": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "pretty-format": "^27.0.6", + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz", + "integrity": "sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ==", "dev": true, "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" } }, "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz", + "integrity": "sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "chalk": "^4.0.0", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "pretty-format": "^27.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz", + "integrity": "sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.0.6", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.0.6", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "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" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } } } }, "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz", + "integrity": "sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw==", "dev": true, "requires": { - "@jest/types": "^24.9.0" + "@jest/types": "^27.0.6", + "@types/node": "*" } }, "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", - "dev": true + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} }, "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", "dev": true }, "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz", + "integrity": "sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "@jest/types": "^27.0.6", + "chalk": "^4.0.0", + "escalade": "^3.1.1", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "resolve": "^1.20.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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" + } + } } }, "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz", + "integrity": "sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "@jest/types": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.0.6" } }, "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz", + "integrity": "sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.0.6", + "jest-environment-node": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-leak-detector": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-runtime": "^27.0.6", + "jest-util": "^27.0.6", + "jest-worker": "^27.0.6", "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "throat": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz", + "integrity": "sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q==", + "dev": true, + "requires": { + "@jest/console": "^27.0.6", + "@jest/environment": "^27.0.6", + "@jest/fake-timers": "^27.0.6", + "@jest/globals": "^27.0.6", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.0.6", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-mock": "^27.0.6", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-snapshot": "^27.0.6", + "jest-util": "^27.0.6", + "jest-validate": "^27.0.6", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.0.3" }, "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==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "color-convert": "^2.0.1" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "color-name": "~1.1.4" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "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==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "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==", + "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 + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "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" } }, "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==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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.1" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } } } }, "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } }, "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz", + "integrity": "sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A==", "dev": true, "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", + "@jest/transform": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.0.6", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.0.6", + "jest-get-type": "^27.0.6", + "jest-haste-map": "^27.0.6", + "jest-matcher-utils": "^27.0.6", + "jest-message-util": "^27.0.6", + "jest-resolve": "^27.0.6", + "jest-util": "^27.0.6", "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" + "pretty-format": "^27.0.6", + "semver": "^7.3.2" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", + "integrity": "sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "@jest/types": "^27.0.6", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" }, "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "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" + } } } }, "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz", + "integrity": "sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", + "@jest/types": "^27.0.6", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.6", "leven": "^3.1.0", - "pretty-format": "^24.9.0" + "pretty-format": "^27.0.6" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "leven": { @@ -35107,41 +38871,123 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "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" + } } } }, "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz", + "integrity": "sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "@jest/test-result": "^27.0.6", + "@jest/types": "^27.0.6", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.0.6", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^8.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": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -35224,50 +39070,107 @@ "optional": true }, "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", "xml-name-validator": "^3.0.0" }, "dependencies": { "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "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 + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } } } }, @@ -35348,10 +39251,21 @@ "dev": true }, "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } }, "jsonfile": { "version": "4.0.0", @@ -35394,14 +39308,6 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "jszip": { @@ -35462,22 +39368,6 @@ "color-convert": "^2.0.1" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -35487,22 +39377,6 @@ "fill-range": "^7.0.1" } }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -35544,19 +39418,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -35571,15 +39432,6 @@ "path-is-absolute": "^1.0.0" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -35592,42 +39444,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "mime": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -35857,21 +39679,6 @@ "readable-stream": "^2.0.5" } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, "leven": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", @@ -35959,14 +39766,14 @@ "dev": true }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, "locate-path": { @@ -36000,6 +39807,12 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -36030,16 +39843,10 @@ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, "lodash.template": { @@ -36061,10 +39868,10 @@ "lodash._reinterpolate": "^3.0.0" } }, - "lodash.unescape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, "lodash.union": { @@ -36074,12 +39881,64 @@ "dev": true }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "log4js": { @@ -36148,21 +40007,30 @@ } }, "magic-string": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", - "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "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-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "make-error": { @@ -36180,21 +40048,6 @@ "tmpl": "1.0.x" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -36233,25 +40086,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -36356,12 +40190,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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==", - "dev": true - }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -36401,15 +40229,6 @@ } } }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, "yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", @@ -36442,6 +40261,12 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -36485,6 +40310,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "mime": { @@ -36508,12 +40341,6 @@ "mime-db": "1.47.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, "mimic-response": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", @@ -36582,9 +40409,9 @@ } }, "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, "requires": { "concat-stream": "^1.5.0", @@ -36593,22 +40420,10 @@ "flush-write-stream": "^1.0.0", "from2": "^2.1.0", "parallel-transform": "^1.1.0", - "pump": "^2.0.1", + "pump": "^3.0.0", "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, "mixin-deep": { @@ -36650,113 +40465,128 @@ } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.2.tgz", + "integrity": "sha512-FpspiWU+UT9Sixx/wKimvnpkeW0mh6ROAKkIaPokj3xZgxeRhcna/k5X57jJghEr8X+Cgu/Vegf8zCX5ugSuTA==", "dev": true, "requires": { - "ansi-colors": "3.2.3", + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", + "chokidar": "3.5.2", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.7", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", + "ms": "2.1.3", + "nanoid": "3.1.23", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" + "workerpool": "6.1.5", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "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==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "color-convert": "^2.0.1" } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "color-name": "~1.1.4" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "ms": "2.1.2" + }, + "dependencies": { + "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 + } } }, - "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==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "pump": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -36767,173 +40597,150 @@ "path-is-absolute": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "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 }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "argparse": "^2.0.1" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "yocto-queue": "^0.1.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "minimist": "0.0.8" + "p-limit": "^3.0.2" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "randombytes": "^2.1.0" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "p-try": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.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==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "ansi-regex": "^5.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==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "has-flag": "^4.0.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==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "isexe": "^2.0.0" } }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yargs": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", - "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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.0.0" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", - "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true } } }, @@ -36961,17 +40768,29 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "mqtt": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.2.tgz", - "integrity": "sha512-egP6gbLES2aELu6LNtwOtpC779Hu7LVTYm6HKE5wJdTuX2jZ4JOOtK7HS2JWyW6IfKN5U99u/VU155tLwFAKbQ==", + "version": "2.18.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.8.tgz", + "integrity": "sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA==", "dev": true, "requires": { "commist": "^1.0.0", "concat-stream": "^1.6.2", "end-of-stream": "^1.4.1", + "es6-map": "^0.1.5", "help-me": "^1.0.1", "inherits": "^2.0.3", "minimist": "^1.2.0", @@ -37010,12 +40829,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", @@ -37058,6 +40871,12 @@ "dev": true, "optional": true }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -37077,18 +40896,6 @@ "to-regex": "^3.0.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -37168,9 +40975,15 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "nice-try": { @@ -37179,24 +40992,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -37204,9 +40999,9 @@ "dev": true }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -37219,7 +41014,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -37231,13 +41026,13 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "url": { @@ -37258,43 +41053,11 @@ "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", "dev": true }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "node-releases": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz", - "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true }, "node-simctl": { "version": "5.3.0", @@ -37444,15 +41207,6 @@ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "semver": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", @@ -37512,6 +41266,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -37562,9 +41317,9 @@ "dev": true }, "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, "oauth-sign": { @@ -37614,26 +41369,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" } }, "object.getownpropertydescriptors": { @@ -37653,14 +41388,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "omggif": { @@ -37687,15 +41414,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "openssl-wrapper": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/openssl-wrapper/-/openssl-wrapper-0.3.4.tgz", @@ -37731,48 +41449,17 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true }, "p-finally": { "version": "1.0.0", @@ -37780,12 +41467,6 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -37804,12 +41485,6 @@ "p-limit": "^1.1.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -37843,14 +41518,13 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -37919,9 +41593,9 @@ "dev": true }, "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, "parseurl": { @@ -37937,9 +41611,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -37960,12 +41634,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -37973,9 +41641,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { @@ -38000,9 +41668,9 @@ "dev": true }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -38031,9 +41699,9 @@ "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "pid-from-port": { @@ -38102,18 +41770,63 @@ } }, "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^2.1.0" + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } } }, "platform": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", - "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, "pluralize": { @@ -38122,12 +41835,6 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, "pngjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", @@ -38153,9 +41860,9 @@ "dev": true }, "prettier": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", - "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", "dev": true }, "prettier-linter-helpers": { @@ -38168,21 +41875,27 @@ } }, "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz", + "integrity": "sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "^27.0.6", + "ansi-regex": "^5.0.0", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true } } @@ -38233,13 +41946,13 @@ "dev": true }, "prompts": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", - "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", "dev": true, "requires": { "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "sisteransi": "^1.0.5" } }, "proxy-addr": { @@ -38274,6 +41987,12 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -38286,6 +42005,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "pump": { @@ -38367,6 +42094,12 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -38432,9 +42165,9 @@ } }, "react-is": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", - "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, "read-pkg": { @@ -38448,61 +42181,6 @@ "path-type": "^3.0.0" } }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -38528,24 +42206,14 @@ } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "optional": true, "requires": { "picomatch": "^2.2.1" } }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -38611,9 +42279,9 @@ "dev": true }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "reinterval": { @@ -38650,78 +42318,117 @@ } }, "replace-in-file": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.0.tgz", - "integrity": "sha512-fto9Ooab00CniGkSjRCZCamER7P5S4mZHQ4w4dLd09nwP3FtFfjUJh8/OVC/In4ki5MEy+dYO5v9r7rtq2DrYQ==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-3.4.4.tgz", + "integrity": "sha512-ehq0dFsxSpfPiPLBU5kli38Ud8bZL0CQKG8WQVbvhmyilXaMJ8y4LtDZs/K3MD8C0+rHbsfW8c9r2bUEy0B/6Q==", "dev": true, "requires": { - "chalk": "^2.3.2", - "glob": "^7.1.2", - "yargs": "^11.0.0" + "chalk": "^2.4.2", + "glob": "^7.1.3", + "yargs": "^13.2.2" }, "dependencies": { - "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==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "locate-path": "^3.0.0" } }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "p-try": "^2.0.0" } }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -38762,42 +42469,22 @@ } } }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "dev": true, - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-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-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, - "requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -38807,12 +42494,13 @@ "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -38876,22 +42564,18 @@ "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", @@ -38899,12 +42583,12 @@ "dev": true }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "ripemd160": { @@ -38918,170 +42602,52 @@ } }, "rollup": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.10.1.tgz", - "integrity": "sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw==", + "version": "2.53.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.1.tgz", + "integrity": "sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "@types/node": "^11.13.5", - "acorn": "^6.1.1" + "fsevents": "~2.3.2" }, "dependencies": { - "@types/node": { - "version": "11.13.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.8.tgz", - "integrity": "sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==", - "dev": true - } - } - }, - "rollup-plugin-commonjs": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz", - "integrity": "sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w==", - "dev": true, - "requires": { - "estree-walker": "^0.6.0", - "magic-string": "^0.25.2", - "resolve": "^1.10.0", - "rollup-pluginutils": "^2.6.0" - }, - "dependencies": { - "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==", - "dev": true - }, - "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "rollup-plugin-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz", - "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.5.0" - } - }, - "rollup-plugin-node-resolve": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.3.tgz", - "integrity": "sha512-r+WaesPzdGEynpLZLALFEDugA4ACa5zn7bc/+LVX4vAXQQ8IgDHv0xfsSvJ8tDXUtprfBtrDtRFg27ifKjcJTg==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.10.0" - }, - "dependencies": { - "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==", - "dev": true - }, - "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "path-parse": "^1.0.6" - } + "optional": true } } }, "rollup-plugin-sourcemaps": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", - "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", - "dev": true, - "requires": { - "rollup-pluginutils": "^2.0.1", - "source-map-resolve": "^0.5.0" - } - }, - "rollup-plugin-typescript2": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.21.0.tgz", - "integrity": "sha512-fbUAc2bvWxRrg1GGMYCFVf6aSxq3zvWn0sY2ubzFW9shJNT95ztFbM6GHO4/2rDSCjier7IswQnbr1ySqoLNPw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "dev": true, "requires": { - "fs-extra": "7.0.1", - "resolve": "1.10.0", - "rollup-pluginutils": "2.4.1", - "tslib": "1.9.3" + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" }, "dependencies": { - "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==", - "dev": true - }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "rollup-pluginutils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz", - "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==", + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { - "estree-walker": "^0.6.0", - "micromatch": "^3.1.10" + "atob": "^2.1.2", + "decode-uri-component": "^0.2.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 - } - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "is-promise": "^2.1.0" + "queue-microtask": "^1.2.2" } }, "run-queue": { @@ -39093,15 +42659,6 @@ "aproba": "^1.1.1" } }, - "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -39123,74 +42680,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "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" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -39211,6 +42700,17 @@ "https-proxy-agent": "^2.2.1", "lodash": "^4.16.6", "rimraf": "^2.5.4" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "saucelabs": { @@ -39228,32 +42728,42 @@ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", "dev": true }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" }, "dependencies": { "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "uri-js": "^4.2.2" } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -39282,6 +42792,15 @@ "xml2js": "^0.4.17" }, "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "tmp": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", @@ -39294,9 +42813,9 @@ } }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "send": { @@ -39354,9 +42873,9 @@ } }, "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", "dev": true }, "serve-index": { @@ -39481,22 +43000,16 @@ "rechoir": "^0.6.2" } }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "sisteransi": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", - "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { @@ -39506,14 +43019,46 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } } }, "snapdragon": { @@ -39601,16 +43146,10 @@ "kind-of": "^6.0.2" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true } } @@ -39836,30 +43375,33 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { - "safe-buffer": "^5.1.1" + "figgy-pudding": "^3.5.1" } }, "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } }, "standard-version": { "version": "8.0.2", @@ -39953,12 +43495,6 @@ "q": "^1.5.1" } }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -39993,12 +43529,6 @@ "path-exists": "^4.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==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -40050,12 +43580,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", @@ -40151,12 +43675,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -40238,17 +43756,6 @@ "ms": "2.1.2" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -40273,28 +43780,28 @@ } }, "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -40364,6 +43871,12 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -40374,9 +43887,9 @@ } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "strip-outer": { @@ -40403,6 +43916,33 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.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" + } + } + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -40410,73 +43950,87 @@ "dev": true }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz", + "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "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==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } }, "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "tar-stream": { @@ -40588,6 +44142,33 @@ } } }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, "terser-webpack-plugin": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", @@ -40605,211 +44186,6 @@ "worker-farm": "^1.7.0" }, "dependencies": { - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "serialize-javascript": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", @@ -40825,15 +44201,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, "terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -40844,66 +44211,33 @@ "source-map": "~0.6.1", "source-map-support": "~0.5.12" } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } }, "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "dependencies": { - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } } } }, @@ -40920,9 +44254,9 @@ "dev": true }, "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", "dev": true }, "through": { @@ -40958,9 +44292,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -40978,15 +44312,6 @@ "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", "dev": true }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -41038,17 +44363,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, "toidentifier": { @@ -41075,12 +44389,12 @@ } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" }, "dependencies": { "punycode": { @@ -41092,9 +44406,9 @@ } }, "trim-newlines": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", - "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, "trim-off-newlines": { @@ -41112,12 +44426,6 @@ "escape-string-regexp": "^1.0.2" } }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -41128,21 +44436,21 @@ } }, "ts-jest": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", - "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "version": "27.0.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.3.tgz", + "integrity": "sha512-U5rdMjnYam9Ucw+h0QvtNDbc5+88nxt7tbIvqaZUhFrfG4+SkWhMXjejCLVGcpILTPuV+H3W/GZDZrnZFpPeXw==", "dev": true, "requires": { "bs-logger": "0.x", "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", "json5": "2.x", - "lodash.memoize": "4.x", + "lodash": "4.x", "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" }, "dependencies": { "json5": { @@ -41154,76 +44462,248 @@ "minimist": "^1.2.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "lru-cache": "^6.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "ts-loader": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz", - "integrity": "sha512-KwF1SplmOJepnoZ4eRIloH/zXL195F51skt7reEsS6jvDqzgc/YSbz9b8E07GxIUwLXdcD4ssrJu6v8CwaTafA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", + "integrity": "sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag==", "dev": true, "requires": { - "chalk": "^2.3.0", + "chalk": "^4.1.0", "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "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 + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "ts-node": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.3.tgz", - "integrity": "sha512-2qayBA4vdtVRuDo11DEFSsD/SFsBXQBRZZhbRGSIkmYmVkWjULn/GGMdG10KVqkaGndljfaTD8dKjWgcejO8YA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", + "integrity": "sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==", "dev": true, "requires": { + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.1", "arg": "^4.1.0", - "diff": "^3.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", "dev": true }, "tsutils": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", - "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "tty-browserify": { @@ -41248,6 +44728,12 @@ "dev": true, "optional": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -41285,10 +44771,19 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.3.tgz", - "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", "dev": true }, "ua-parser-js": { @@ -41297,62 +44792,27 @@ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", "dev": true }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "uglify-js": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", - "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", - "dev": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "version": "3.13.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.10.tgz", + "integrity": "sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg==", + "dev": true }, "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz", - "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "dev": true, "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "uglify-js": "^3.6.0", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "dependencies": { "source-map": { @@ -41416,9 +44876,9 @@ } }, "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "requires": { "unique-slug": "^2.0.0" @@ -41498,12 +44958,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -41628,6 +45082,25 @@ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, + "v8-to-istanbul": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz", + "integrity": "sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -41653,24 +45126,13 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "void-elements": { "version": "2.0.1", @@ -41679,12 +45141,21 @@ "dev": true }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "xml-name-validator": "^3.0.0" } }, "walker": { @@ -41697,119 +45168,21 @@ } }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "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==", - "dev": true, - "optional": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", - "dev": true, - "optional": true, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "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==", - "dev": true, - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } + "watchpack-chokidar2": "^2.0.1" } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "requires": { @@ -41882,59 +45255,65 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true }, "webpack": { - "version": "4.29.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", - "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "json-schema-traverse": { @@ -41942,33 +45321,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "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 - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } } } }, @@ -41997,29 +45349,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -42033,23 +45368,6 @@ "which": "^1.2.9" } }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -42059,32 +45377,6 @@ "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==", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -42095,22 +45387,6 @@ "path-exists": "^3.0.0" } }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -42135,18 +45411,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -42176,23 +45440,6 @@ "has-flag": "^3.0.0" } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", @@ -42224,9 +45471,9 @@ } }, "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -42284,14 +45531,14 @@ "dev": true }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" } }, "which": { @@ -42318,6 +45565,12 @@ "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==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -42325,42 +45578,55 @@ "dev": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" } }, + "workerpool": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", + "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "dev": true + }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "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=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -42371,34 +45637,24 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "requires": {} }, "xhr": { "version": "2.5.0", @@ -42443,6 +45699,12 @@ "lodash": "^4.0.0" } }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xmldom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", @@ -42529,12 +45791,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -42587,188 +45843,34 @@ "dev": true }, "yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, - "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" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { + "is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - }, - "dependencies": { - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -42799,6 +45901,12 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", diff --git a/package.json b/package.json index f89a75389..85c707b01 100644 --- a/package.json +++ b/package.json @@ -27,36 +27,40 @@ "@babel/core": "^7.4.3", "@babel/preset-env": "^7.4.3", "@babel/preset-flow": "^7.0.0", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", "@types/chai": "^4.1.7", - "@types/express": "^4.17.11", + "@types/express": "^4.17.13", "@types/glob": "^7.1.1", - "@types/jest": "^24.0.18", + "@types/jest": "^26.0.24", "@types/karma": "^6.3.0", - "@types/mocha": "^5.2.6", - "@types/node": "^11.13.2", - "@types/platform": "^1.3.2", + "@types/mocha": "^8.2.3", + "@types/node": "^16.3.1", + "@types/platform": "^1.3.4", "@types/promise-polyfill": "^6.0.3", - "@typescript-eslint/eslint-plugin": "^1.7.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", "appium-ios-simulator": "^3.10.0", "babel-eslint": "^10.0.1", "babel-loader": "^8.0.5", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-dev-expression": "^0.2.1", "base64-arraybuffer": "0.2.0", - "body-parser": "^1.18.3", + "body-parser": "^1.19.0", "chai": "4.1.1", "chromeless": "^1.5.2", - "cors": "2.8.4", - "es6-promise": "^4.2.6", - "eslint": "^5.16.0", - "eslint-config-prettier": "^4.2.0", - "eslint-plugin-prettier": "3.0.1", + "cors": "^2.8.5", + "es6-promise": "^4.2.8", + "eslint": "^7.30.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "3.4.0", "express": "^4.17.1", "filenamify-url": "1.0.0", "glob": "7.1.3", "html2canvas-proxy": "1.0.1", - "jest": "^24.9.0", + "jest": "^27.0.6", "jquery": "^3.5.1", "js-polyfills": "^0.1.42", "karma": "^6.3.2", @@ -68,28 +72,25 @@ "karma-mocha": "^2.0.1", "karma-safarinative-launcher": "^1.1.0", "karma-sauce-launcher": "^2.0.2", - "mocha": "^6.1.4", + "mocha": "^9.0.2", "node-simctl": "^5.3.0", - "platform": "1.3.4", - "prettier": "1.17.0", + "platform": "^1.3.6", + "prettier": "^2.3.2", "replace-in-file": "^3.0.0", - "rimraf": "2.6.1", - "rollup": "^1.10.1", - "rollup-plugin-commonjs": "^9.3.4", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^4.2.3", - "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-typescript2": "^0.21.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-sourcemaps": "^0.6.3", "serve-index": "^1.9.1", "slash": "1.0.0", "standard-version": "^8.0.2", - "ts-jest": "^24.1.0", - "ts-loader": "^5.3.3", - "ts-node": "^8.0.3", - "typescript": "^3.4.3", - "uglify-js": "^3.5.11", - "uglifyjs-webpack-plugin": "^1.1.2", - "webpack": "^4.29.6", + "ts-jest": "^27.0.3", + "ts-loader": "^8.3.0", + "ts-node": "^10.1.0", + "tslib": "^2.3.0", + "typescript": "^4.3.5", + "uglify-js": "^3.13.10", + "uglifyjs-webpack-plugin": "^2.2.0", + "webpack": "^4.46.0", "webpack-cli": "^3.3.12", "yargs": "^17.0.1" }, @@ -103,7 +104,7 @@ "build:reftest-preview": "webpack --config www/webpack.config.js", "release": "standard-version", "format": "prettier --write \"{src,www/src,tests,scripts}/**/*.ts\"", - "lint": "eslint src/**/*.ts", + "lint": "eslint src/**/*.ts --max-warnings 0", "test": "npm run lint && npm run unittest && npm run karma", "unittest": "jest", "karma": "ts-node tests/karma", diff --git a/rollup.config.ts b/rollup.config.ts index ca82c5aa1..1f85df452 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -1,8 +1,8 @@ -import resolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; import sourceMaps from 'rollup-plugin-sourcemaps'; -import typescript from 'rollup-plugin-typescript2'; -import json from 'rollup-plugin-json'; +import typescript from '@rollup/plugin-typescript'; +import json from '@rollup/plugin-json'; const pkg = require('./package.json'); @@ -30,7 +30,7 @@ export default { // Allow json resolution json(), // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), + typescript(), // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) commonjs({ include: 'node_modules/**' diff --git a/scripts/create-reftest-list.ts b/scripts/create-reftest-list.ts index d07d020ce..272420440 100644 --- a/scripts/create-reftest-list.ts +++ b/scripts/create-reftest-list.ts @@ -21,7 +21,7 @@ const outputPath = resolve(__dirname, '../', process.argv[3]); const ignoredTests = readFileSync(path) .toString() .split(/\r\n|\r|\n/) - .filter(l => l.length) + .filter((l) => l.length) .reduce((acc: {[key: string]: string[]}, l) => { const m = l.match(/^(\[(.+)\])?(.+)$/i); if (m) { diff --git a/scripts/create-reftest-result-list.ts b/scripts/create-reftest-result-list.ts index 6844ab5d9..b88624b00 100644 --- a/scripts/create-reftest-result-list.ts +++ b/scripts/create-reftest-result-list.ts @@ -17,7 +17,7 @@ const files = readdirSync(path); interface RefTestMetadata {} interface RefTestSingleMetadata extends RefTestMetadata { - test: string; + test?: string; } interface RefTestResults { @@ -26,12 +26,14 @@ interface RefTestResults { const result: RefTestResults = files.reduce((result: RefTestResults, file) => { const json: RefTestSingleMetadata = JSON.parse(readFileSync(resolve(__dirname, path, file)).toString()); - if (!result[json.test]) { - result[json.test] = []; - } + if (json.test) { + if (!result[json.test]) { + result[json.test] = []; + } - result[json.test].push(json); - delete json.test; + result[json.test].push(json); + delete json.test; + } return result; }, {}); diff --git a/src/__tests__/index.ts b/src/__tests__/index.ts index 1cc77085e..be3a11d9c 100644 --- a/src/__tests__/index.ts +++ b/src/__tests__/index.ts @@ -21,7 +21,6 @@ jest.mock('../render/stacking-context'); jest.mock('../render/canvas/canvas-renderer'); describe('html2canvas', () => { - // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion const element = { ownerDocument: { defaultView: { @@ -60,7 +59,6 @@ describe('html2canvas', () => { }); it('should use existing canvas when given as option', async () => { - // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion const canvas = {} as HTMLCanvasElement; await html2canvas(element, {canvas}); expect(CanvasRenderer).toHaveBeenLastCalledWith( diff --git a/src/core/__mocks__/logger.ts b/src/core/__mocks__/logger.ts index 8819bcdc8..cd9bc0d3b 100644 --- a/src/core/__mocks__/logger.ts +++ b/src/core/__mocks__/logger.ts @@ -1,17 +1,22 @@ export class Logger { - debug() {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + debug(): void {} - static create() {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + static create(): void {} - static destroy() {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + static destroy(): void {} static getInstance(): Logger { return logger; } - info() {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + info(): void {} - error() {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + error(): void {} } const logger = new Logger(); diff --git a/src/core/__tests__/cache-storage.ts b/src/core/__tests__/cache-storage.ts index c73828420..595bc933a 100644 --- a/src/core/__tests__/cache-storage.ts +++ b/src/core/__tests__/cache-storage.ts @@ -47,12 +47,12 @@ const createMockContext = (origin: string, opts = {}) => { const images: ImageMock[] = []; const xhr: XMLHttpRequestMock[] = []; -const sleep = async (timeout: number) => await new Promise(resolve => setTimeout(resolve, timeout)); +const sleep = async (timeout: number) => await new Promise((resolve) => setTimeout(resolve, timeout)); class ImageMock { src?: string; crossOrigin?: string; - onload?: () => {}; + onload?: () => void; constructor() { images.push(this); } @@ -65,8 +65,8 @@ class XMLHttpRequestMock { method?: string; url?: string; response?: string; - onload?: () => {}; - ontimeout?: () => {}; + onload?: () => void; + ontimeout?: () => void; constructor() { this.sent = false; this.status = 500; @@ -106,7 +106,7 @@ const setFeatures = (opts: {[key: string]: boolean} = {}) => { SUPPORT_RESPONSE_TYPE: false }; - Object.keys(defaults).forEach(key => { + Object.keys(defaults).forEach((key) => { Object.defineProperty(FEATURES, key, { value: typeof opts[key] === 'boolean' ? opts[key] : defaults[key], writable: true diff --git a/src/core/__tests__/logger.ts b/src/core/__tests__/logger.ts index ff921f5c5..8208efbdd 100644 --- a/src/core/__tests__/logger.ts +++ b/src/core/__tests__/logger.ts @@ -1,10 +1,13 @@ import {Logger} from '../logger'; describe('logger', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any let infoSpy: any; beforeEach(() => { - infoSpy = jest.spyOn(console, 'info').mockImplementation(() => {}); + infoSpy = jest.spyOn(console, 'info').mockImplementation(() => { + // do nothing + }); }); afterEach(() => { diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 3c6da82da..6231d4f4c 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -4,7 +4,7 @@ import {Logger} from './logger'; export class CacheStorage { private static _caches: {[key: string]: Cache} = {}; private static _link?: HTMLAnchorElement; - private static _origin: string = 'about:blank'; + private static _origin = 'about:blank'; private static _current: Cache | null = null; static create(name: string, options: ResourceOptions): Cache { @@ -39,7 +39,7 @@ export class CacheStorage { return CacheStorage.getOrigin(src) === CacheStorage._origin; } - static setContext(window: Window) { + static setContext(window: Window): void { CacheStorage._link = window.document.createElement('a'); CacheStorage._origin = CacheStorage.getOrigin(window.location.href); } @@ -52,11 +52,11 @@ export class CacheStorage { return current; } - static attachInstance(cache: Cache) { + static attachInstance(cache: Cache): void { CacheStorage._current = cache; } - static detachInstance() { + static detachInstance(): void { CacheStorage._current = null; } } @@ -169,7 +169,7 @@ export class Cache { } else { const reader = new FileReader(); reader.addEventListener('load', () => resolve(reader.result as string), false); - reader.addEventListener('error', e => reject(e), false); + reader.addEventListener('error', (e) => reject(e), false); reader.readAsDataURL(xhr.response); } } else { diff --git a/src/core/features.ts b/src/core/features.ts index 4ecb3571a..2b5f00126 100644 --- a/src/core/features.ts +++ b/src/core/features.ts @@ -90,7 +90,13 @@ const testForeignObject = (document: Document): Promise => { .catch(() => false); }; -export const createForeignObjectSVG = (width: number, height: number, x: number, y: number, node: Node) => { +export const createForeignObjectSVG = ( + width: number, + height: number, + x: number, + y: number, + node: Node +): SVGForeignObjectElement => { const xmlns = 'http://www.w3.org/2000/svg'; const svg = document.createElementNS(xmlns, 'svg'); const foreignObject = document.createElementNS(xmlns, 'foreignObject'); @@ -120,19 +126,19 @@ export const loadSerializedSVG = (svg: Node): Promise => { }; export const FEATURES = { - get SUPPORT_RANGE_BOUNDS() { + get SUPPORT_RANGE_BOUNDS(): boolean { 'use strict'; const value = testRangeBounds(document); Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value}); return value; }, - get SUPPORT_SVG_DRAWING() { + get SUPPORT_SVG_DRAWING(): boolean { 'use strict'; const value = testSVG(document); Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value}); return value; }, - get SUPPORT_FOREIGNOBJECT_DRAWING() { + get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise { 'use strict'; const value = typeof Array.from === 'function' && typeof window.fetch === 'function' @@ -141,19 +147,19 @@ export const FEATURES = { Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value}); return value; }, - get SUPPORT_CORS_IMAGES() { + get SUPPORT_CORS_IMAGES(): boolean { 'use strict'; const value = testCORS(); Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value}); return value; }, - get SUPPORT_RESPONSE_TYPE() { + get SUPPORT_RESPONSE_TYPE(): boolean { 'use strict'; const value = testResponseType(); Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value}); return value; }, - get SUPPORT_CORS_XHR() { + get SUPPORT_CORS_XHR(): boolean { 'use strict'; const value = 'withCredentials' in new XMLHttpRequest(); Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value}); diff --git a/src/core/logger.ts b/src/core/logger.ts index f47980a7e..0a248d8c8 100644 --- a/src/core/logger.ts +++ b/src/core/logger.ts @@ -17,7 +17,7 @@ export class Logger { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - debug(...args: any) { + debug(...args: unknown[]): void { if (this.enabled) { // eslint-disable-next-line no-console if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') { @@ -33,11 +33,11 @@ export class Logger { return Date.now() - this.start; } - static create(options: LoggerOptions) { + static create(options: LoggerOptions): void { Logger.instances[options.id] = new Logger(options); } - static destroy(id: string) { + static destroy(id: string): void { delete Logger.instances[id]; } @@ -50,7 +50,7 @@ export class Logger { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - info(...args: any) { + info(...args: unknown[]): void { if (this.enabled) { // eslint-disable-next-line no-console if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') { @@ -61,7 +61,7 @@ export class Logger { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - error(...args: any) { + error(...args: unknown[]): void { if (this.enabled) { // eslint-disable-next-line no-console if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') { diff --git a/src/css/index.ts b/src/css/index.ts index b7fe5fa73..fd3ef6803 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -289,7 +289,6 @@ const parse = (descriptor: CSSPropertyDescriptor, style?: string | null) => const value = parser.parseComponentValue(); return isLengthPercentage(value) ? value : ZERO_LENGTH; } + break; } - - throw new Error(`Attempting to parse unsupported css format type ${descriptor.format}`); }; diff --git a/src/css/layout/__mocks__/bounds.ts b/src/css/layout/__mocks__/bounds.ts index 34daef70f..c9bd89ad6 100644 --- a/src/css/layout/__mocks__/bounds.ts +++ b/src/css/layout/__mocks__/bounds.ts @@ -1,4 +1,4 @@ export const {Bounds} = jest.requireActual('../bounds'); -export const parseBounds = () => { +export const parseBounds = (): typeof Bounds => { return new Bounds(0, 0, 200, 50); }; diff --git a/src/css/layout/text.ts b/src/css/layout/text.ts index 5c2c0a7d2..e4068092f 100644 --- a/src/css/layout/text.ts +++ b/src/css/layout/text.ts @@ -18,7 +18,7 @@ export const parseTextBounds = (value: string, styles: CSSParsedDeclaration, nod const textList = breakText(value, styles); const textBounds: TextBounds[] = []; let offset = 0; - textList.forEach(text => { + textList.forEach((text) => { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length))); @@ -67,7 +67,7 @@ const getRangeBounds = (node: Text, offset: number, length: number): Bounds => { }; const breakText = (value: string, styles: CSSParsedDeclaration): string[] => { - return styles.letterSpacing !== 0 ? toCodePoints(value).map(i => fromCodePoint(i)) : breakWords(value, styles); + return styles.letterSpacing !== 0 ? toCodePoints(value).map((i) => fromCodePoint(i)) : breakWords(value, styles); }; const breakWords = (str: string, styles: CSSParsedDeclaration): string[] => { diff --git a/src/css/property-descriptors/__tests__/background-tests.ts b/src/css/property-descriptors/__tests__/background-tests.ts index 552ee8c07..2f6149501 100644 --- a/src/css/property-descriptors/__tests__/background-tests.ts +++ b/src/css/property-descriptors/__tests__/background-tests.ts @@ -32,7 +32,10 @@ describe('property-descriptors', () => { { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: pack(255, 255, 0, 0.5), stop: null}, {color: pack(0, 0, 255, 0.5), stop: null}] + stops: [ + {color: pack(255, 255, 0, 0.5), stop: null}, + {color: pack(0, 0, 255, 0.5), stop: null} + ] }, {url: 'https://html2canvas.hertzen.com', type: CSSImageType.URL} ] diff --git a/src/css/property-descriptors/__tests__/transform-tests.ts b/src/css/property-descriptors/__tests__/transform-tests.ts index d2edbc369..48c6bf17a 100644 --- a/src/css/property-descriptors/__tests__/transform-tests.ts +++ b/src/css/property-descriptors/__tests__/transform-tests.ts @@ -9,13 +9,9 @@ describe('property-descriptors', () => { it('matrix(1.0, 2.0, 3.0, 4.0, 5.0, 6.0)', () => deepStrictEqual(parseValue('matrix(1.0, 2.0, 3.0, 4.0, 5.0, 6.0)'), [1, 2, 3, 4, 5, 6])); it('matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)', () => - deepStrictEqual(parseValue('matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'), [ - 1, - 0, - 0, - 1, - 0, - 0 - ])); + deepStrictEqual( + parseValue('matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)'), + [1, 0, 0, 1, 0, 0] + )); }); }); diff --git a/src/css/property-descriptors/background-clip.ts b/src/css/property-descriptors/background-clip.ts index db8350493..f64c53dc1 100644 --- a/src/css/property-descriptors/background-clip.ts +++ b/src/css/property-descriptors/background-clip.ts @@ -14,7 +14,7 @@ export const backgroundClip: IPropertyListDescriptor = { prefix: false, type: PropertyDescriptorParsingType.LIST, parse: (tokens: CSSValue[]): BackgroundClip => { - return tokens.map(token => { + return tokens.map((token) => { if (isIdentToken(token)) { switch (token.value) { case 'padding-box': diff --git a/src/css/property-descriptors/background-image.ts b/src/css/property-descriptors/background-image.ts index 0d7e406ca..97099469b 100644 --- a/src/css/property-descriptors/background-image.ts +++ b/src/css/property-descriptors/background-image.ts @@ -19,6 +19,6 @@ export const backgroundImage: IPropertyListDescriptor = { return []; } - return tokens.filter(value => nonFunctionArgSeparator(value) && isSupportedImage(value)).map(image.parse); + return tokens.filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value)).map(image.parse); } }; diff --git a/src/css/property-descriptors/background-origin.ts b/src/css/property-descriptors/background-origin.ts index ad71b33ae..86b4a75fe 100644 --- a/src/css/property-descriptors/background-origin.ts +++ b/src/css/property-descriptors/background-origin.ts @@ -15,7 +15,7 @@ export const backgroundOrigin: IPropertyListDescriptor = { prefix: false, type: PropertyDescriptorParsingType.LIST, parse: (tokens: CSSValue[]): BackgroundOrigin => { - return tokens.map(token => { + return tokens.map((token) => { if (isIdentToken(token)) { switch (token.value) { case 'padding-box': diff --git a/src/css/property-descriptors/background-repeat.ts b/src/css/property-descriptors/background-repeat.ts index 45f5e195c..d35220b51 100644 --- a/src/css/property-descriptors/background-repeat.ts +++ b/src/css/property-descriptors/background-repeat.ts @@ -16,10 +16,10 @@ export const backgroundRepeat: IPropertyListDescriptor = { type: PropertyDescriptorParsingType.LIST, parse: (tokens: CSSValue[]): BackgroundRepeat => { return parseFunctionArgs(tokens) - .map(values => + .map((values) => values .filter(isIdentToken) - .map(token => token.value) + .map((token) => token.value) .join(' ') ) .map(parseBackgroundRepeat); diff --git a/src/css/property-descriptors/background-size.ts b/src/css/property-descriptors/background-size.ts index 1e45f66e0..a62e6f6ae 100644 --- a/src/css/property-descriptors/background-size.ts +++ b/src/css/property-descriptors/background-size.ts @@ -18,7 +18,7 @@ export const backgroundSize: IPropertyListDescriptor = { prefix: false, type: PropertyDescriptorParsingType.LIST, parse: (tokens: CSSValue[]): BackgroundSize => { - return parseFunctionArgs(tokens).map(values => values.filter(isBackgroundSizeInfoToken)); + return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken)); } }; diff --git a/src/css/property-descriptors/font-family.ts b/src/css/property-descriptors/font-family.ts index 624166c35..e64475909 100644 --- a/src/css/property-descriptors/font-family.ts +++ b/src/css/property-descriptors/font-family.ts @@ -14,7 +14,7 @@ export const fontFamily: IPropertyListDescriptor = { parse: (tokens: CSSValue[]) => { const accumulator: string[] = []; const results: string[] = []; - tokens.forEach(token => { + tokens.forEach((token) => { switch (token.type) { case TokenType.IDENT_TOKEN: case TokenType.STRING_TOKEN: @@ -32,6 +32,6 @@ export const fontFamily: IPropertyListDescriptor = { if (accumulator.length) { results.push(accumulator.join(' ')); } - return results.map(result => (result.indexOf(' ') === -1 ? result : `'${result}'`)); + return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`)); } }; diff --git a/src/css/property-descriptors/font-variant.ts b/src/css/property-descriptors/font-variant.ts index e4af3c16a..66e54ba88 100644 --- a/src/css/property-descriptors/font-variant.ts +++ b/src/css/property-descriptors/font-variant.ts @@ -6,6 +6,6 @@ export const fontVariant: IPropertyListDescriptor = { type: PropertyDescriptorParsingType.LIST, prefix: false, parse: (tokens: CSSValue[]): string[] => { - return tokens.filter(isIdentToken).map(token => token.value); + return tokens.filter(isIdentToken).map((token) => token.value); } }; diff --git a/src/css/property-descriptors/overflow.ts b/src/css/property-descriptors/overflow.ts index 5acb838ac..8d9f8fab5 100644 --- a/src/css/property-descriptors/overflow.ts +++ b/src/css/property-descriptors/overflow.ts @@ -13,7 +13,7 @@ export const overflow: IPropertyListDescriptor = { prefix: false, type: PropertyDescriptorParsingType.LIST, parse: (tokens: CSSValue[]): OVERFLOW[] => { - return tokens.filter(isIdentToken).map(overflow => { + return tokens.filter(isIdentToken).map((overflow) => { switch (overflow.value) { case 'hidden': return OVERFLOW.HIDDEN; diff --git a/src/css/property-descriptors/text-decoration-line.ts b/src/css/property-descriptors/text-decoration-line.ts index 5450d5001..ebeeaeab3 100644 --- a/src/css/property-descriptors/text-decoration-line.ts +++ b/src/css/property-descriptors/text-decoration-line.ts @@ -19,7 +19,7 @@ export const textDecorationLine: IPropertyListDescriptor = { parse: (tokens: CSSValue[]): TextDecorationLine => { return tokens .filter(isIdentToken) - .map(token => { + .map((token) => { switch (token.value) { case 'underline': return TEXT_DECORATION_LINE.UNDERLINE; @@ -32,6 +32,6 @@ export const textDecorationLine: IPropertyListDescriptor = { } return TEXT_DECORATION_LINE.NONE; }) - .filter(line => line !== TEXT_DECORATION_LINE.NONE); + .filter((line) => line !== TEXT_DECORATION_LINE.NONE); } }; diff --git a/src/css/property-descriptors/transform.ts b/src/css/property-descriptors/transform.ts index 7607a5f5f..ca5a0bd14 100644 --- a/src/css/property-descriptors/transform.ts +++ b/src/css/property-descriptors/transform.ts @@ -27,14 +27,14 @@ export const transform: IPropertyValueDescriptor = { }; const matrix = (args: CSSValue[]): Transform => { - const values = args.filter(arg => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number); + const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number); return values.length === 6 ? (values as Matrix) : null; }; // doesn't support 3D transforms at the moment const matrix3d = (args: CSSValue[]): Transform => { - const values = args.filter(arg => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number); + const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number); const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values; diff --git a/src/css/syntax/parser.ts b/src/css/syntax/parser.ts index 83b8a6c16..7d65779a3 100644 --- a/src/css/syntax/parser.ts +++ b/src/css/syntax/parser.ts @@ -74,7 +74,7 @@ export class Parser { parseComponentValues(): CSSValue[] { const values = []; while (true) { - let value = this.consumeComponentValue(); + const value = this.consumeComponentValue(); if (value.type === TokenType.EOF_TOKEN) { return values; } @@ -148,14 +148,14 @@ export const isStringToken = (token: CSSValue): token is StringValueToken => tok export const isIdentWithValue = (token: CSSValue, value: string): boolean => isIdentToken(token) && token.value === value; -export const nonWhiteSpace = (token: CSSValue) => token.type !== TokenType.WHITESPACE_TOKEN; -export const nonFunctionArgSeparator = (token: CSSValue) => +export const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN; +export const nonFunctionArgSeparator = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN; export const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => { const args: CSSValue[][] = []; let arg: CSSValue[] = []; - tokens.forEach(token => { + tokens.forEach((token) => { if (token.type === TokenType.COMMA_TOKEN) { if (arg.length === 0) { throw new Error(`Error parsing function args, zero tokens for arg`); diff --git a/src/css/syntax/tokenizer.ts b/src/css/syntax/tokenizer.ts index b449b8495..7a1ba51ef 100644 --- a/src/css/syntax/tokenizer.ts +++ b/src/css/syntax/tokenizer.ts @@ -315,7 +315,7 @@ export class Tokenizer { this._value = []; } - write(chunk: string) { + write(chunk: string): void { this._value = this._value.concat(toCodePoints(chunk)); } @@ -542,8 +542,11 @@ export class Tokenizer { } if (questionMarks) { - const start = parseInt(fromCodePoint(...digits.map(digit => (digit === QUESTION_MARK ? ZERO : digit))), 16); - const end = parseInt(fromCodePoint(...digits.map(digit => (digit === QUESTION_MARK ? F : digit))), 16); + const start = parseInt( + fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))), + 16 + ); + const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16); return {type: TokenType.UNICODE_RANGE_TOKEN, start, end}; } @@ -642,7 +645,7 @@ export class Tokenizer { private consumeBadUrlRemnants(): void { while (true) { - let codePoint = this.consumeCodePoint(); + const codePoint = this.consumeCodePoint(); if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) { return; } @@ -702,7 +705,7 @@ export class Tokenizer { } private consumeNumber() { - let repr = []; + const repr = []; let type = FLAG_INTEGER; let c1 = this.peekCodePoint(0); if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { @@ -724,7 +727,7 @@ export class Tokenizer { c1 = this.peekCodePoint(0); c2 = this.peekCodePoint(1); - let c3 = this.peekCodePoint(2); + const c3 = this.peekCodePoint(2); if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) { repr.push(this.consumeCodePoint(), this.consumeCodePoint()); type = FLAG_NUMBER; @@ -743,7 +746,7 @@ export class Tokenizer { const c3 = this.peekCodePoint(2); if (isIdentifierStart(c1, c2, c3)) { - let unit = this.consumeName(); + const unit = this.consumeName(); return {type: TokenType.DIMENSION_TOKEN, number, flags, unit}; } diff --git a/src/css/types/__tests__/image-tests.ts b/src/css/types/__tests__/image-tests.ts index 9e3c067f4..9e50c6bcf 100644 --- a/src/css/types/__tests__/image-tests.ts +++ b/src/css/types/__tests__/image-tests.ts @@ -40,25 +40,37 @@ describe('types', () => { deepStrictEqual(parse('linear-gradient(yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: colorParse('yellow'), stop: null}, {color: colorParse('blue'), stop: null}] + stops: [ + {color: colorParse('yellow'), stop: null}, + {color: colorParse('blue'), stop: null} + ] })); it('linear-gradient(to bottom, yellow, blue)', () => deepStrictEqual(parse('linear-gradient(to bottom, yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: colorParse('yellow'), stop: null}, {color: colorParse('blue'), stop: null}] + stops: [ + {color: colorParse('yellow'), stop: null}, + {color: colorParse('blue'), stop: null} + ] })); it('linear-gradient(180deg, yellow, blue)', () => deepStrictEqual(parse('linear-gradient(180deg, yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: colorParse('yellow'), stop: null}, {color: colorParse('blue'), stop: null}] + stops: [ + {color: colorParse('yellow'), stop: null}, + {color: colorParse('blue'), stop: null} + ] })); it('linear-gradient(to top, blue, yellow)', () => deepStrictEqual(parse('linear-gradient(to top, blue, yellow)'), { angle: 0, type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: colorParse('blue'), stop: null}, {color: colorParse('yellow'), stop: null}] + stops: [ + {color: colorParse('blue'), stop: null}, + {color: colorParse('yellow'), stop: null} + ] })); it('linear-gradient(to top right, blue, yellow)', () => deepStrictEqual(parse('linear-gradient(to top right, blue, yellow)'), { @@ -67,7 +79,10 @@ describe('types', () => { {type: TokenType.NUMBER_TOKEN, number: 0, flags: 4} ], type: CSSImageType.LINEAR_GRADIENT, - stops: [{color: colorParse('blue'), stop: null}, {color: colorParse('yellow'), stop: null}] + stops: [ + {color: colorParse('blue'), stop: null}, + {color: colorParse('yellow'), stop: null} + ] })); it('linear-gradient(to bottom, yellow 0%, blue 100%)', () => deepStrictEqual(parse('linear-gradient(to bottom, yellow 0%, blue 100%)'), { diff --git a/src/css/types/angle.ts b/src/css/types/angle.ts index ff119b076..ec66b7ef3 100644 --- a/src/css/types/angle.ts +++ b/src/css/types/angle.ts @@ -41,7 +41,7 @@ export const isAngle = (value: CSSValue): boolean => { export const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => { const sideOrCorner = tokens .filter(isIdentToken) - .map(ident => ident.value) + .map((ident) => ident.value) .join(' '); switch (sideOrCorner) { diff --git a/src/css/types/color.ts b/src/css/types/color.ts index ebc17c149..b0e1afa83 100644 --- a/src/css/types/color.ts +++ b/src/css/types/color.ts @@ -59,9 +59,9 @@ export const color: ITypeDescriptor = { } }; -export const isTransparent = (color: Color) => (0xff & color) === 0; +export const isTransparent = (color: Color): boolean => (0xff & color) === 0; -export const asString = (color: Color) => { +export const asString = (color: Color): string => { const alpha = 0xff & color; const blue = 0xff & (color >> 8); const green = 0xff & (color >> 16); diff --git a/src/css/types/functions/-webkit-gradient.ts b/src/css/types/functions/-webkit-gradient.ts index 233fa52c6..e9f6f477f 100644 --- a/src/css/types/functions/-webkit-gradient.ts +++ b/src/css/types/functions/-webkit-gradient.ts @@ -14,11 +14,11 @@ import {color as colorType} from '../color'; import {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage'; export const webkitGradient = (tokens: CSSValue[]): CSSLinearGradientImage | CSSRadialGradientImage => { - let angle = deg(180); + const angle = deg(180); const stops: UnprocessedGradientColorStop[] = []; let type = CSSImageType.LINEAR_GRADIENT; - let shape: CSSRadialShape = CSSRadialShape.CIRCLE; - let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER; + const shape: CSSRadialShape = CSSRadialShape.CIRCLE; + const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER; const position: LengthPercentage[] = []; parseFunctionArgs(tokens).forEach((arg, i) => { const firstToken = arg[0]; diff --git a/src/css/types/functions/__tests__/radial-gradient.ts b/src/css/types/functions/__tests__/radial-gradient.ts index 13b0265af..508598ef8 100644 --- a/src/css/types/functions/__tests__/radial-gradient.ts +++ b/src/css/types/functions/__tests__/radial-gradient.ts @@ -55,7 +55,10 @@ describe('functions', () => { shape: CSSRadialShape.CIRCLE, size: [{type: TokenType.DIMENSION_TOKEN, number: 20, flags: 4, unit: 'px'}], position: [], - stops: [{color: colorParse('red'), stop: null}, {color: colorParse('blue'), stop: null}] + stops: [ + {color: colorParse('red'), stop: null}, + {color: colorParse('blue'), stop: null} + ] })); }); }); diff --git a/src/css/types/functions/counter.ts b/src/css/types/functions/counter.ts index 062d84e73..8404f68b5 100644 --- a/src/css/types/functions/counter.ts +++ b/src/css/types/functions/counter.ts @@ -9,7 +9,7 @@ export class CounterState { this.counters = {}; } - getCounterValue(name: string) { + getCounterValue(name: string): number { const counter = this.counters[name]; if (counter && counter.length) { @@ -23,8 +23,8 @@ export class CounterState { return counter ? counter : []; } - pop(counters: string[]) { - counters.forEach(counter => this.counters[counter].pop()); + pop(counters: string[]): void { + counters.forEach((counter) => this.counters[counter].pop()); } parse(style: CSSParsedCounterDeclaration): string[] { @@ -33,7 +33,7 @@ export class CounterState { let canReset = true; if (counterIncrement !== null) { - counterIncrement.forEach(entry => { + counterIncrement.forEach((entry) => { const counter = this.counters[entry.counter]; if (counter && entry.increment !== 0) { canReset = false; @@ -44,7 +44,7 @@ export class CounterState { const counterNames: string[] = []; if (canReset) { - counterReset.forEach(entry => { + counterReset.forEach((entry) => { let counter = this.counters[entry.counter]; counterNames.push(entry.counter); if (!counter) { @@ -70,42 +70,8 @@ const ROMAN_UPPER: CounterSymbols = { const ARMENIAN: CounterSymbols = { integers: [ - 9000, - 8000, - 7000, - 6000, - 5000, - 4000, - 3000, - 2000, - 1000, - 900, - 800, - 700, - 600, - 500, - 400, - 300, - 200, - 100, - 90, - 80, - 70, - 60, - 50, - 40, - 30, - 20, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1 + 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, + 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ 'Ք', @@ -149,43 +115,8 @@ const ARMENIAN: CounterSymbols = { const HEBREW: CounterSymbols = { integers: [ - 10000, - 9000, - 8000, - 7000, - 6000, - 5000, - 4000, - 3000, - 2000, - 1000, - 400, - 300, - 200, - 100, - 90, - 80, - 70, - 60, - 50, - 40, - 30, - 20, - 19, - 18, - 17, - 16, - 15, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1 + 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, + 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ 'י׳', @@ -230,43 +161,8 @@ const HEBREW: CounterSymbols = { const GEORGIAN: CounterSymbols = { integers: [ - 10000, - 9000, - 8000, - 7000, - 6000, - 5000, - 4000, - 3000, - 2000, - 1000, - 900, - 800, - 700, - 600, - 500, - 400, - 300, - 200, - 100, - 90, - 80, - 70, - 60, - 50, - 40, - 30, - 20, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 2, - 1 + 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, + 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ 'ჵ', @@ -362,21 +258,21 @@ const createCounterStyleFromRange = ( return ( (value < 0 ? '-' : '') + - (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, codePoint => + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) => fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart) ) + suffix) ); }; -const createCounterStyleFromSymbols = (value: number, symbols: string, suffix: string = '. '): string => { +const createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => { const codePointRangeLength = symbols.length; return ( createCounterStyleWithSymbolResolver( Math.abs(value), codePointRangeLength, false, - codePoint => symbols[Math.floor(codePoint % codePointRangeLength)] + (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)] ) + suffix ); }; @@ -405,7 +301,7 @@ const createCJKCounter = ( } for (let digit = 0; tmp > 0 && digit <= 4; digit++) { - let coefficient = tmp % 10; + const coefficient = tmp % 10; if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') { string = numbers[coefficient] + string; diff --git a/src/css/types/functions/gradient.ts b/src/css/types/functions/gradient.ts index c0a5773ee..0463b8b56 100644 --- a/src/css/types/functions/gradient.ts +++ b/src/css/types/functions/gradient.ts @@ -98,7 +98,12 @@ export const calculateGradientDirection = ( const distance = (a: number, b: number): number => Math.sqrt(a * a + b * b); const findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => { - const corners = [[0, 0], [0, height], [width, 0], [width, height]]; + const corners = [ + [0, 0], + [0, height], + [width, 0], + [width, height] + ]; return corners.reduce( (stat, corner) => { diff --git a/src/css/types/image.ts b/src/css/types/image.ts index 631a9462b..17be3febe 100644 --- a/src/css/types/image.ts +++ b/src/css/types/image.ts @@ -98,8 +98,8 @@ export const image: ITypeDescriptor = { } }; -export function isSupportedImage(value: CSSValue) { - return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name]; +export function isSupportedImage(value: CSSValue): boolean { + return value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]; } const SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = { diff --git a/src/css/types/length-percentage.ts b/src/css/types/length-percentage.ts index fda8a54e5..138aacd09 100644 --- a/src/css/types/length-percentage.ts +++ b/src/css/types/length-percentage.ts @@ -31,10 +31,10 @@ export const getAbsoluteValueForTuple = ( width: number, height: number ): [number, number] => { - let [x, y] = tuple; + const [x, y] = tuple; return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)]; }; -export const getAbsoluteValue = (token: LengthPercentage, parent: number) => { +export const getAbsoluteValue = (token: LengthPercentage, parent: number): number => { if (token.type === TokenType.PERCENTAGE_TOKEN) { return (token.number / 100) * parent; } diff --git a/src/dom/__mocks__/document-cloner.ts b/src/dom/__mocks__/document-cloner.ts index 366ceeccf..0311b06a0 100644 --- a/src/dom/__mocks__/document-cloner.ts +++ b/src/dom/__mocks__/document-cloner.ts @@ -2,15 +2,14 @@ export class DocumentCloner { clonedReferenceElement?: HTMLElement; constructor() { - // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion this.clonedReferenceElement = {} as HTMLElement; } - toIFrame() { - return Promise.resolve({}); + toIFrame(): Promise { + return Promise.resolve({} as HTMLIFrameElement); } - static destroy() { + static destroy(): boolean { return true; } } diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 2e93a025b..a87221e7c 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -130,9 +130,7 @@ export class DocumentCloner { } const clone = node.cloneNode(false) as T; - // @ts-ignore if (isImageElement(clone) && clone.loading === 'lazy') { - // @ts-ignore clone.loading = 'eager'; } @@ -351,7 +349,7 @@ export class DocumentCloner { const anonymousReplacedElement = document.createElement('html2canvaspseudoelement'); copyCSSStyles(style, anonymousReplacedElement); - declaration.content.forEach(token => { + declaration.content.forEach((token) => { if (token.type === TokenType.STRING_TOKEN) { anonymousReplacedElement.appendChild(document.createTextNode(token.value)); } else if (token.type === TokenType.URL_TOKEN) { @@ -390,7 +388,7 @@ export class DocumentCloner { : LIST_STYLE_TYPE.DECIMAL; const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : ''; const text = counterStates - .map(value => createCounterText(value, counterType, false)) + .map((value) => createCounterText(value, counterType, false)) .join(separator); anonymousReplacedElement.appendChild(document.createTextNode(text)); @@ -474,15 +472,18 @@ const iframeLoader = (iframe: HTMLIFrameElement): Promise => const documentClone = cloneWindow.document; - cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = () => { - cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null; - const interval = setInterval(() => { - if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') { - clearInterval(interval); - resolve(iframe); - } - }, 50); - }; + cloneWindow.onload = + iframe.onload = + documentClone.onreadystatechange = + () => { + cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null; + const interval = setInterval(() => { + if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') { + clearInterval(interval); + resolve(iframe); + } + }, 50); + }; }); }; diff --git a/src/dom/replaced-elements/iframe-element-container.ts b/src/dom/replaced-elements/iframe-element-container.ts index 001ed956c..54ba1e9e4 100644 --- a/src/dom/replaced-elements/iframe-element-container.ts +++ b/src/dom/replaced-elements/iframe-element-container.ts @@ -28,8 +28,9 @@ export class IFrameElementContainer extends ElementContainer { // http://www.w3.org/TR/css3-background/#special-backgrounds const documentBackgroundColor = iframe.contentWindow.document.documentElement - ? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement) - .backgroundColor as string) + ? parseColor( + getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string + ) : COLORS.TRANSPARENT; const bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string) diff --git a/src/dom/replaced-elements/input-element-container.ts b/src/dom/replaced-elements/input-element-container.ts index bbc0de901..c06e45413 100644 --- a/src/dom/replaced-elements/input-element-container.ts +++ b/src/dom/replaced-elements/input-element-container.ts @@ -56,10 +56,21 @@ export class InputElementContainer extends ElementContainer { if (this.type === CHECKBOX || this.type === RADIO) { this.styles.backgroundColor = 0xdededeff; - this.styles.borderTopColor = this.styles.borderRightColor = this.styles.borderBottomColor = this.styles.borderLeftColor = 0xa5a5a5ff; - this.styles.borderTopWidth = this.styles.borderRightWidth = this.styles.borderBottomWidth = this.styles.borderLeftWidth = 1; - this.styles.borderTopStyle = this.styles.borderRightStyle = this.styles.borderBottomStyle = this.styles.borderLeftStyle = - BORDER_STYLE.SOLID; + this.styles.borderTopColor = + this.styles.borderRightColor = + this.styles.borderBottomColor = + this.styles.borderLeftColor = + 0xa5a5a5ff; + this.styles.borderTopWidth = + this.styles.borderRightWidth = + this.styles.borderBottomWidth = + this.styles.borderLeftWidth = + 1; + this.styles.borderTopStyle = + this.styles.borderRightStyle = + this.styles.borderBottomStyle = + this.styles.borderLeftStyle = + BORDER_STYLE.SOLID; this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX]; this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX]; this.bounds = reformatInputBounds(this.bounds); @@ -67,10 +78,18 @@ export class InputElementContainer extends ElementContainer { switch (this.type) { case CHECKBOX: - this.styles.borderTopRightRadius = this.styles.borderTopLeftRadius = this.styles.borderBottomRightRadius = this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS; + this.styles.borderTopRightRadius = + this.styles.borderTopLeftRadius = + this.styles.borderBottomRightRadius = + this.styles.borderBottomLeftRadius = + CHECKBOX_BORDER_RADIUS; break; case RADIO: - this.styles.borderTopRightRadius = this.styles.borderTopLeftRadius = this.styles.borderBottomRightRadius = this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS; + this.styles.borderTopRightRadius = + this.styles.borderTopLeftRadius = + this.styles.borderBottomRightRadius = + this.styles.borderBottomLeftRadius = + RADIO_BORDER_RADIUS; break; } } diff --git a/src/global.d.ts b/src/global.d.ts index 88c1d5215..5e8b34390 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -9,5 +9,6 @@ interface DocumentType extends Node, ChildNode { } interface Document { + // eslint-disable-next-line @typescript-eslint/no-explicit-any fonts: any; } diff --git a/src/invariant.ts b/src/invariant.ts index 350e0bea9..4d7ad1cd1 100644 --- a/src/invariant.ts +++ b/src/invariant.ts @@ -1,4 +1,4 @@ -export const invariant = (assertion: boolean, error: string) => { +export const invariant = (assertion: boolean, error: string): void => { if (!assertion) { console.error(error); } diff --git a/src/render/background.ts b/src/render/background.ts index 253afd5bd..3fed4d326 100644 --- a/src/render/background.ts +++ b/src/render/background.ts @@ -218,7 +218,7 @@ export const calculateBackgroundRepeatPath = ( [width, height]: [number, number], backgroundPositioningArea: Bounds, backgroundPaintingArea: Bounds -) => { +): [Vector, Vector, Vector, Vector] => { switch (repeat) { case BACKGROUND_REPEAT.REPEAT_X: return [ diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 2635686bd..2c6a63925 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -88,21 +88,19 @@ export class CanvasRenderer { this.ctx.textBaseline = 'bottom'; this._activeEffects = []; Logger.getInstance(options.id).debug( - `Canvas renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${ - options.scale - }` + `Canvas renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}` ); } - applyEffects(effects: IElementEffect[], target: EffectTarget) { + applyEffects(effects: IElementEffect[], target: EffectTarget): void { while (this._activeEffects.length) { this.popEffect(); } - effects.filter(effect => contains(effect.target, target)).forEach(effect => this.applyEffect(effect)); + effects.filter((effect) => contains(effect.target, target)).forEach((effect) => this.applyEffect(effect)); } - applyEffect(effect: IElementEffect) { + applyEffect(effect: IElementEffect): void { this.ctx.save(); if (isOpacityEffect(effect)) { this.ctx.globalAlpha = effect.opacity; @@ -129,30 +127,30 @@ export class CanvasRenderer { this._activeEffects.push(effect); } - popEffect() { + popEffect(): void { this._activeEffects.pop(); this.ctx.restore(); } - async renderStack(stack: StackingContext) { + async renderStack(stack: StackingContext): Promise { const styles = stack.element.container.styles; if (styles.isVisible()) { await this.renderStackContent(stack); } } - async renderNode(paint: ElementPaint) { + async renderNode(paint: ElementPaint): Promise { if (paint.container.styles.isVisible()) { await this.renderNodeBackgroundAndBorders(paint); await this.renderNodeContent(paint); } } - renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number) { + renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void { if (letterSpacing === 0) { this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { - const letters = toCodePoints(text.text).map(i => fromCodePoint(i)); + const letters = toCodePoints(text.text).map((i) => fromCodePoint(i)); letters.reduce((left, letter) => { this.ctx.fillText(letter, left, text.bounds.top + baseline); @@ -163,7 +161,7 @@ export class CanvasRenderer { private createFontStyle(styles: CSSParsedDeclaration): string[] { const fontVariant = styles.fontVariant - .filter(variant => variant === 'normal' || variant === 'small-caps') + .filter((variant) => variant === 'normal' || variant === 'small-caps') .join(''); const fontFamily = styles.fontFamily.join(', '); const fontSize = isDimensionToken(styles.fontSize) @@ -177,7 +175,7 @@ export class CanvasRenderer { ]; } - async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration) { + async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise { const [font, fontFamily, fontSize] = this.createFontStyle(styles); this.ctx.font = font; @@ -185,7 +183,7 @@ export class CanvasRenderer { const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize); - text.textBounds.forEach(text => { + text.textBounds.forEach((text) => { this.ctx.fillStyle = asString(styles.color); this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); const textShadows: TextShadow = styles.textShadow; @@ -194,7 +192,7 @@ export class CanvasRenderer { textShadows .slice(0) .reverse() - .forEach(textShadow => { + .forEach((textShadow) => { this.ctx.shadowColor = asString(textShadow.color); this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale; this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale; @@ -211,7 +209,7 @@ export class CanvasRenderer { if (styles.textDecorationLine.length) { this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color); - styles.textDecorationLine.forEach(textDecorationLine => { + styles.textDecorationLine.forEach((textDecorationLine) => { switch (textDecorationLine) { case TEXT_DECORATION_LINE.UNDERLINE: // Draws a line at the baseline of the font @@ -247,7 +245,7 @@ export class CanvasRenderer { container: ReplacedElementContainer, curves: BoundCurves, image: HTMLImageElement | HTMLCanvasElement - ) { + ): void { if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) { const box = contentBox(container); const path = calculatePaddingBoxPath(curves); @@ -269,7 +267,7 @@ export class CanvasRenderer { } } - async renderNodeContent(paint: ElementPaint) { + async renderNodeContent(paint: ElementPaint): Promise { this.applyEffects(paint.effects, EffectTarget.CONTENT); const container = paint.container; const curves = paint.curves; @@ -456,7 +454,7 @@ export class CanvasRenderer { } } - async renderStackContent(stack: StackingContext) { + async renderStackContent(stack: StackingContext): Promise { // https://www.w3.org/TR/css-position-3/#painting-order // 1. the background and borders of the element forming the stacking context. await this.renderNodeBackgroundAndBorders(stack.element); @@ -504,7 +502,7 @@ export class CanvasRenderer { } } - mask(paths: Path[]) { + mask(paths: Path[]): void { this.ctx.beginPath(); this.ctx.moveTo(0, 0); this.ctx.lineTo(this.canvas.width, 0); @@ -515,13 +513,13 @@ export class CanvasRenderer { this.ctx.closePath(); } - path(paths: Path[]) { + path(paths: Path[]): void { this.ctx.beginPath(); this.formatPath(paths); this.ctx.closePath(); } - formatPath(paths: Path[]) { + formatPath(paths: Path[]): void { paths.forEach((point, index) => { const start: Vector = isBezierCurve(point) ? point.start : point; if (index === 0) { @@ -543,7 +541,7 @@ export class CanvasRenderer { }); } - renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number) { + renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void { this.path(path); this.ctx.fillStyle = pattern; this.ctx.translate(offsetX, offsetY); @@ -564,7 +562,7 @@ export class CanvasRenderer { return canvas; } - async renderBackgroundImage(container: ElementContainer) { + async renderBackgroundImage(container: ElementContainer): Promise { let index = container.styles.backgroundImage.length - 1; for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) { if (backgroundImage.type === CSSImageType.URL) { @@ -598,7 +596,7 @@ export class CanvasRenderer { const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; const gradient = ctx.createLinearGradient(x0, y0, x1, y1); - processColorStops(backgroundImage.stops, lineLength).forEach(colorStop => + processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) => gradient.addColorStop(colorStop.stop, asString(colorStop.color)) ); @@ -622,7 +620,7 @@ export class CanvasRenderer { if (rx > 0 && rx > 0) { const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx); - processColorStops(backgroundImage.stops, rx * 2).forEach(colorStop => + processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) => radialGradient.addColorStop(colorStop.stop, asString(colorStop.color)) ); @@ -651,13 +649,13 @@ export class CanvasRenderer { } } - async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves) { + async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise { this.path(parsePathForBorder(curvePoints, side)); this.ctx.fillStyle = asString(color); this.ctx.fill(); } - async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves) { + async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise { if (width < 3) { await this.renderSolidBorder(color, side, curvePoints); return; @@ -672,7 +670,7 @@ export class CanvasRenderer { this.ctx.fill(); } - async renderNodeBackgroundAndBorders(paint: ElementPaint) { + async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise { this.applyEffects(paint.effects, EffectTarget.BACKGROUND_BORDERS); const styles = paint.container.styles; const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length; @@ -706,7 +704,7 @@ export class CanvasRenderer { styles.boxShadow .slice(0) .reverse() - .forEach(shadow => { + .forEach((shadow) => { this.ctx.save(); const borderBoxArea = calculateBorderBoxPath(paint.curves); const maskOffset = shadow.inset ? 0 : MASK_OFFSET; @@ -774,7 +772,7 @@ export class CanvasRenderer { side: number, curvePoints: BoundCurves, style: BORDER_STYLE - ) { + ): Promise { this.ctx.save(); const strokePaths = parsePathForBorderStroke(curvePoints, side); diff --git a/src/render/canvas/foreignobject-renderer.ts b/src/render/canvas/foreignobject-renderer.ts index 222eca475..cee5971f1 100644 --- a/src/render/canvas/foreignobject-renderer.ts +++ b/src/render/canvas/foreignobject-renderer.ts @@ -20,13 +20,11 @@ export class ForeignObjectRenderer { this.ctx.scale(this.options.scale, this.options.scale); this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY); Logger.getInstance(options.id).debug( - `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${ - options.y - }) with scale ${options.scale}` + `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}` ); } - async render(element: HTMLElement) { + async render(element: HTMLElement): Promise { const svg = createForeignObjectSVG( Math.max(this.options.windowWidth, this.options.width) * this.options.scale, Math.max(this.options.windowHeight, this.options.height) * this.options.scale, diff --git a/src/render/stacking-context.ts b/src/render/stacking-context.ts index 5cba00bfd..9da970c9c 100644 --- a/src/render/stacking-context.ts +++ b/src/render/stacking-context.ts @@ -84,7 +84,7 @@ const parseStackTree = ( realStackingContext: StackingContext, listItems: ElementPaint[] ) => { - parent.container.elements.forEach(child => { + parent.container.elements.forEach((child) => { const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT); const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT); const paintContainer = new ElementPaint(child, parent.getParentEffects()); diff --git a/tests/karma.ts b/tests/karma.ts index edf896087..410674436 100644 --- a/tests/karma.ts +++ b/tests/karma.ts @@ -25,9 +25,9 @@ servers.push(corsApp.listen(8081)); karmaTestRunner() .then(() => { - servers.forEach(server => server.close()); + servers.forEach((server) => server.close()); }) - .catch(e => { + .catch((e) => { console.error(e); process.exit(1); }); diff --git a/tests/rollup.config.ts b/tests/rollup.config.ts index 58b40a656..fe7796cfa 100644 --- a/tests/rollup.config.ts +++ b/tests/rollup.config.ts @@ -1,8 +1,8 @@ -import nodeResolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; +import nodeResolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; import sourceMaps from 'rollup-plugin-sourcemaps'; -import typescript from 'rollup-plugin-typescript2'; -import json from 'rollup-plugin-json'; +import typescript from '@rollup/plugin-typescript'; +import json from '@rollup/plugin-json'; import {resolve} from 'path'; const pkg = require('../package.json'); @@ -36,14 +36,12 @@ export default { // Allow json resolution json(), // Compile TypeScript files - typescript({useTsconfigDeclarationDir: true, tsconfig: resolve(__dirname, 'tsconfig.json')}), + typescript({ + tsconfig: resolve(__dirname, 'tsconfig.json') + }), // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) commonjs({ - include: 'node_modules/**', - namedModules: { - 'node_modules/platform/platform.js': ['name', 'version'], - 'node_modules/es6-promise/dist/es6-promise.js': ['Promise'] - } + include: 'node_modules/**' }), // Resolve source maps to the original source diff --git a/tests/testrunner.ts b/tests/testrunner.ts index f93d2ef00..beefec246 100644 --- a/tests/testrunner.ts +++ b/tests/testrunner.ts @@ -42,11 +42,11 @@ const uploadResults = (canvas: HTMLCanvasElement, url: string) => { }; testList - .filter(test => { + .filter((test) => { return !Array.isArray(ignoredTests[test]) || ignoredTests[test].indexOf(platform.name || '') === -1; }) - .forEach(url => { - describe(url, function() { + .forEach((url) => { + describe(url, function () { this.timeout(60000); this.retries(2); const windowWidth = 800; @@ -58,7 +58,7 @@ testList testContainer.style.position = 'fixed'; testContainer.style.left = '10000px'; - before(done => { + before((done) => { testContainer.onload = () => done(); testContainer.src = url + '?selenium&run=false&reftest&' + Math.random(); diff --git a/tests/tsconfig.json b/tests/tsconfig.json index 168f06002..b453fbf6c 100644 --- a/tests/tsconfig.json +++ b/tests/tsconfig.json @@ -1,6 +1,9 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "types": ["node", "mocha"] - } + "types": ["node", "mocha"], + "rootDir": "../", + "declaration": false + }, + "include": ["**/*.ts"] } diff --git a/tsconfig.json b/tsconfig.json index 7d251ff6e..82e295997 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,14 +6,14 @@ "noUnusedParameters": true, "strictNullChecks": true, "strictPropertyInitialization": true, - "resolveJsonModule": true, "types": ["node", "jest"], "target": "es5", "lib": ["es2015", "dom"], "sourceMap": true, "outDir": "dist/lib", "declaration": true, - "declarationDir": "dist/types" + "declarationDir": "dist/types", + "resolveJsonModule": true }, "include": [ "src" diff --git a/www/src/preview.ts b/www/src/preview.ts index d780a1944..e85003236 100644 --- a/www/src/preview.ts +++ b/www/src/preview.ts @@ -62,7 +62,7 @@ const DOWN_ARROW = 40; const LEFT_ARROW = 37; const RIGHT_ARROW = 39; -window.addEventListener('keydown', e => { +window.addEventListener('keydown', (e) => { if (testSelector && browserSelector) { if (e.keyCode === UP_ARROW) { testSelector.selectedIndex = Math.max(0, testSelector.selectedIndex - 1); @@ -103,7 +103,7 @@ if (testSelector && browserSelector) { browserSelector.addEventListener( 'change', () => { - testList[testSelector.value].some(browser => { + testList[testSelector.value].some((browser) => { if (browser.id === browserSelector.value) { if (browser) { onBrowserChange(browser); From 44296e529368140ec06a937383e05f3074b19ee2 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 11 Jul 2021 22:11:29 +0800 Subject: [PATCH 300/377] fix: text-decoration-line fallback (#2088) (#2567) --- src/css/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/css/index.ts b/src/css/index.ts index fd3ef6803..af794d606 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -191,8 +191,11 @@ export class CSSParsedDeclaration { this.paddingLeft = parse(paddingLeft, declaration.paddingLeft); this.position = parse(position, declaration.position); this.textAlign = parse(textAlign, declaration.textAlign); - this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color); - this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine); + this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor ?? declaration.color); + this.textDecorationLine = parse( + textDecorationLine, + declaration.textDecorationLine ?? declaration.textDecoration + ); this.textShadow = parse(textShadow, declaration.textShadow); this.textTransform = parse(textTransform, declaration.textTransform); this.transform = parse(transform, declaration.transform); From 382853cb334f1a51e04d9fb820e6129aff2be01f Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 11 Jul 2021 14:15:36 +0000 Subject: [PATCH 301/377] chore(release): 1.1.0 --- CHANGELOG.md | 23 +++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3089f33f1..15709e58a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,29 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.1.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0...v1.1.0) (2021-07-11) + + +### ci + +* fail build if no artifacts uploaded (#2566) ([e7a021a](https://github.com/niklasvh/html2canvas/commit/e7a021ab931f3c0de060b4643e88fad85345c3d3)), closes [#2566](https://github.com/niklasvh/html2canvas/issues/2566) + +### deps + +* update dependencies with lint fixes (#2565) ([b2902ec](https://github.com/niklasvh/html2canvas/commit/b2902ec31c2a414ea26f864f8e00aa8846890ffc)), closes [#2565](https://github.com/niklasvh/html2canvas/issues/2565) + +### docs + +* update border-style support ([cf35a28](https://github.com/niklasvh/html2canvas/commit/cf35a282b2c9d41b601c3148e8c08fe7ba61a5f9)) + +### fix + +* Ensure resizeImage's canvas has at least 1px of width and height (#2409) ([bb92371](https://github.com/niklasvh/html2canvas/commit/bb9237155cf0ec090432ee6c5d9c555eb6ffa81f)), closes [#2409](https://github.com/niklasvh/html2canvas/issues/2409) +* text-decoration-line fallback (#2088) (#2567) ([44296e5](https://github.com/niklasvh/html2canvas/commit/44296e529368140ec06a937383e05f3074b19ee2)), closes [#2088](https://github.com/niklasvh/html2canvas/issues/2088) [#2567](https://github.com/niklasvh/html2canvas/issues/2567) +* use baseline for text positioning (#2109) ([85f79c1](https://github.com/niklasvh/html2canvas/commit/85f79c1a5e4c0b422ace552c430dd389c8477a44)), closes [#2109](https://github.com/niklasvh/html2canvas/issues/2109) + + + # [1.0.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0-rc.7...v1.0.0) (2021-07-04) diff --git a/package-lock.json b/package-lock.json index 8d6584c27..a97e8fca2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.0.0", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 85c707b01..476816b0c 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.0.0", + "version": "1.1.0", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 4555940d0bc17b7fd9327dd0164c382a3dbf1858 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 12 Jul 2021 19:01:43 +0800 Subject: [PATCH 302/377] fix: handle unhandled promise rejections (#2568) --- src/core/cache-storage.ts | 4 +- tests/reftests/iframe.html | 11 ++ tests/test.js | 4 + tests/testrunner.ts | 5 + www/package-lock.json | 202 +++++++++++++++++++++++++++++-------- www/package.json | 2 +- 6 files changed, 182 insertions(+), 46 deletions(-) diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 6231d4f4c..aad1fea6f 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -87,7 +87,9 @@ export class Cache { } if (isBlobImage(src) || isRenderable(src)) { - this._cache[src] = this.loadImage(src); + (this._cache[src] = this.loadImage(src)).catch(() => { + // prevent unhandled rejection + }); return result; } diff --git a/tests/reftests/iframe.html b/tests/reftests/iframe.html index 1aa7f0370..652a670ef 100644 --- a/tests/reftests/iframe.html +++ b/tests/reftests/iframe.html @@ -2,10 +2,21 @@ iframe test +
            Parent document content
            + diff --git a/tests/test.js b/tests/test.js index 946affea0..6e58cb86f 100644 --- a/tests/test.js +++ b/tests/test.js @@ -24,6 +24,10 @@ var REFTEST = window.location.search.indexOf('reftest') !== -1; ]) .forEach(appendScript); + window.addEventListener("unhandledrejection", function(event) { + console.info('UNHANDLED PROMISE REJECTION:', event); + }); + window.onload = function() { (function($) { $.fn.html2canvas = function(options) { diff --git a/tests/testrunner.ts b/tests/testrunner.ts index beefec246..15e86dd0d 100644 --- a/tests/testrunner.ts +++ b/tests/testrunner.ts @@ -86,6 +86,11 @@ testList throw new Error('Window not found for iframe'); } + contentWindow.addEventListener('unhandledrejection', (event) => { + console.error(event.reason); + throw new Error(`unhandledrejection: ${JSON.stringify(event.reason)}`); + }); + const canvas: HTMLCanvasElement = await contentWindow // @ts-ignore .html2canvas(contentWindow.forceElement || contentWindow.document.documentElement, { diff --git a/www/package-lock.json b/www/package-lock.json index 21eab0c0a..6494b2d04 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -23,7 +23,7 @@ "gatsby-transformer-remark": "^2.3.8", "glamor": "^2.20.40", "gzip-size": "^5.0.0", - "html2canvas": "^1.0.0-alpha.12", + "html2canvas": "file:../", "mkdirp": "^0.5.1", "prismjs": "^1.16.0", "react": "^16.8.6", @@ -34,6 +34,88 @@ "typography-theme-github": "^0.16.19" } }, + "..": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "css-line-break": "1.1.1" + }, + "devDependencies": { + "@babel/cli": "^7.4.3", + "@babel/core": "^7.4.3", + "@babel/preset-env": "^7.4.3", + "@babel/preset-flow": "^7.0.0", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", + "@types/chai": "^4.1.7", + "@types/express": "^4.17.13", + "@types/glob": "^7.1.1", + "@types/jest": "^26.0.24", + "@types/karma": "^6.3.0", + "@types/mocha": "^8.2.3", + "@types/node": "^16.3.1", + "@types/platform": "^1.3.4", + "@types/promise-polyfill": "^6.0.3", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "appium-ios-simulator": "^3.10.0", + "babel-eslint": "^10.0.1", + "babel-loader": "^8.0.5", + "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-dev-expression": "^0.2.1", + "base64-arraybuffer": "0.2.0", + "body-parser": "^1.19.0", + "chai": "4.1.1", + "chromeless": "^1.5.2", + "cors": "^2.8.5", + "es6-promise": "^4.2.8", + "eslint": "^7.30.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "3.4.0", + "express": "^4.17.1", + "filenamify-url": "1.0.0", + "glob": "7.1.3", + "html2canvas-proxy": "1.0.1", + "jest": "^27.0.6", + "jquery": "^3.5.1", + "js-polyfills": "^0.1.42", + "karma": "^6.3.2", + "karma-chrome-launcher": "^3.1.0", + "karma-edge-launcher": "^0.4.2", + "karma-firefox-launcher": "^2.1.0", + "karma-ie-launcher": "^1.0.0", + "karma-junit-reporter": "^2.0.1", + "karma-mocha": "^2.0.1", + "karma-safarinative-launcher": "^1.1.0", + "karma-sauce-launcher": "^2.0.2", + "mocha": "^9.0.2", + "node-simctl": "^5.3.0", + "platform": "^1.3.6", + "prettier": "^2.3.2", + "replace-in-file": "^3.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-sourcemaps": "^0.6.3", + "serve-index": "^1.9.1", + "slash": "1.0.0", + "standard-version": "^8.0.2", + "ts-jest": "^27.0.3", + "ts-loader": "^8.3.0", + "ts-node": "^10.1.0", + "tslib": "^2.3.0", + "typescript": "^4.3.5", + "uglify-js": "^3.13.10", + "uglifyjs-webpack-plugin": "^2.2.0", + "webpack": "^4.46.0", + "webpack-cli": "^3.3.12", + "yargs": "^17.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@ardatan/aggregate-error": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", @@ -3692,14 +3774,6 @@ "node": ">=0.10.0" } }, - "node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5512,14 +5586,6 @@ "isobject": "^3.0.1" } }, - "node_modules/css-line-break": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", - "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", - "dependencies": { - "base64-arraybuffer": "^0.1.5" - } - }, "node_modules/css-loader": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", @@ -12365,15 +12431,8 @@ "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" }, "node_modules/html2canvas": { - "version": "1.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", - "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=", - "dependencies": { - "css-line-break": "1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } + "resolved": "..", + "link": true }, "node_modules/htmlparser2": { "version": "3.10.1", @@ -26395,11 +26454,6 @@ } } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -27888,14 +27942,6 @@ "isobject": "^3.0.1" } }, - "css-line-break": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", - "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=", - "requires": { - "base64-arraybuffer": "^0.1.5" - } - }, "css-loader": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", @@ -33223,11 +33269,79 @@ "integrity": "sha512-SaGhCDPXJVNrQyKMtKy24q6IMdXg5FCPN3z+xizxw9l+oXQw5fOoaj/ERU5KqWhSYhXtW5bWthlDbTDLBhJQrA==" }, "html2canvas": { - "version": "1.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz", - "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=", - "requires": { - "css-line-break": "1.0.1" + "version": "file:..", + "requires": { + "@babel/cli": "^7.4.3", + "@babel/core": "^7.4.3", + "@babel/preset-env": "^7.4.3", + "@babel/preset-flow": "^7.0.0", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-typescript": "^8.2.1", + "@types/chai": "^4.1.7", + "@types/express": "^4.17.13", + "@types/glob": "^7.1.1", + "@types/jest": "^26.0.24", + "@types/karma": "^6.3.0", + "@types/mocha": "^8.2.3", + "@types/node": "^16.3.1", + "@types/platform": "^1.3.4", + "@types/promise-polyfill": "^6.0.3", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "appium-ios-simulator": "^3.10.0", + "babel-eslint": "^10.0.1", + "babel-loader": "^8.0.5", + "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-dev-expression": "^0.2.1", + "base64-arraybuffer": "0.2.0", + "body-parser": "^1.19.0", + "chai": "4.1.1", + "chromeless": "^1.5.2", + "cors": "^2.8.5", + "css-line-break": "1.1.1", + "es6-promise": "^4.2.8", + "eslint": "^7.30.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "3.4.0", + "express": "^4.17.1", + "filenamify-url": "1.0.0", + "glob": "7.1.3", + "html2canvas-proxy": "1.0.1", + "jest": "^27.0.6", + "jquery": "^3.5.1", + "js-polyfills": "^0.1.42", + "karma": "^6.3.2", + "karma-chrome-launcher": "^3.1.0", + "karma-edge-launcher": "^0.4.2", + "karma-firefox-launcher": "^2.1.0", + "karma-ie-launcher": "^1.0.0", + "karma-junit-reporter": "^2.0.1", + "karma-mocha": "^2.0.1", + "karma-safarinative-launcher": "^1.1.0", + "karma-sauce-launcher": "^2.0.2", + "mocha": "^9.0.2", + "node-simctl": "^5.3.0", + "platform": "^1.3.6", + "prettier": "^2.3.2", + "replace-in-file": "^3.0.0", + "rimraf": "^3.0.2", + "rollup": "^2.53.1", + "rollup-plugin-sourcemaps": "^0.6.3", + "serve-index": "^1.9.1", + "slash": "1.0.0", + "standard-version": "^8.0.2", + "ts-jest": "^27.0.3", + "ts-loader": "^8.3.0", + "ts-node": "^10.1.0", + "tslib": "^2.3.0", + "typescript": "^4.3.5", + "uglify-js": "^3.13.10", + "uglifyjs-webpack-plugin": "^2.2.0", + "webpack": "^4.46.0", + "webpack-cli": "^3.3.12", + "yargs": "^17.0.1" } }, "htmlparser2": { diff --git a/www/package.json b/www/package.json index 4989c375f..45c4e4d82 100644 --- a/www/package.json +++ b/www/package.json @@ -19,7 +19,7 @@ "gatsby-transformer-remark": "^2.3.8", "glamor": "^2.20.40", "gzip-size": "^5.0.0", - "html2canvas": "^1.0.0-alpha.12", + "html2canvas": "file:../", "mkdirp": "^0.5.1", "prismjs": "^1.16.0", "react": "^16.8.6", From 084017a67319a993d73c6bdf612dd8532f1b8dbe Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 12 Jul 2021 19:09:57 +0800 Subject: [PATCH 303/377] fix: crash on background-size with calc() (fix #2469) (#2569) --- src/render/background.ts | 4 ++++ tests/reftests/background/size.html | 1 + 2 files changed, 5 insertions(+) diff --git a/src/render/background.ts b/src/render/background.ts index 3fed4d326..6e0e877ea 100644 --- a/src/render/background.ts +++ b/src/render/background.ts @@ -91,6 +91,10 @@ export const calculateBackgroundSize = ( ): [number, number] => { const [first, second] = size; + if (!first) { + return [0, 0]; + } + if (isLengthPercentage(first) && second && isLengthPercentage(second)) { return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)]; } diff --git a/tests/reftests/background/size.html b/tests/reftests/background/size.html index d5511369b..48b7463da 100644 --- a/tests/reftests/background/size.html +++ b/tests/reftests/background/size.html @@ -61,6 +61,7 @@
          +
          From a4a3ce8a2eb6a4f43f1bc9a7935eb16f2b98a3cd Mon Sep 17 00:00:00 2001 From: mzand33 <59265790+mzand33@users.noreply.github.com> Date: Mon, 12 Jul 2021 07:14:01 -0400 Subject: [PATCH 304/377] fix: allow proxy url with parameters (#2100) --- src/core/cache-storage.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index aad1fea6f..45895f687 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -180,7 +180,8 @@ export class Cache { }; xhr.onerror = reject; - xhr.open('GET', `${proxy}?url=${encodeURIComponent(src)}&responseType=${responseType}`); + const queryString = proxy.indexOf('?') > -1 ? '&' : '?'; + xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`); if (responseType !== 'text' && xhr instanceof XMLHttpRequest) { xhr.responseType = responseType; From 99b8182991801095c1dbbd6665b2752cf105be2e Mon Sep 17 00:00:00 2001 From: CI Date: Mon, 12 Jul 2021 11:31:49 +0000 Subject: [PATCH 305/377] chore(release): 1.1.1 --- CHANGELOG.md | 11 +++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15709e58a..ab41d964f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.1.1](https://github.com/niklasvh/html2canvas/compare/v1.1.0...v1.1.1) (2021-07-12) + + +### fix + +* allow proxy url with parameters (#2100) ([a4a3ce8](https://github.com/niklasvh/html2canvas/commit/a4a3ce8a2eb6a4f43f1bc9a7935eb16f2b98a3cd)), closes [#2100](https://github.com/niklasvh/html2canvas/issues/2100) +* crash on background-size with calc() (fix #2469) (#2569) ([084017a](https://github.com/niklasvh/html2canvas/commit/084017a67319a993d73c6bdf612dd8532f1b8dbe)), closes [#2469](https://github.com/niklasvh/html2canvas/issues/2469) [#2569](https://github.com/niklasvh/html2canvas/issues/2569) +* handle unhandled promise rejections (#2568) ([4555940](https://github.com/niklasvh/html2canvas/commit/4555940d0bc17b7fd9327dd0164c382a3dbf1858)), closes [#2568](https://github.com/niklasvh/html2canvas/issues/2568) + + + # [1.1.0](https://github.com/niklasvh/html2canvas/compare/v1.0.0...v1.1.0) (2021-07-11) diff --git a/package-lock.json b/package-lock.json index a97e8fca2..bc4fcb3a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 476816b0c..a5fb15efb 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.1.0", + "version": "1.1.1", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 171585491dd1bee4f30691328bd22e978f3ac79e Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 13 Jul 2021 18:07:09 +0800 Subject: [PATCH 306/377] fix: logger unique names (#2575) --- src/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 8331f845c..5b5fc8ae6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -29,7 +29,12 @@ if (typeof window !== 'undefined') { CacheStorage.setContext(window); } +let instanceCount = 1; + const renderElement = async (element: HTMLElement, opts: Partial): Promise => { + if (typeof element !== 'object') { + return Promise.reject('Invalid element provided as first argument'); + } const ownerDocument = element.ownerDocument; if (!ownerDocument) { @@ -42,7 +47,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom throw new Error(`Document is not attached to a Window`); } - const instanceName = (Math.round(Math.random() * 1000) + Date.now()).toString(16); + const instanceName = `#${instanceCount++}`; const {width, height, left, top} = isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element); From e29af586618125bbad10ad6bee3d69fddbc5d22a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 13 Jul 2021 18:48:18 +0800 Subject: [PATCH 307/377] ci: implement screenshot diffing (#2571) --- .github/workflows/ci.yml | 40 ++++++ package-lock.json | 264 ++++++++++++++++++++++++++++++++++++++- package.json | 3 + tests/reftest-diff.ts | 32 +++++ 4 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 tests/reftest-diff.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15de11611..bc0771214 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -309,3 +309,43 @@ jobs: FOLDER: docs SINGLE_COMMIT: true CLEAN: true + diff-reftests: + runs-on: ubuntu-latest + name: Diff reftest screenshots + needs: browser-test + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Npm install + run: npm ci + - name: Checkout current snapshots + run: git checkout origin/gh-pages results + - name: Download test results + uses: actions/download-artifact@v2 + with: + name: reftest-results + path: tmp/reftests + - name: Run diff + run: npm run reftests-diff + continue-on-error: true + - name: Upload diff + uses: actions/upload-artifact@v2 + with: + name: snapshot-diffs + path: tmp/snapshot-diffs diff --git a/package-lock.json b/package-lock.json index bc4fcb3a5..9622d7bd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "requires": true, "packages": { "": { - "version": "1.0.0", + "version": "1.1.0", "license": "MIT", "dependencies": { "css-line-break": "1.1.1" @@ -23,6 +23,7 @@ "@types/express": "^4.17.13", "@types/glob": "^7.1.1", "@types/jest": "^26.0.24", + "@types/jest-image-snapshot": "^4.3.1", "@types/karma": "^6.3.0", "@types/mocha": "^8.2.3", "@types/node": "^16.3.1", @@ -49,6 +50,7 @@ "glob": "7.1.3", "html2canvas-proxy": "1.0.1", "jest": "^27.0.6", + "jest-image-snapshot": "^4.5.1", "jquery": "^3.5.1", "js-polyfills": "^0.1.42", "karma": "^6.3.2", @@ -3758,6 +3760,17 @@ "pretty-format": "^26.0.0" } }, + "node_modules/@types/jest-image-snapshot": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/jest-image-snapshot/-/jest-image-snapshot-4.3.1.tgz", + "integrity": "sha512-WDdUruGF14C53axe/mNDgQP2YIhtcwXrwmmVP8eOGyfNTVD+FbxWjWR7RTU+lzEy4K6V6+z7nkVDm/auI/r3xQ==", + "dev": true, + "dependencies": { + "@types/jest": "*", + "@types/pixelmatch": "*", + "ssim.js": "^3.1.1" + } + }, "node_modules/@types/jest/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", @@ -3962,6 +3975,15 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "node_modules/@types/pixelmatch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.4.tgz", + "integrity": "sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/platform": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.4.tgz", @@ -12886,6 +12908,12 @@ "node": ">=8" } }, + "node_modules/glur": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz", + "integrity": "sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok=", + "dev": true + }, "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -12978,6 +13006,18 @@ "node": ">= 0.4.0" } }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -15313,6 +15353,105 @@ "node": ">=8.0" } }, + "node_modules/jest-image-snapshot": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/jest-image-snapshot/-/jest-image-snapshot-4.5.1.tgz", + "integrity": "sha512-0YkgupgkkCx0wIZkxvqs/oNiUT0X0d2WTpUhaAp+Dy6CpqBUZMRTIZo4KR1f+dqmx6WXrLCvecjnHLIsLkI+gQ==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "get-stdin": "^5.0.1", + "glur": "^1.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "pixelmatch": "^5.1.0", + "pngjs": "^3.4.0", + "rimraf": "^2.6.2", + "ssim.js": "^3.1.1" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "jest": ">=20 <=27" + } + }, + "node_modules/jest-image-snapshot/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-image-snapshot/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-image-snapshot/node_modules/get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jest-image-snapshot/node_modules/pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "dependencies": { + "pngjs": "^4.0.1" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/jest-image-snapshot/node_modules/pixelmatch/node_modules/pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/jest-image-snapshot/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/jest-image-snapshot/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/jest-jasmine2": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", @@ -22207,6 +22346,12 @@ "tweetnacl": "~0.14.0" } }, + "node_modules/ssim.js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ssim.js/-/ssim.js-3.5.0.tgz", + "integrity": "sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==", + "dev": true + }, "node_modules/ssri": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", @@ -28773,6 +28918,17 @@ } } }, + "@types/jest-image-snapshot": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/jest-image-snapshot/-/jest-image-snapshot-4.3.1.tgz", + "integrity": "sha512-WDdUruGF14C53axe/mNDgQP2YIhtcwXrwmmVP8eOGyfNTVD+FbxWjWR7RTU+lzEy4K6V6+z7nkVDm/auI/r3xQ==", + "dev": true, + "requires": { + "@types/jest": "*", + "@types/pixelmatch": "*", + "ssim.js": "^3.1.1" + } + }, "@types/json-schema": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", @@ -28825,6 +28981,15 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "@types/pixelmatch": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.4.tgz", + "integrity": "sha512-HDaSHIAv9kwpMN7zlmwfTv6gax0PiporJOipcrGsVNF3Ba+kryOZc0Pio5pn6NhisgWr7TaajlPEKTbTAypIBQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/platform": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/platform/-/platform-1.3.4.tgz", @@ -36075,6 +36240,12 @@ } } }, + "glur": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glur/-/glur-1.1.2.tgz", + "integrity": "sha1-8g6jbbEDv8KSNDkh8fkeg8NGdok=", + "dev": true + }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -36145,6 +36316,15 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -37990,6 +38170,82 @@ } } }, + "jest-image-snapshot": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/jest-image-snapshot/-/jest-image-snapshot-4.5.1.tgz", + "integrity": "sha512-0YkgupgkkCx0wIZkxvqs/oNiUT0X0d2WTpUhaAp+Dy6CpqBUZMRTIZo4KR1f+dqmx6WXrLCvecjnHLIsLkI+gQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "get-stdin": "^5.0.1", + "glur": "^1.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "pixelmatch": "^5.1.0", + "pngjs": "^3.4.0", + "rimraf": "^2.6.2", + "ssim.js": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "pixelmatch": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", + "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", + "dev": true, + "requires": { + "pngjs": "^4.0.1" + }, + "dependencies": { + "pngjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", + "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", + "dev": true + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, "jest-jasmine2": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz", @@ -43377,6 +43633,12 @@ "tweetnacl": "~0.14.0" } }, + "ssim.js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ssim.js/-/ssim.js-3.5.0.tgz", + "integrity": "sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g==", + "dev": true + }, "ssri": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", diff --git a/package.json b/package.json index a5fb15efb..13015f997 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@types/express": "^4.17.13", "@types/glob": "^7.1.1", "@types/jest": "^26.0.24", + "@types/jest-image-snapshot": "^4.3.1", "@types/karma": "^6.3.0", "@types/mocha": "^8.2.3", "@types/node": "^16.3.1", @@ -61,6 +62,7 @@ "glob": "7.1.3", "html2canvas-proxy": "1.0.1", "jest": "^27.0.6", + "jest-image-snapshot": "^4.5.1", "jquery": "^3.5.1", "js-polyfills": "^0.1.42", "karma": "^6.3.2", @@ -107,6 +109,7 @@ "lint": "eslint src/**/*.ts --max-warnings 0", "test": "npm run lint && npm run unittest && npm run karma", "unittest": "jest", + "reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts", "karma": "ts-node tests/karma", "watch": "rollup -c rollup.config.ts -w", "watch:unittest": "mocha --require ts-node/register --watch-extensions ts -w src/**/__tests__/*.ts", diff --git a/tests/reftest-diff.ts b/tests/reftest-diff.ts new file mode 100644 index 000000000..3526fff20 --- /dev/null +++ b/tests/reftest-diff.ts @@ -0,0 +1,32 @@ +import {sync} from 'glob'; +import {resolve, basename} from 'path'; +import {existsSync, promises} from 'fs'; +import {toMatchImageSnapshot} from 'jest-image-snapshot'; + +const resultsDir = resolve(__dirname, '../results'); +const customSnapshotsDir = resolve(__dirname, '../tmp/snapshots'); +const customDiffDir = resolve(__dirname, '../tmp/snapshot-diffs'); + +expect.extend({toMatchImageSnapshot}); + +describe('Image diff', () => { + const files: string[] = sync('../tmp/reftests/**/*.png', { + cwd: __dirname, + root: resolve(__dirname, '../../') + }).filter((path) => existsSync(resolve(resultsDir, basename(path)))); + + it.each(files.map((path) => basename(path)))('%s', async (filename) => { + const previous = resolve(resultsDir, filename); + const previousSnap = resolve(customSnapshotsDir, `${filename}-snap.png`); + await promises.copyFile(previous, previousSnap); + const updated = resolve(__dirname, '../tmp/reftests/', filename); + const buffer = await promises.readFile(updated); + + // @ts-ignore + expect(buffer).toMatchImageSnapshot({ + customSnapshotsDir, + customSnapshotIdentifier: () => filename, + customDiffDir + }); + }); +}); From 439e365ea8c703b528778a268dcfc3bf9ccad6a9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 13 Jul 2021 19:14:27 +0800 Subject: [PATCH 308/377] fix: text-shadow position with baseline (#2576) --- src/render/canvas/canvas-renderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 2c6a63925..5cd9f32d8 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -198,7 +198,7 @@ export class CanvasRenderer { this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale; this.ctx.shadowBlur = textShadow.blur.number; - this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height); + this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); }); this.ctx.shadowColor = ''; From 52a03c76b6dc6458e91702a55b323b8d9eae54ea Mon Sep 17 00:00:00 2001 From: CI Date: Tue, 13 Jul 2021 14:01:24 +0000 Subject: [PATCH 309/377] chore(release): 1.1.2 --- CHANGELOG.md | 14 ++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab41d964f..0146cc28a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.1.2](https://github.com/niklasvh/html2canvas/compare/v1.1.1...v1.1.2) (2021-07-13) + + +### ci + +* implement screenshot diffing (#2571) ([e29af58](https://github.com/niklasvh/html2canvas/commit/e29af586618125bbad10ad6bee3d69fddbc5d22a)), closes [#2571](https://github.com/niklasvh/html2canvas/issues/2571) + +### fix + +* logger unique names (#2575) ([1715854](https://github.com/niklasvh/html2canvas/commit/171585491dd1bee4f30691328bd22e978f3ac79e)), closes [#2575](https://github.com/niklasvh/html2canvas/issues/2575) +* text-shadow position with baseline (#2576) ([439e365](https://github.com/niklasvh/html2canvas/commit/439e365ea8c703b528778a268dcfc3bf9ccad6a9)), closes [#2576](https://github.com/niklasvh/html2canvas/issues/2576) + + + ## [1.1.1](https://github.com/niklasvh/html2canvas/compare/v1.1.0...v1.1.1) (2021-07-12) diff --git a/package-lock.json b/package-lock.json index 9622d7bd7..977ed20c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.1.1", + "version": "1.1.2", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 13015f997..e071169bf 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.1.1", + "version": "1.1.2", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From eeb5a3ea1d6c94e0f6dcfd40695eb88ebb3e0041 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 16:18:43 +0800 Subject: [PATCH 310/377] fix: iframe load to ensure images are loaded (#2577) --- src/dom/document-cloner.ts | 44 +++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index a87221e7c..2bf940d37 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -97,6 +97,10 @@ export class DocumentCloner { await documentClone.fonts.ready; } + if (/(AppleWebKit)/g.test(navigator.userAgent)) { + await imagesReady(documentClone); + } + if (typeof onclone === 'function') { return Promise.resolve() .then(() => onclone(documentClone)) @@ -462,6 +466,25 @@ const createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFr return cloneIframeContainer; }; +const imageReady = (img: HTMLImageElement): Promise => { + return new Promise((resolve) => { + if (img.complete) { + resolve(); + return; + } + if (!img.src) { + resolve(); + return; + } + img.onload = resolve; + img.onerror = resolve; + }); +}; + +const imagesReady = (document: HTMLDocument): Promise => { + return Promise.all([].slice.call(document.images, 0).map(imageReady)); +}; + const iframeLoader = (iframe: HTMLIFrameElement): Promise => { return new Promise((resolve, reject) => { const cloneWindow = iframe.contentWindow; @@ -472,18 +495,15 @@ const iframeLoader = (iframe: HTMLIFrameElement): Promise => const documentClone = cloneWindow.document; - cloneWindow.onload = - iframe.onload = - documentClone.onreadystatechange = - () => { - cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null; - const interval = setInterval(() => { - if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') { - clearInterval(interval); - resolve(iframe); - } - }, 50); - }; + cloneWindow.onload = iframe.onload = () => { + cloneWindow.onload = iframe.onload = null; + const interval = setInterval(() => { + if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') { + clearInterval(interval); + resolve(iframe); + } + }, 50); + }; }); }; From acb4cd24b85527908c02a60794768949578678f0 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 17:59:08 +0800 Subject: [PATCH 311/377] feat: support for custom and slot elements (#2581) --- src/dom/node-parser.ts | 42 +++++++++------ .../autonomous-custom-element.js | 45 ++++++++++++++++ tests/reftests/webcomponents/slot-element.js | 51 ++++++++++++++++++ .../reftests/webcomponents/webcomponents.html | 53 +++++++++++++++++++ 4 files changed, 176 insertions(+), 15 deletions(-) create mode 100644 tests/reftests/webcomponents/autonomous-custom-element.js create mode 100644 tests/reftests/webcomponents/slot-element.js create mode 100644 tests/reftests/webcomponents/webcomponents.html diff --git a/src/dom/node-parser.ts b/src/dom/node-parser.ts index adf4256fd..f00c02b5f 100644 --- a/src/dom/node-parser.ts +++ b/src/dom/node-parser.ts @@ -20,21 +20,32 @@ const parseNodeTree = (node: Node, parent: ElementContainer, root: ElementContai if (isTextNode(childNode) && childNode.data.trim().length > 0) { parent.textNodes.push(new TextContainer(childNode, parent.styles)); } else if (isElementNode(childNode)) { - const container = createContainer(childNode); - if (container.styles.isVisible()) { - if (createsRealStackingContext(childNode, container, root)) { - container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT; - } else if (createsStackingContext(container.styles)) { - container.flags |= FLAGS.CREATES_STACKING_CONTEXT; - } - - if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { - container.flags |= FLAGS.IS_LIST_OWNER; - } - - parent.elements.push(container); - if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) { - parseNodeTree(childNode, container, root); + if (isSlotElement(childNode) && childNode.assignedNodes) { + childNode.assignedNodes().forEach((childNode) => parseNodeTree(childNode, parent, root)); + } else { + const container = createContainer(childNode); + if (container.styles.isVisible()) { + if (createsRealStackingContext(childNode, container, root)) { + container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT; + } else if (createsStackingContext(container.styles)) { + container.flags |= FLAGS.CREATES_STACKING_CONTEXT; + } + + if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { + container.flags |= FLAGS.IS_LIST_OWNER; + } + + parent.elements.push(container); + childNode.slot; + if (childNode.shadowRoot) { + parseNodeTree(childNode.shadowRoot, container, root); + } else if ( + !isTextareaElement(childNode) && + !isSVGElement(childNode) && + !isSelectElement(childNode) + ) { + parseNodeTree(childNode, container, root); + } } } } @@ -118,3 +129,4 @@ export const isStyleElement = (node: Element): node is HTMLStyleElement => node. export const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT'; export const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA'; export const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT'; +export const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT'; diff --git a/tests/reftests/webcomponents/autonomous-custom-element.js b/tests/reftests/webcomponents/autonomous-custom-element.js new file mode 100644 index 000000000..659cb568a --- /dev/null +++ b/tests/reftests/webcomponents/autonomous-custom-element.js @@ -0,0 +1,45 @@ +class AutonomousCustomElement extends HTMLElement { + constructor() { + super(); + + const shadow = this.attachShadow({mode: 'open'}); + const wrapper = document.createElement('span'); + wrapper.setAttribute('class', 'wrapper'); + + const info = document.createElement('span'); + info.setAttribute('class', 'info'); + + info.textContent = this.getAttribute('text'); + + const img = document.createElement('img'); + img.src = this.getAttribute('img'); + + // Create some CSS to apply to the shadow dom + const style = document.createElement('style'); + + style.textContent = ` + .wrapper { + position: relative; + } + .info { + font-size: 0.8rem; + width: 200px; + display: inline-block; + border: 1px solid black; + padding: 10px; + background: white; + border-radius: 10px; + } + img { + width: 100px; + } + `; + + shadow.appendChild(style); + shadow.appendChild(wrapper); + wrapper.appendChild(img); + wrapper.appendChild(info); + } +} + +customElements.define('autonomous-custom-element', AutonomousCustomElement); diff --git a/tests/reftests/webcomponents/slot-element.js b/tests/reftests/webcomponents/slot-element.js new file mode 100644 index 000000000..53595ba17 --- /dev/null +++ b/tests/reftests/webcomponents/slot-element.js @@ -0,0 +1,51 @@ +customElements.define('summary-display', + class extends HTMLElement { + constructor() { + super(); + + const template = document.getElementById('summary-display-template'); + const templateContent = template.content; + + const shadowRoot = this.attachShadow({mode: 'open'}); + shadowRoot.appendChild(templateContent.cloneNode(true)); + + const items = Array.from(this.querySelectorAll('li')); + const descriptions = Array.from(this.querySelectorAll('p')); + + items.forEach(item => { + handleClick(item); + }); + + descriptions.forEach(description => { + updateDisplay(description, items[1]); + }); + + function handleClick(item) { + item.addEventListener('click', function() { + items.forEach(item => { + item.style.backgroundColor = 'white'; + }); + + descriptions.forEach(description => { + updateDisplay(description, item); + }); + }); + } + + function updateDisplay(description, item) { + description.removeAttribute('slot'); + + if(description.getAttribute('data-name') === item.textContent) { + description.setAttribute('slot', 'choice'); + item.style.backgroundColor = '#bad0e4'; + } + } + + const slots = this.shadowRoot.querySelectorAll('slot'); + slots[1].addEventListener('slotchange', function(e) { + const nodes = slots[1].assignedNodes(); + console.log(`Element in Slot "${slots[1].name}" changed to "${nodes[0].outerHTML}".`); + }); + } + } +); diff --git a/tests/reftests/webcomponents/webcomponents.html b/tests/reftests/webcomponents/webcomponents.html new file mode 100644 index 000000000..cfa59f110 --- /dev/null +++ b/tests/reftests/webcomponents/webcomponents.html @@ -0,0 +1,53 @@ + + + + Web components tests + + + + + +
          +

          Autonomous custom element

          + +

          Slot element

          + +
            +
          • Apples
          • +
          • Pears
          • +
          • Bananas
          • +
          • Oranges
          • +
          • Peaches
          • +
          • Strawberries
          • +
          • Blueberries
          • +
          + +

          A common, sweet, crunchy fruit, usually green or yellow in color.

          +

          A fairly common, sweet, usually green fruit, usually softer than Apples.

          +

          A long, curved, yellow fruit, with a fairly gentle flavor.

          +

          Orange in color, usually sweet but can be sharp, often contains pips.

          +

          An orange fruit with big stone in the middle, and sweet, juicy flesh.

          +

          A red fruit with yellow seeds on the outside; has a sweet flavor and a pretty shape.

          +

          They are berries and they are blue; sweet in flavor, small in size, round.

          +
          + + + + + +
          + + + + From 1acdc827a4e05933c2f7c9558405c66b7cd82f58 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 20:21:57 +0800 Subject: [PATCH 312/377] fix: image blob rendering --- src/core/cache-storage.ts | 10 ++++- src/dom/document-cloner.ts | 70 +------------------------------ src/index.ts | 2 +- tests/reftests/images/images.html | 14 +++++++ 4 files changed, 26 insertions(+), 70 deletions(-) diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 45895f687..82e1dc0f1 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -108,10 +108,18 @@ export class Cache { const useProxy = !isInlineImage(key) && !isSameOrigin && + !isBlobImage(key) && typeof this._options.proxy === 'string' && FEATURES.SUPPORT_CORS_XHR && !useCORS; - if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) { + if ( + !isSameOrigin && + this._options.allowTaint === false && + !isInlineImage(key) && + !isBlobImage(key) && + !useProxy && + !useCORS + ) { return; } diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 2bf940d37..779ad4bf3 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -124,11 +124,7 @@ export class DocumentCloner { if (isCanvasElement(node)) { return this.createCanvasClone(node); } - /* - if (isIFrameElement(node)) { - return this.createIFrameClone(node); - } -*/ + if (isStyleElement(node)) { return this.createStyleClone(node); } @@ -195,67 +191,7 @@ export class DocumentCloner { return clonedCanvas; } - /* - createIFrameClone(iframe: HTMLIFrameElement) { - const tempIframe = iframe.cloneNode(false); - const iframeKey = generateIframeKey(); - tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey); - - const {width, height} = parseBounds(iframe); - - this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(iframe, this.options) - .then(documentElement => { - return this.renderer( - documentElement, - { - allowTaint: this.options.allowTaint, - backgroundColor: '#ffffff', - canvas: null, - imageTimeout: this.options.imageTimeout, - logging: this.options.logging, - proxy: this.options.proxy, - removeContainer: this.options.removeContainer, - scale: this.options.scale, - foreignObjectRendering: this.options.foreignObjectRendering, - useCORS: this.options.useCORS, - target: new CanvasRenderer(), - width, - height, - x: 0, - y: 0, - windowWidth: documentElement.ownerDocument.defaultView.innerWidth, - windowHeight: documentElement.ownerDocument.defaultView.innerHeight, - scrollX: documentElement.ownerDocument.defaultView.pageXOffset, - scrollY: documentElement.ownerDocument.defaultView.pageYOffset - }, - ); - }) - .then( - (canvas: HTMLCanvasElement) => - new Promise((resolve, reject) => { - const iframeCanvas = document.createElement('img'); - iframeCanvas.onload = () => resolve(canvas); - iframeCanvas.onerror = (event) => { - // Empty iframes may result in empty "data:," URLs, which are invalid from the 's point of view - // and instead of `onload` cause `onerror` and unhandled rejection warnings - // https://github.com/niklasvh/html2canvas/issues/1502 - iframeCanvas.src == 'data:,' ? resolve(canvas) : reject(event); - }; - iframeCanvas.src = canvas.toDataURL(); - if (tempIframe.parentNode && iframe.ownerDocument && iframe.ownerDocument.defaultView) { - tempIframe.parentNode.replaceChild( - copyCSSStyles( - iframe.ownerDocument.defaultView.getComputedStyle(iframe), - iframeCanvas - ), - tempIframe - ); - } - }) - ); - return tempIframe; - } -*/ + cloneNode(node: Node): Node { if (isTextNode(node)) { return document.createTextNode(node.data); @@ -312,8 +248,6 @@ export class DocumentCloner { copyCSSStyles(style, clone); } - //this.inlineAllImages(clone); - if (node.scrollTop !== 0 || node.scrollLeft !== 0) { this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]); } diff --git a/src/index.ts b/src/index.ts index 5b5fc8ae6..c6eb7b0cc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -32,7 +32,7 @@ if (typeof window !== 'undefined') { let instanceCount = 1; const renderElement = async (element: HTMLElement, opts: Partial): Promise => { - if (typeof element !== 'object') { + if (!element || typeof element !== 'object') { return Promise.reject('Invalid element provided as first argument'); } const ownerDocument = element.ownerDocument; diff --git a/tests/reftests/images/images.html b/tests/reftests/images/images.html index 74564488c..e478316d3 100644 --- a/tests/reftests/images/images.html +++ b/tests/reftests/images/images.html @@ -24,5 +24,19 @@ + From 92fa448913192d5e4e82bfe14f6644b669d4e6ef Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 20:44:04 +0800 Subject: [PATCH 313/377] fix: responsive svg images (#2583) --- src/dom/replaced-elements/svg-element-container.ts | 5 +++++ tests/reftests/images/svg/native_only.html | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dom/replaced-elements/svg-element-container.ts b/src/dom/replaced-elements/svg-element-container.ts index 118f9bef5..62511bed7 100644 --- a/src/dom/replaced-elements/svg-element-container.ts +++ b/src/dom/replaced-elements/svg-element-container.ts @@ -1,5 +1,6 @@ import {ElementContainer} from '../element-container'; import {CacheStorage} from '../../core/cache-storage'; +import {parseBounds} from '../../css/layout/bounds'; export class SVGElementContainer extends ElementContainer { svg: string; @@ -9,6 +10,10 @@ export class SVGElementContainer extends ElementContainer { constructor(img: SVGSVGElement) { super(img); const s = new XMLSerializer(); + const bounds = parseBounds(img); + img.setAttribute('width', `${bounds.width}px`); + img.setAttribute('height', `${bounds.height}px`); + this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`; this.intrinsicWidth = img.width.baseVal.value; this.intrinsicHeight = img.height.baseVal.value; diff --git a/tests/reftests/images/svg/native_only.html b/tests/reftests/images/svg/native_only.html index 95709a83d..341258c3a 100644 --- a/tests/reftests/images/svg/native_only.html +++ b/tests/reftests/images/svg/native_only.html @@ -34,7 +34,7 @@ style="fill:#40aa54;fill-opacity:1;stroke:#20552a;stroke-width:7.99999952;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/> - + html 2 canvas From 58b45911741c0dbbccd462b2976560bb3999eaef Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 21:07:10 +0800 Subject: [PATCH 314/377] feat: allow access to reference element in onclone (#2584) --- src/dom/document-cloner.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 779ad4bf3..b4a234e9c 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -24,7 +24,7 @@ import {getQuote} from '../css/property-descriptors/quotes'; export interface CloneOptions { id: string; ignoreElements?: (element: Element) => boolean; - onclone?: (document: Document) => void; + onclone?: (document: Document, element: HTMLElement) => void; } export type CloneConfigurations = CloneOptions & { @@ -89,7 +89,9 @@ export class DocumentCloner { const onclone = this.options.onclone; - if (typeof this.clonedReferenceElement === 'undefined') { + const referenceElement = this.clonedReferenceElement; + + if (typeof referenceElement === 'undefined') { return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`); } @@ -103,7 +105,7 @@ export class DocumentCloner { if (typeof onclone === 'function') { return Promise.resolve() - .then(() => onclone(documentClone)) + .then(() => onclone(documentClone, referenceElement)) .then(() => iframe); } From 1d00bfe175d51e663d0bae88b6dbd10a266a71f1 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 21:07:39 +0800 Subject: [PATCH 315/377] test: add test cases for text-stroke and textarea from (#1540 and #2132) (#2585) --- tests/reftests/text/stroke.html | 73 +++++++++++++++++++++++++++++++ tests/reftests/text/textarea.html | 67 ++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 tests/reftests/text/stroke.html create mode 100644 tests/reftests/text/textarea.html diff --git a/tests/reftests/text/stroke.html b/tests/reftests/text/stroke.html new file mode 100644 index 000000000..171a67a81 --- /dev/null +++ b/tests/reftests/text/stroke.html @@ -0,0 +1,73 @@ + + + + Text stroke tests + + + + + +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have a stroke + Bolder stroke that makes things pretty +
          +
          + Some text with bigger text that should have no stroke + Bolder text that makes things pretty +
          + + diff --git a/tests/reftests/text/textarea.html b/tests/reftests/text/textarea.html new file mode 100644 index 000000000..05b379971 --- /dev/null +++ b/tests/reftests/text/textarea.html @@ -0,0 +1,67 @@ + + + + textarea + + + + + + +
          +

          1. word wrap

          + + +

          2. padding

          + + +

          3. line height

          + + +

          4. letter spacing

          + +
          +
          +

          5. multiple spaces

          + + +

          6. newlines

          + + +

          7. long word

          + + +

          8. hyphen

          + +
          +
          +

          9. kerning

          + + +

          10. kerning with letter spacing

          + + +

          11. kerning with letter spacing

          + + +
          + + From 99b687c41236964c79436f5ebc9f8f81c3d14739 Mon Sep 17 00:00:00 2001 From: CI Date: Wed, 14 Jul 2021 13:08:25 +0000 Subject: [PATCH 316/377] chore(release): 1.1.3 --- CHANGELOG.md | 20 ++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0146cc28a..64c9f02d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.1.3](https://github.com/niklasvh/html2canvas/compare/v1.1.2...v1.1.3) (2021-07-14) + + +### feat + +* allow access to reference element in onclone (#2584) ([58b4591](https://github.com/niklasvh/html2canvas/commit/58b45911741c0dbbccd462b2976560bb3999eaef)), closes [#2584](https://github.com/niklasvh/html2canvas/issues/2584) +* support for custom and slot elements (#2581) ([acb4cd2](https://github.com/niklasvh/html2canvas/commit/acb4cd24b85527908c02a60794768949578678f0)), closes [#2581](https://github.com/niklasvh/html2canvas/issues/2581) + +### fix + +* iframe load to ensure images are loaded (#2577) ([eeb5a3e](https://github.com/niklasvh/html2canvas/commit/eeb5a3ea1d6c94e0f6dcfd40695eb88ebb3e0041)), closes [#2577](https://github.com/niklasvh/html2canvas/issues/2577) +* image blob rendering ([1acdc82](https://github.com/niklasvh/html2canvas/commit/1acdc827a4e05933c2f7c9558405c66b7cd82f58)) +* responsive svg images (#2583) ([92fa448](https://github.com/niklasvh/html2canvas/commit/92fa448913192d5e4e82bfe14f6644b669d4e6ef)), closes [#2583](https://github.com/niklasvh/html2canvas/issues/2583) + +### test + +* add test cases for text-stroke and textarea from (#1540 and #2132) (#2585) ([1d00bfe](https://github.com/niklasvh/html2canvas/commit/1d00bfe175d51e663d0bae88b6dbd10a266a71f1)), closes [#1540](https://github.com/niklasvh/html2canvas/issues/1540) [#2132](https://github.com/niklasvh/html2canvas/issues/2132) [#2585](https://github.com/niklasvh/html2canvas/issues/2585) + + + ## [1.1.2](https://github.com/niklasvh/html2canvas/compare/v1.1.1...v1.1.2) (2021-07-13) diff --git a/package-lock.json b/package-lock.json index 977ed20c8..df68ceac2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.1.2", + "version": "1.1.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index e071169bf..c33d61074 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.1.2", + "version": "1.1.3", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From fa60716d07ed590ec64543a586a7960cbc8557df Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 14 Jul 2021 22:49:52 +0800 Subject: [PATCH 317/377] fix: don't copy 'all' css property (#2586) --- src/dom/document-cloner.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index b4a234e9c..07bc56063 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -448,7 +448,7 @@ export const copyCSSStyles = (style: CSSStyl for (let i = style.length - 1; i >= 0; i--) { const property = style.item(i); // Safari shows pseudoelements if content is set - if (property !== 'content') { + if (property !== 'content' && property !== 'all') { target.style.setProperty(property, style.getPropertyValue(property)); } } From cd99f11b1b9eb1260a548a63e2a370a0a5ddafa0 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 16:54:01 +0800 Subject: [PATCH 318/377] fix: text position for form elements and list markers (#2588) --- src/render/canvas/canvas-renderer.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 5cd9f32d8..c9c44d476 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -376,7 +376,7 @@ export class CanvasRenderer { this.ctx.font = fontFamily; this.ctx.fillStyle = asString(styles.color); - this.ctx.textBaseline = 'middle'; + this.ctx.textBaseline = 'alphabetic'; this.ctx.textAlign = canvasTextAlign(container.styles.textAlign); const bounds = contentBox(container); @@ -409,7 +409,7 @@ export class CanvasRenderer { baseline ); this.ctx.restore(); - this.ctx.textBaseline = 'bottom'; + this.ctx.textBaseline = 'alphabetic'; this.ctx.textAlign = 'left'; } @@ -427,7 +427,7 @@ export class CanvasRenderer { } } } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) { - const [fontFamily, fontSize] = this.createFontStyle(styles); + const [fontFamily] = this.createFontStyle(styles); this.ctx.font = fontFamily; this.ctx.fillStyle = asString(styles.color); @@ -441,12 +441,10 @@ export class CanvasRenderer { computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1 ); - const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize); - this.renderTextWithLetterSpacing( new TextBounds(paint.listValue, bounds), styles.letterSpacing, - baseline + computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2 ); this.ctx.textBaseline = 'bottom'; this.ctx.textAlign = 'left'; From 45efe54da8145f97b9ee0463e686103280e3c8b1 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 17:08:43 +0800 Subject: [PATCH 319/377] fix: this.canvas.ownerDocument is undefined (#2590) --- src/render/canvas/canvas-renderer.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index c9c44d476..fb4d1ab80 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -552,7 +552,8 @@ export class CanvasRenderer { return image; } - const canvas = (this.canvas.ownerDocument as Document).createElement('canvas'); + const ownerDocument = this.canvas.ownerDocument ?? document; + const canvas = ownerDocument.createElement('canvas'); canvas.width = Math.max(1, width); canvas.height = Math.max(1, height); const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; From dd6d8856eca820a13a0990c467b9e531433fd4a9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 17:15:47 +0800 Subject: [PATCH 320/377] fix: svg d path getting truncated on copy (#2589) --- src/dom/document-cloner.ts | 9 +++++++-- tests/reftests/images/svg/native_only.html | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 07bc56063..d520e01ab 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -443,12 +443,17 @@ const iframeLoader = (iframe: HTMLIFrameElement): Promise => }); }; +const ignoredStyleProperties = [ + 'all', // #2476 + 'd', // #2483 + 'content' // Safari shows pseudoelements if content is set +]; + export const copyCSSStyles = (style: CSSStyleDeclaration, target: T): T => { // Edge does not provide value for cssText for (let i = style.length - 1; i >= 0; i--) { const property = style.item(i); - // Safari shows pseudoelements if content is set - if (property !== 'content' && property !== 'all') { + if (ignoredStyleProperties.indexOf(property) === -1) { target.style.setProperty(property, style.getPropertyValue(property)); } } diff --git a/tests/reftests/images/svg/native_only.html b/tests/reftests/images/svg/native_only.html index 341258c3a..af50eac82 100644 --- a/tests/reftests/images/svg/native_only.html +++ b/tests/reftests/images/svg/native_only.html @@ -40,5 +40,13 @@ canvas
          + + + + + + + + From 522e5aac5fdad090953d095b5d558053a5e2d43d Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 18:19:26 +0800 Subject: [PATCH 321/377] feat: add support for webkit-text-stroke and paint-order (#2591) --- docs/features.md | 10 +- src/css/index.ts | 9 ++ .../__tests__/paint-order.ts | 86 ++++++++++++ src/css/property-descriptors/paint-order.ts | 41 ++++++ .../webkit-text-stroke-color.ts | 8 ++ .../webkit-text-stroke-width.ts | 14 ++ src/render/canvas/canvas-renderer.ts | 132 +++++++++++------- 7 files changed, 242 insertions(+), 58 deletions(-) create mode 100644 src/css/property-descriptors/__tests__/paint-order.ts create mode 100644 src/css/property-descriptors/paint-order.ts create mode 100644 src/css/property-descriptors/webkit-text-stroke-color.ts create mode 100644 src/css/property-descriptors/webkit-text-stroke-width.ts diff --git a/docs/features.md b/docs/features.md index e14c33d69..d1e1c8329 100644 --- a/docs/features.md +++ b/docs/features.md @@ -12,9 +12,9 @@ Below is a list of all the supported CSS properties and values. - url() - linear-gradient() - radial-gradient() - - background-origin + - background-origin - background-position - - background-size + - background-size - border - border-color - border-radius @@ -50,6 +50,7 @@ Below is a list of all the supported CSS properties and values. - overflow - overflow-wrap - padding + - paint-order - position - right - text-align @@ -58,17 +59,18 @@ Below is a list of all the supported CSS properties and values. - text-decoration-line - text-decoration-style (**Only supports `solid`**) - text-shadow - - text-transform + - text-transform - top - transform (**Limited support**) - visibility - white-space - width + - webkit-text-stroke - word-break - word-spacing - word-wrap - z-index - + ## Unsupported CSS properties These CSS properties are **NOT** currently supported - [background-blend-mode](https://github.com/niklasvh/html2canvas/issues/966) diff --git a/src/css/index.ts b/src/css/index.ts index af794d606..09d22d3d2 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -73,6 +73,9 @@ import {counterIncrement} from './property-descriptors/counter-increment'; import {counterReset} from './property-descriptors/counter-reset'; import {quotes} from './property-descriptors/quotes'; import {boxShadow} from './property-descriptors/box-shadow'; +import {paintOrder} from './property-descriptors/paint-order'; +import {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color'; +import {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width'; export class CSSParsedDeclaration { backgroundClip: ReturnType; @@ -125,6 +128,7 @@ export class CSSParsedDeclaration { paddingRight: LengthPercentage; paddingBottom: LengthPercentage; paddingLeft: LengthPercentage; + paintOrder: ReturnType; position: ReturnType; textAlign: ReturnType; textDecorationColor: Color; @@ -134,6 +138,8 @@ export class CSSParsedDeclaration { transform: ReturnType; transformOrigin: ReturnType; visibility: ReturnType; + webkitTextStrokeColor: Color; + webkitTextStrokeWidth: ReturnType; wordBreak: ReturnType; zIndex: ReturnType; @@ -189,6 +195,7 @@ export class CSSParsedDeclaration { this.paddingRight = parse(paddingRight, declaration.paddingRight); this.paddingBottom = parse(paddingBottom, declaration.paddingBottom); this.paddingLeft = parse(paddingLeft, declaration.paddingLeft); + this.paintOrder = parse(paintOrder, declaration.paintOrder); this.position = parse(position, declaration.position); this.textAlign = parse(textAlign, declaration.textAlign); this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor ?? declaration.color); @@ -201,6 +208,8 @@ export class CSSParsedDeclaration { this.transform = parse(transform, declaration.transform); this.transformOrigin = parse(transformOrigin, declaration.transformOrigin); this.visibility = parse(visibility, declaration.visibility); + this.webkitTextStrokeColor = parse(webkitTextStrokeColor, declaration.webkitTextStrokeColor); + this.webkitTextStrokeWidth = parse(webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); this.wordBreak = parse(wordBreak, declaration.wordBreak); this.zIndex = parse(zIndex, declaration.zIndex); } diff --git a/src/css/property-descriptors/__tests__/paint-order.ts b/src/css/property-descriptors/__tests__/paint-order.ts new file mode 100644 index 000000000..19aa7e35e --- /dev/null +++ b/src/css/property-descriptors/__tests__/paint-order.ts @@ -0,0 +1,86 @@ +import {deepStrictEqual} from 'assert'; +import {Parser} from '../../syntax/parser'; +import {paintOrder, PAINT_ORDER_LAYER} from '../paint-order'; + +const paintOrderParse = (value: string) => paintOrder.parse(Parser.parseValues(value)); + +describe('property-descriptors', () => { + describe('paint-order', () => { + it('none', () => + deepStrictEqual(paintOrderParse('none'), [ + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('EMPTY', () => + deepStrictEqual(paintOrderParse(''), [ + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('other values', () => + deepStrictEqual(paintOrderParse('other values'), [ + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('normal', () => + deepStrictEqual(paintOrderParse('normal'), [ + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('stroke', () => + deepStrictEqual(paintOrderParse('stroke'), [ + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('fill', () => + deepStrictEqual(paintOrderParse('fill'), [ + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('markers', () => + deepStrictEqual(paintOrderParse('markers'), [ + PAINT_ORDER_LAYER.MARKERS, + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.STROKE + ])); + + it('stroke fill', () => + deepStrictEqual(paintOrderParse('stroke fill'), [ + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.MARKERS + ])); + + it('markers stroke', () => + deepStrictEqual(paintOrderParse('markers stroke'), [ + PAINT_ORDER_LAYER.MARKERS, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.FILL + ])); + + it('markers stroke fill', () => + deepStrictEqual(paintOrderParse('markers stroke fill'), [ + PAINT_ORDER_LAYER.MARKERS, + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.FILL + ])); + + it('stroke fill markers', () => + deepStrictEqual(paintOrderParse('stroke fill markers'), [ + PAINT_ORDER_LAYER.STROKE, + PAINT_ORDER_LAYER.FILL, + PAINT_ORDER_LAYER.MARKERS + ])); + }); +}); diff --git a/src/css/property-descriptors/paint-order.ts b/src/css/property-descriptors/paint-order.ts new file mode 100644 index 000000000..eb2a901de --- /dev/null +++ b/src/css/property-descriptors/paint-order.ts @@ -0,0 +1,41 @@ +import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {CSSValue, isIdentToken} from '../syntax/parser'; +export enum PAINT_ORDER_LAYER { + FILL, + STROKE, + MARKERS +} + +export type PaintOrder = PAINT_ORDER_LAYER[]; + +export const paintOrder: IPropertyListDescriptor = { + name: 'paint-order', + initialValue: 'normal', + prefix: false, + type: PropertyDescriptorParsingType.LIST, + parse: (tokens: CSSValue[]): PaintOrder => { + const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS]; + let layers: PaintOrder = []; + + tokens.filter(isIdentToken).forEach((token) => { + switch (token.value) { + case 'stroke': + layers.push(PAINT_ORDER_LAYER.STROKE); + break; + case 'fill': + layers.push(PAINT_ORDER_LAYER.FILL); + break; + case 'markers': + layers.push(PAINT_ORDER_LAYER.MARKERS); + break; + } + }); + DEFAULT_VALUE.forEach((value) => { + if (layers.indexOf(value) === -1) { + layers.push(value); + } + }); + + return layers; + } +}; diff --git a/src/css/property-descriptors/webkit-text-stroke-color.ts b/src/css/property-descriptors/webkit-text-stroke-color.ts new file mode 100644 index 000000000..b7fb03117 --- /dev/null +++ b/src/css/property-descriptors/webkit-text-stroke-color.ts @@ -0,0 +1,8 @@ +import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +export const webkitTextStrokeColor: IPropertyTypeValueDescriptor = { + name: `-webkit-text-stroke-color`, + initialValue: 'currentcolor', + prefix: false, + type: PropertyDescriptorParsingType.TYPE_VALUE, + format: 'color' +}; diff --git a/src/css/property-descriptors/webkit-text-stroke-width.ts b/src/css/property-descriptors/webkit-text-stroke-width.ts new file mode 100644 index 000000000..4d0acefd6 --- /dev/null +++ b/src/css/property-descriptors/webkit-text-stroke-width.ts @@ -0,0 +1,14 @@ +import {CSSValue, isDimensionToken} from '../syntax/parser'; +import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +export const webkitTextStrokeWidth: IPropertyValueDescriptor = { + name: `-webkit-text-stroke-width`, + initialValue: '0', + type: PropertyDescriptorParsingType.VALUE, + prefix: false, + parse: (token: CSSValue): number => { + if (isDimensionToken(token)) { + return token.number; + } + return 0; + } +}; diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index fb4d1ab80..08625bd7a 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -43,6 +43,7 @@ import {TextareaElementContainer} from '../../dom/elements/textarea-element-cont import {SelectElementContainer} from '../../dom/elements/select-element-container'; import {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container'; import {TextShadow} from '../../css/property-descriptors/text-shadow'; +import {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order'; export type RenderConfigurations = RenderOptions & { backgroundColor: Color | null; @@ -179,65 +180,88 @@ export class CanvasRenderer { const [font, fontFamily, fontSize] = this.createFontStyle(styles); this.ctx.font = font; - this.ctx.textBaseline = 'alphabetic'; + this.ctx.textBaseline = 'alphabetic'; const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize); + const paintOrder = styles.paintOrder; text.textBounds.forEach((text) => { - this.ctx.fillStyle = asString(styles.color); - this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); - const textShadows: TextShadow = styles.textShadow; - - if (textShadows.length && text.text.trim().length) { - textShadows - .slice(0) - .reverse() - .forEach((textShadow) => { - this.ctx.shadowColor = asString(textShadow.color); - this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale; - this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale; - this.ctx.shadowBlur = textShadow.blur.number; - + paintOrder.forEach((paintOrderLayer) => { + switch (paintOrderLayer) { + case PAINT_ORDER_LAYER.FILL: + this.ctx.fillStyle = asString(styles.color); this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); - }); - - this.ctx.shadowColor = ''; - this.ctx.shadowOffsetX = 0; - this.ctx.shadowOffsetY = 0; - this.ctx.shadowBlur = 0; - } - - if (styles.textDecorationLine.length) { - this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color); - styles.textDecorationLine.forEach((textDecorationLine) => { - switch (textDecorationLine) { - case TEXT_DECORATION_LINE.UNDERLINE: - // Draws a line at the baseline of the font - // TODO As some browsers display the line as more than 1px if the font-size is big, - // need to take that into account both in position and size - this.ctx.fillRect( - text.bounds.left, - Math.round(text.bounds.top + baseline), - text.bounds.width, - 1 - ); - - break; - case TEXT_DECORATION_LINE.OVERLINE: - this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1); - break; - case TEXT_DECORATION_LINE.LINE_THROUGH: - // TODO try and find exact position for line-through - this.ctx.fillRect( - text.bounds.left, - Math.ceil(text.bounds.top + middle), - text.bounds.width, - 1 - ); - break; - } - }); - } + const textShadows: TextShadow = styles.textShadow; + + if (textShadows.length && text.text.trim().length) { + textShadows + .slice(0) + .reverse() + .forEach((textShadow) => { + this.ctx.shadowColor = asString(textShadow.color); + this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale; + this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale; + this.ctx.shadowBlur = textShadow.blur.number; + + this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline); + }); + + this.ctx.shadowColor = ''; + this.ctx.shadowOffsetX = 0; + this.ctx.shadowOffsetY = 0; + this.ctx.shadowBlur = 0; + } + + if (styles.textDecorationLine.length) { + this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color); + styles.textDecorationLine.forEach((textDecorationLine) => { + switch (textDecorationLine) { + case TEXT_DECORATION_LINE.UNDERLINE: + // Draws a line at the baseline of the font + // TODO As some browsers display the line as more than 1px if the font-size is big, + // need to take that into account both in position and size + this.ctx.fillRect( + text.bounds.left, + Math.round(text.bounds.top + baseline), + text.bounds.width, + 1 + ); + + break; + case TEXT_DECORATION_LINE.OVERLINE: + this.ctx.fillRect( + text.bounds.left, + Math.round(text.bounds.top), + text.bounds.width, + 1 + ); + break; + case TEXT_DECORATION_LINE.LINE_THROUGH: + // TODO try and find exact position for line-through + this.ctx.fillRect( + text.bounds.left, + Math.ceil(text.bounds.top + middle), + text.bounds.width, + 1 + ); + break; + } + }); + } + break; + case PAINT_ORDER_LAYER.STROKE: + if (styles.webkitTextStrokeWidth && text.text.trim().length) { + this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor); + this.ctx.lineWidth = styles.webkitTextStrokeWidth; + this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round'; + this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline); + } + this.ctx.strokeStyle = ''; + this.ctx.lineWidth = 0; + this.ctx.lineJoin = 'miter'; + break; + } + }); }); } From 578bb771bfeb7e81362e9e355d6cc9ae910e3920 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 18:24:39 +0800 Subject: [PATCH 322/377] test: update box-shadow with radius --- tests/reftests/background/box-shadow.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/reftests/background/box-shadow.html b/tests/reftests/background/box-shadow.html index 98aec844d..85a083c8b 100644 --- a/tests/reftests/background/box-shadow.html +++ b/tests/reftests/background/box-shadow.html @@ -9,7 +9,7 @@ margin: 10px; display: inline-block; min-height: 50px; - // border-radius: 10px; + border-radius: 10px; } body { From 4c360fc1f059f4dcab71a79f9dc8a5b2e25411ea Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 15 Jul 2021 20:58:04 +0800 Subject: [PATCH 323/377] test: refactor language tests (#2594) --- tests/reftests/text/{ => lang}/chinese.html | 2 +- tests/reftests/text/lang/persian.html | 26 +++++++++++++++++++++ tests/reftests/text/{ => lang}/thai.html | 2 +- 3 files changed, 28 insertions(+), 2 deletions(-) rename tests/reftests/text/{ => lang}/chinese.html (98%) create mode 100644 tests/reftests/text/lang/persian.html rename tests/reftests/text/{ => lang}/thai.html (98%) diff --git a/tests/reftests/text/chinese.html b/tests/reftests/text/lang/chinese.html similarity index 98% rename from tests/reftests/text/chinese.html rename to tests/reftests/text/lang/chinese.html index 1852ec674..da5c696cb 100644 --- a/tests/reftests/text/chinese.html +++ b/tests/reftests/text/lang/chinese.html @@ -3,7 +3,7 @@ Chinese text - + + + +
          +

          + سلام دنیا! این یک تست است... +

          +
          +من می‌توانم. این است قدرت جاوااسکریپت! + + diff --git a/tests/reftests/text/thai.html b/tests/reftests/text/lang/thai.html similarity index 98% rename from tests/reftests/text/thai.html rename to tests/reftests/text/lang/thai.html index 991adc67f..6b332cbaf 100644 --- a/tests/reftests/text/thai.html +++ b/tests/reftests/text/lang/thai.html @@ -3,7 +3,7 @@ Thai text - + - - -

          <h1> text-decoration

          -
          -

          Arial

          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          - -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
          - -
          -

          Verdana

          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          - -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
          - -
          -

          Tahoma

          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          - -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
            -
          1. text-decoration:none;
          2. -
          3. text-decoration:underline;
          4. -
          5. text-decoration:overline;
          6. -
          7. text-decoration:line-through;
          8. -
          -
          - -

          <h2> text-transform

          -
            -
          • text-transform:none;
          • -
          • text-transform: capitalize; (including foreign characters such as Öaäå)
          • -
          • text-transform:uppercase;
          • -
          • text-transform:lowercase;
          • -
          -

          <h3> misc text alignments

          -
            -
          • word-spacing:5px; (as each letter is rendered individually, the bounds will always be correct)
          • -
          • line-height:35px;
            (same goes for line-height)
          • -
          • letter-spacing:5px;
          • -
          • letter-spacing:0.9px;
          • -
          • text-align:right;width:300px;
          • -
          • font-variant:small-caps;
          • -
          - -
          npm install --save html2canvas
          - - + + Text tests + + + + + + + +

          <h1> text-decoration

          +
          +

          Arial

          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          + +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
          + +
          +

          Verdana

          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          + +
          + [AB / CD] +
          + +
          +

          Tahoma

          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          + +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
          + +

          <h2> text-transform

          +
            +
          • text-transform:none;
          • +
          • text-transform: capitalize; (including foreign characters such as Öaäå) +
          • +
          • text-transform:uppercase;
          • +
          • text-transform:lowercase;
          • +
          +

          <h3> misc text alignments

          +
            +
          • word-spacing:5px; (as each letter is rendered individually, the bounds will always + be correct) +
          • +
          • line-height:35px;
            (same goes for line-height)
          • +
          • letter-spacing:5px;
          • +
          • letter-spacing:0.9px;
          • +
          • text-align:right;width:300px;
          • +
          • font-variant:small-caps;
          • +
          + +
          npm install --save html2canvas
          +
          + [AB / CD] +
          +
          + From 11d16d2b777b9496fa739103f4f32c60939a42c8 Mon Sep 17 00:00:00 2001 From: CI Date: Thu, 15 Jul 2021 16:44:42 +0000 Subject: [PATCH 325/377] chore(release): 1.1.4 --- CHANGELOG.md | 22 ++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64c9f02d3..c98c0b81a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.1.4](https://github.com/niklasvh/html2canvas/compare/v1.1.3...v1.1.4) (2021-07-15) + + +### feat + +* add support for webkit-text-stroke and paint-order (#2591) ([522e5aa](https://github.com/niklasvh/html2canvas/commit/522e5aac5fdad090953d095b5d558053a5e2d43d)), closes [#2591](https://github.com/niklasvh/html2canvas/issues/2591) + +### fix + +* don't copy 'all' css property (#2586) ([fa60716](https://github.com/niklasvh/html2canvas/commit/fa60716d07ed590ec64543a586a7960cbc8557df)), closes [#2586](https://github.com/niklasvh/html2canvas/issues/2586) +* svg d path getting truncated on copy (#2589) ([dd6d885](https://github.com/niklasvh/html2canvas/commit/dd6d8856eca820a13a0990c467b9e531433fd4a9)), closes [#2589](https://github.com/niklasvh/html2canvas/issues/2589) +* text position for form elements and list markers (#2588) ([cd99f11](https://github.com/niklasvh/html2canvas/commit/cd99f11b1b9eb1260a548a63e2a370a0a5ddafa0)), closes [#2588](https://github.com/niklasvh/html2canvas/issues/2588) +* this.canvas.ownerDocument is undefined (#2590) ([45efe54](https://github.com/niklasvh/html2canvas/commit/45efe54da8145f97b9ee0463e686103280e3c8b1)), closes [#2590](https://github.com/niklasvh/html2canvas/issues/2590) +* word-break seperators (#2593) ([e9f7f48](https://github.com/niklasvh/html2canvas/commit/e9f7f48d571304be14610a181feedca3c3b42864)), closes [#2593](https://github.com/niklasvh/html2canvas/issues/2593) + +### test + +* refactor language tests (#2594) ([4c360fc](https://github.com/niklasvh/html2canvas/commit/4c360fc1f059f4dcab71a79f9dc8a5b2e25411ea)), closes [#2594](https://github.com/niklasvh/html2canvas/issues/2594) +* update box-shadow with radius ([578bb77](https://github.com/niklasvh/html2canvas/commit/578bb771bfeb7e81362e9e355d6cc9ae910e3920)) + + + ## [1.1.3](https://github.com/niklasvh/html2canvas/compare/v1.1.2...v1.1.3) (2021-07-14) diff --git a/package-lock.json b/package-lock.json index df68ceac2..92e1b2afa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.1.3", + "version": "1.1.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index c33d61074..3dbd83bfd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.1.3", + "version": "1.1.4", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 5dea36bd6964164e8ba3f8780309e792f5d16255 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 17 Jul 2021 17:24:15 +0800 Subject: [PATCH 326/377] docs: update README to github discussion Q/A --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3680d3dd..3d20e8e63 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ html2canvas =========== -[Homepage](https://html2canvas.hertzen.com) | [Downloads](https://github.com/niklasvh/html2canvas/releases) | [Questions](http://stackoverflow.com/questions/tagged/html2canvas?sort=newest) +[Homepage](https://html2canvas.hertzen.com) | [Downloads](https://github.com/niklasvh/html2canvas/releases) | [Questions](https://github.com/niklasvh/html2canvas/discussions/categories/q-a) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/niklasvh/html2canvas?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) ![CI](https://github.com/niklasvh/html2canvas/workflows/CI/badge.svg?branch=master) From 7d788c6f3d221b87f6b59fcda8517731340b2d1f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 2 Aug 2021 17:49:46 +0800 Subject: [PATCH 327/377] fix: emoji line breaking (fix #1813) (#2621) * fix: emoji line breaking (fix #1813) * test: fix text.html reftest --- package-lock.json | 16 ++--- package.json | 2 +- tests/reftests/text/text.html | 110 ++++++++++++++++++---------------- 3 files changed, 68 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 92e1b2afa..87966c36f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,10 +5,10 @@ "requires": true, "packages": { "": { - "version": "1.1.0", + "version": "1.1.4", "license": "MIT", "dependencies": { - "css-line-break": "1.1.1" + "css-line-break": "2.0.0" }, "devDependencies": { "@babel/cli": "^7.4.3", @@ -8630,9 +8630,9 @@ } }, "node_modules/css-line-break": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz", - "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.0.tgz", + "integrity": "sha512-zEKNpyrJHt4R3qAXLTdJkJc7F/4dkNWG+ij2CHF6/o346QJ6GSjD+oaKOUQoibOy0Wvl3F8IYdEEx3yb/+rdJw==", "dependencies": { "base64-arraybuffer": "^0.2.0" } @@ -32811,9 +32811,9 @@ } }, "css-line-break": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz", - "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.0.tgz", + "integrity": "sha512-zEKNpyrJHt4R3qAXLTdJkJc7F/4dkNWG+ij2CHF6/o346QJ6GSjD+oaKOUQoibOy0Wvl3F8IYdEEx3yb/+rdJw==", "requires": { "base64-arraybuffer": "^0.2.0" } diff --git a/package.json b/package.json index 3dbd83bfd..35e45f532 100644 --- a/package.json +++ b/package.json @@ -118,6 +118,6 @@ "homepage": "https://html2canvas.hertzen.com", "license": "MIT", "dependencies": { - "css-line-break": "1.1.1" + "css-line-break": "2.0.0" } } diff --git a/tests/reftests/text/text.html b/tests/reftests/text/text.html index a6b163234..5970a9947 100644 --- a/tests/reftests/text/text.html +++ b/tests/reftests/text/text.html @@ -88,58 +88,66 @@

          Verdana

        • text-decoration:overline;
        • text-decoration:line-through;
        • +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
            +
          1. text-decoration:none;
          2. +
          3. text-decoration:underline;
          4. +
          5. text-decoration:overline;
          6. +
          7. text-decoration:line-through;
          8. +
          +
        +
        +

        Tahoma

        +
          +
        1. text-decoration:none;
        2. +
        3. text-decoration:underline;
        4. +
        5. text-decoration:overline;
        6. +
        7. text-decoration:line-through;
        8. +
        + +
          +
        1. text-decoration:none;
        2. +
        3. text-decoration:underline;
        4. +
        5. text-decoration:overline;
        6. +
        7. text-decoration:line-through;
        8. +
        +
          +
        1. text-decoration:none;
        2. +
        3. text-decoration:underline;
        4. +
        5. text-decoration:overline;
        6. +
        7. text-decoration:line-through;
        8. +
        +
        -
        - [AB / CD] -
        - -
        -

        Tahoma

        -
          -
        1. text-decoration:none;
        2. -
        3. text-decoration:underline;
        4. -
        5. text-decoration:overline;
        6. -
        7. text-decoration:line-through;
        8. -
        - -
          -
        1. text-decoration:none;
        2. -
        3. text-decoration:underline;
        4. -
        5. text-decoration:overline;
        6. -
        7. text-decoration:line-through;
        8. -
        -
          -
        1. text-decoration:none;
        2. -
        3. text-decoration:underline;
        4. -
        5. text-decoration:overline;
        6. -
        7. text-decoration:line-through;
        8. -
        -
        - -

        <h2> text-transform

        -
          -
        • text-transform:none;
        • -
        • text-transform: capitalize; (including foreign characters such as Öaäå) -
        • -
        • text-transform:uppercase;
        • -
        • text-transform:lowercase;
        • -
        -

        <h3> misc text alignments

        -
          -
        • word-spacing:5px; (as each letter is rendered individually, the bounds will always - be correct) -
        • -
        • line-height:35px;
          (same goes for line-height)
        • -
        • letter-spacing:5px;
        • -
        • letter-spacing:0.9px;
        • -
        • text-align:right;width:300px;
        • -
        • font-variant:small-caps;
        • -
        - -
        npm install --save html2canvas
        -
        - [AB / CD] -
        +

        <h2> text-transform

        +
          +
        • text-transform:none;
        • +
        • text-transform: capitalize; (including foreign characters such as Öaäå) +
        • +
        • text-transform:uppercase;
        • +
        • text-transform:lowercase;
        • +
        +

        <h3> misc text alignments

        +
          +
        • word-spacing:5px; (as each letter is rendered individually, the bounds will always + be correct) +
        • +
        • line-height:35px;
          (same goes for line-height)
        • +
        • letter-spacing:5px;
        • +
        • letter-spacing:0.9px;
        • +
        • text-align:right;width:300px;
        • +
        • font-variant:small-caps;
        • +
        + +
        npm install --save html2canvas
        +
        + [AB / CD]
        +
        Emojis 🤷🏾‍♂️👨‍👩‍👧‍👦 :)
        From 96e23d185198b7131cf0cfa31c14c165790464e9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 2 Aug 2021 18:27:03 +0800 Subject: [PATCH 328/377] fix: natural sizes for images with srcset (#2622) --- src/dom/document-cloner.ts | 11 +++++++++-- tests/reftests/images/images.html | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index d520e01ab..4e644cef6 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -132,8 +132,15 @@ export class DocumentCloner { } const clone = node.cloneNode(false) as T; - if (isImageElement(clone) && clone.loading === 'lazy') { - clone.loading = 'eager'; + if (isImageElement(clone)) { + if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) { + clone.src = node.currentSrc; + clone.srcset = ''; + } + + if (clone.loading === 'lazy') { + clone.loading = 'eager'; + } } return clone; diff --git a/tests/reftests/images/images.html b/tests/reftests/images/images.html index e478316d3..acf3dd995 100644 --- a/tests/reftests/images/images.html +++ b/tests/reftests/images/images.html @@ -24,6 +24,9 @@ + + + + + + + + + +
        + great success +
        + + + + From 878e37a24272d0412fe589975ef8eed931c56e0b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 4 Aug 2021 20:58:17 +0800 Subject: [PATCH 331/377] fix: element cropping & scrolling (#2625) --- src/__tests__/index.ts | 12 +- src/core/__mocks__/cache-storage.ts | 23 +- src/core/__mocks__/context.ts | 19 ++ src/core/__mocks__/logger.ts | 2 +- src/core/__tests__/cache-storage.ts | 49 +++-- src/core/cache-storage.ts | 51 +---- src/core/context.ts | 21 ++ src/core/logger.ts | 29 ++- src/css/IPropertyDescriptor.ts | 7 +- src/css/ITypeDescriptor.ts | 3 +- src/css/index.ts | 158 +++++++------- src/css/layout/bounds.ts | 27 ++- src/css/layout/text.ts | 20 +- .../__tests__/background-tests.ts | 27 ++- .../__tests__/font-family.ts | 3 +- .../__tests__/paint-order.ts | 3 +- .../__tests__/text-shadow.ts | 5 +- .../__tests__/transform-tests.ts | 3 +- .../property-descriptors/background-clip.ts | 3 +- .../property-descriptors/background-image.ts | 7 +- .../property-descriptors/background-origin.ts | 3 +- .../background-position.ts | 3 +- .../property-descriptors/background-repeat.ts | 3 +- .../property-descriptors/background-size.ts | 3 +- src/css/property-descriptors/border-radius.ts | 4 +- src/css/property-descriptors/border-style.ts | 3 +- src/css/property-descriptors/border-width.ts | 3 +- src/css/property-descriptors/box-shadow.ts | 5 +- src/css/property-descriptors/content.ts | 3 +- .../property-descriptors/counter-increment.ts | 3 +- src/css/property-descriptors/counter-reset.ts | 3 +- src/css/property-descriptors/display.ts | 3 +- src/css/property-descriptors/float.ts | 3 +- src/css/property-descriptors/font-family.ts | 3 +- src/css/property-descriptors/font-style.ts | 3 +- src/css/property-descriptors/font-variant.ts | 3 +- src/css/property-descriptors/font-weight.ts | 3 +- .../property-descriptors/letter-spacing.ts | 3 +- src/css/property-descriptors/line-break.ts | 3 +- .../property-descriptors/list-style-image.ts | 5 +- .../list-style-position.ts | 3 +- .../property-descriptors/list-style-type.ts | 3 +- src/css/property-descriptors/opacity.ts | 3 +- src/css/property-descriptors/overflow-wrap.ts | 3 +- src/css/property-descriptors/overflow.ts | 3 +- src/css/property-descriptors/paint-order.ts | 5 +- src/css/property-descriptors/position.ts | 3 +- src/css/property-descriptors/quotes.ts | 3 +- src/css/property-descriptors/text-align.ts | 3 +- .../text-decoration-line.ts | 3 +- src/css/property-descriptors/text-shadow.ts | 5 +- .../property-descriptors/text-transform.ts | 3 +- .../property-descriptors/transform-origin.ts | 3 +- src/css/property-descriptors/transform.ts | 3 +- src/css/property-descriptors/visibility.ts | 3 +- .../webkit-text-stroke-width.ts | 3 +- src/css/property-descriptors/word-break.ts | 3 +- src/css/property-descriptors/z-index.ts | 3 +- src/css/types/__tests__/color-tests.ts | 3 +- src/css/types/__tests__/image-tests.ts | 85 ++++---- src/css/types/angle.ts | 3 +- src/css/types/color.ts | 18 +- .../functions/-prefix-linear-gradient.ts | 7 +- .../functions/-prefix-radial-gradient.ts | 5 +- src/css/types/functions/-webkit-gradient.ts | 12 +- .../functions/__tests__/radial-gradient.ts | 5 +- src/css/types/functions/gradient.ts | 5 +- src/css/types/functions/linear-gradient.ts | 7 +- src/css/types/functions/radial-gradient.ts | 5 +- src/css/types/image.ts | 10 +- src/dom/__mocks__/document-cloner.ts | 9 +- src/dom/document-cloner.ts | 42 ++-- src/dom/element-container.ts | 7 +- src/dom/elements/li-element-container.ts | 5 +- src/dom/elements/ol-element-container.ts | 5 +- src/dom/elements/select-element-container.ts | 5 +- .../elements/textarea-element-container.ts | 5 +- src/dom/node-parser.ts | 43 ++-- .../canvas-element-container.ts | 5 +- .../iframe-element-container.ts | 18 +- .../image-element-container.ts | 8 +- .../input-element-container.ts | 5 +- .../svg-element-container.ts | 10 +- src/dom/text-container.ts | 5 +- src/index.ts | 197 +++++++++--------- src/render/canvas/canvas-renderer.ts | 57 ++--- src/render/canvas/foreignobject-renderer.ts | 20 +- src/render/renderer.ts | 6 + tests/reftests/options/crop-2.html | 44 ++++ tests/reftests/options/ignore-2.html | 48 +++++ 90 files changed, 751 insertions(+), 553 deletions(-) create mode 100644 src/core/__mocks__/context.ts create mode 100644 src/core/context.ts create mode 100644 src/render/renderer.ts create mode 100644 tests/reftests/options/crop-2.html create mode 100644 tests/reftests/options/ignore-2.html diff --git a/src/__tests__/index.ts b/src/__tests__/index.ts index be3a11d9c..ba56e5dbe 100644 --- a/src/__tests__/index.ts +++ b/src/__tests__/index.ts @@ -34,6 +34,11 @@ describe('html2canvas', () => { DocumentCloner.destroy = jest.fn().mockReturnValue(true); await html2canvas(element); expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.objectContaining({ + cache: expect.any(Object), + logger: expect.any(Object), + windowBounds: expect.objectContaining({left: 12, top: 34}) + }), expect.objectContaining({ backgroundColor: 0xffffffff, scale: 1, @@ -41,8 +46,6 @@ describe('html2canvas', () => { width: 200, x: 0, y: 0, - scrollX: 12, - scrollY: 34, canvas: undefined }) ); @@ -52,6 +55,7 @@ describe('html2canvas', () => { it('should have transparent background with backgroundColor: null', async () => { await html2canvas(element, {backgroundColor: null}); expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.anything(), expect.objectContaining({ backgroundColor: COLORS.TRANSPARENT }) @@ -62,6 +66,7 @@ describe('html2canvas', () => { const canvas = {} as HTMLCanvasElement; await html2canvas(element, {canvas}); expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.anything(), expect.objectContaining({ canvas }) @@ -72,6 +77,7 @@ describe('html2canvas', () => { DocumentCloner.destroy = jest.fn(); await html2canvas(element, {removeContainer: false}); expect(CanvasRenderer).toHaveBeenLastCalledWith( + expect.anything(), expect.objectContaining({ backgroundColor: 0xffffffff, scale: 1, @@ -79,8 +85,6 @@ describe('html2canvas', () => { width: 200, x: 0, y: 0, - scrollX: 12, - scrollY: 34, canvas: undefined }) ); diff --git a/src/core/__mocks__/cache-storage.ts b/src/core/__mocks__/cache-storage.ts index 864e00289..1338dd824 100644 --- a/src/core/__mocks__/cache-storage.ts +++ b/src/core/__mocks__/cache-storage.ts @@ -1,22 +1 @@ -class MockCache { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private readonly _cache: {[key: string]: Promise}; - - constructor() { - this._cache = {}; - } - - addImage(src: string): Promise { - const result = Promise.resolve(); - this._cache[src] = result; - return result; - } -} - -const current = new MockCache(); - -export class CacheStorage { - static getInstance(): MockCache { - return current; - } -} +export class CacheStorage {} diff --git a/src/core/__mocks__/context.ts b/src/core/__mocks__/context.ts new file mode 100644 index 000000000..3a03a8d91 --- /dev/null +++ b/src/core/__mocks__/context.ts @@ -0,0 +1,19 @@ +import {logger, Logger} from './logger'; + +export class Context { + readonly logger: Logger = logger; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + readonly _cache: {[key: string]: Promise} = {}; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + readonly cache: any; + + constructor() { + this.cache = { + addImage: jest.fn().mockImplementation((src: string): Promise => { + const result = Promise.resolve(); + this._cache[src] = result; + return result; + }) + }; + } +} diff --git a/src/core/__mocks__/logger.ts b/src/core/__mocks__/logger.ts index cd9bc0d3b..a4c1d626c 100644 --- a/src/core/__mocks__/logger.ts +++ b/src/core/__mocks__/logger.ts @@ -19,4 +19,4 @@ export class Logger { error(): void {} } -const logger = new Logger(); +export const logger = new Logger(); diff --git a/src/core/__tests__/cache-storage.ts b/src/core/__tests__/cache-storage.ts index 595bc933a..7ea4dced9 100644 --- a/src/core/__tests__/cache-storage.ts +++ b/src/core/__tests__/cache-storage.ts @@ -1,7 +1,8 @@ import {deepStrictEqual, fail} from 'assert'; import {FEATURES} from '../features'; import {CacheStorage} from '../cache-storage'; -import {Logger} from '../logger'; +import {Context} from '../context'; +import {Bounds} from '../../css/layout/bounds'; const proxy = 'http://example.com/proxy'; @@ -35,14 +36,18 @@ const createMockContext = (origin: string, opts = {}) => { }; CacheStorage.setContext(context as Window); - Logger.create({id: 'test', enabled: false}); - return CacheStorage.create('test', { - imageTimeout: 0, - useCORS: false, - allowTaint: false, - proxy, - ...opts - }); + + return new Context( + { + logging: false, + imageTimeout: 0, + useCORS: false, + allowTaint: false, + proxy, + ...opts + }, + new Bounds(0, 0, 0, 0) + ); }; const images: ImageMock[] = []; @@ -121,7 +126,7 @@ describe('cache-storage', () => { images.splice(0, images.length); }); it('addImage adds images to cache', async () => { - const cache = createMockContext('http://example.com', {proxy: null}); + const {cache} = createMockContext('http://example.com', {proxy: null}); await cache.addImage('http://example.com/test.jpg'); await cache.addImage('http://example.com/test2.jpg'); @@ -131,7 +136,7 @@ describe('cache-storage', () => { }); it('addImage should not add duplicate entries', async () => { - const cache = createMockContext('http://example.com'); + const {cache} = createMockContext('http://example.com'); await cache.addImage('http://example.com/test.jpg'); await cache.addImage('http://example.com/test.jpg'); @@ -141,7 +146,7 @@ describe('cache-storage', () => { describe('svg', () => { it('should add svg images correctly', async () => { - const cache = createMockContext('http://example.com'); + const {cache} = createMockContext('http://example.com'); await cache.addImage('http://example.com/test.svg'); await cache.addImage('http://example.com/test2.svg'); @@ -152,7 +157,7 @@ describe('cache-storage', () => { it('should omit svg images if not supported', async () => { setFeatures({SUPPORT_SVG_DRAWING: false}); - const cache = createMockContext('http://example.com'); + const {cache} = createMockContext('http://example.com'); await cache.addImage('http://example.com/test.svg'); await cache.addImage('http://example.com/test2.svg'); @@ -162,7 +167,7 @@ describe('cache-storage', () => { describe('cross-origin', () => { it('addImage should not add images it cannot load/render', async () => { - const cache = createMockContext('http://example.com', { + const {cache} = createMockContext('http://example.com', { proxy: undefined }); await cache.addImage('http://html2canvas.hertzen.com/test.jpg'); @@ -170,7 +175,7 @@ describe('cache-storage', () => { }); it('addImage should add images if tainting enabled', async () => { - const cache = createMockContext('http://example.com', { + const {cache} = createMockContext('http://example.com', { allowTaint: true, proxy: undefined }); @@ -181,7 +186,7 @@ describe('cache-storage', () => { }); it('addImage should add images if cors enabled', async () => { - const cache = createMockContext('http://example.com', {useCORS: true}); + const {cache} = createMockContext('http://example.com', {useCORS: true}); await cache.addImage('http://html2canvas.hertzen.com/test.jpg'); deepStrictEqual(images.length, 1); deepStrictEqual(images[0].src, 'http://html2canvas.hertzen.com/test.jpg'); @@ -191,7 +196,7 @@ describe('cache-storage', () => { it('addImage should not add images if cors enabled but not supported', async () => { setFeatures({SUPPORT_CORS_IMAGES: false}); - const cache = createMockContext('http://example.com', { + const {cache} = createMockContext('http://example.com', { useCORS: true, proxy: undefined }); @@ -200,7 +205,7 @@ describe('cache-storage', () => { }); it('addImage should not add images to proxy if cors enabled', async () => { - const cache = createMockContext('http://example.com', {useCORS: true}); + const {cache} = createMockContext('http://example.com', {useCORS: true}); await cache.addImage('http://html2canvas.hertzen.com/test.jpg'); deepStrictEqual(images.length, 1); deepStrictEqual(images[0].src, 'http://html2canvas.hertzen.com/test.jpg'); @@ -208,7 +213,7 @@ describe('cache-storage', () => { }); it('addImage should use proxy ', async () => { - const cache = createMockContext('http://example.com'); + const {cache} = createMockContext('http://example.com'); await cache.addImage('http://html2canvas.hertzen.com/test.jpg'); deepStrictEqual(xhr.length, 1); deepStrictEqual( @@ -222,7 +227,7 @@ describe('cache-storage', () => { }); it('proxy should respect imageTimeout', async () => { - const cache = createMockContext('http://example.com', { + const {cache} = createMockContext('http://example.com', { imageTimeout: 10 }); await cache.addImage('http://html2canvas.hertzen.com/test.jpg'); @@ -244,7 +249,7 @@ describe('cache-storage', () => { }); it('match should return cache entry', async () => { - const cache = createMockContext('http://example.com'); + const {cache} = createMockContext('http://example.com'); await cache.addImage('http://example.com/test.jpg'); if (images[0].onload) { @@ -257,7 +262,7 @@ describe('cache-storage', () => { }); it('image should respect imageTimeout', async () => { - const cache = createMockContext('http://example.com', {imageTimeout: 10}); + const {cache} = createMockContext('http://example.com', {imageTimeout: 10}); cache.addImage('http://example.com/test.jpg'); try { diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 82e1dc0f1..278acb9b4 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -1,28 +1,9 @@ import {FEATURES} from './features'; -import {Logger} from './logger'; +import type {Context} from './context'; export class CacheStorage { - private static _caches: {[key: string]: Cache} = {}; private static _link?: HTMLAnchorElement; private static _origin = 'about:blank'; - private static _current: Cache | null = null; - - static create(name: string, options: ResourceOptions): Cache { - return (CacheStorage._caches[name] = new Cache(name, options)); - } - - static destroy(name: string): void { - delete CacheStorage._caches[name]; - } - - static open(name: string): Cache { - const cache = CacheStorage._caches[name]; - if (typeof cache !== 'undefined') { - return cache; - } - - throw new Error(`Cache with key "${name}" not found`); - } static getOrigin(url: string): string { const link = CacheStorage._link; @@ -43,22 +24,6 @@ export class CacheStorage { CacheStorage._link = window.document.createElement('a'); CacheStorage._origin = CacheStorage.getOrigin(window.location.href); } - - static getInstance(): Cache { - const current = CacheStorage._current; - if (current === null) { - throw new Error(`No cache instance attached`); - } - return current; - } - - static attachInstance(cache: Cache): void { - CacheStorage._current = cache; - } - - static detachInstance(): void { - CacheStorage._current = null; - } } export interface ResourceOptions { @@ -70,15 +35,9 @@ export interface ResourceOptions { export class Cache { // eslint-disable-next-line @typescript-eslint/no-explicit-any - private readonly _cache: {[key: string]: Promise}; - private readonly _options: ResourceOptions; - private readonly id: string; - - constructor(id: string, options: ResourceOptions) { - this.id = id; - this._options = options; - this._cache = {}; - } + private readonly _cache: {[key: string]: Promise} = {}; + + constructor(private readonly context: Context, private readonly _options: ResourceOptions) {} addImage(src: string): Promise { const result = Promise.resolve(); @@ -128,7 +87,7 @@ export class Cache { src = await this.proxy(src); } - Logger.getInstance(this.id).debug(`Added image ${key.substring(0, 256)}`); + this.context.logger.debug(`Added image ${key.substring(0, 256)}`); return await new Promise((resolve, reject) => { const img = new Image(); diff --git a/src/core/context.ts b/src/core/context.ts new file mode 100644 index 000000000..c47d62781 --- /dev/null +++ b/src/core/context.ts @@ -0,0 +1,21 @@ +import {Logger} from './logger'; +import {Cache, ResourceOptions} from './cache-storage'; +import {Bounds} from '../css/layout/bounds'; + +export type ContextOptions = { + logging: boolean; + cache?: Cache; +} & ResourceOptions; + +export class Context { + private readonly instanceName = `#${Context.instanceCount++}`; + readonly logger: Logger; + readonly cache: Cache; + + private static instanceCount = 1; + + constructor(options: ContextOptions, public windowBounds: Bounds) { + this.logger = new Logger({id: this.instanceName, enabled: options.logging}); + this.cache = options.cache ?? new Cache(this, options); + } +} diff --git a/src/core/logger.ts b/src/core/logger.ts index 0a248d8c8..bd7012811 100644 --- a/src/core/logger.ts +++ b/src/core/logger.ts @@ -33,22 +33,6 @@ export class Logger { return Date.now() - this.start; } - static create(options: LoggerOptions): void { - Logger.instances[options.id] = new Logger(options); - } - - static destroy(id: string): void { - delete Logger.instances[id]; - } - - static getInstance(id: string): Logger { - const instance = Logger.instances[id]; - if (typeof instance === 'undefined') { - throw new Error(`No logger instance found with id ${id}`); - } - return instance; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any info(...args: unknown[]): void { if (this.enabled) { @@ -60,6 +44,19 @@ export class Logger { } } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + warn(...args: unknown[]): void { + if (this.enabled) { + // eslint-disable-next-line no-console + if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') { + // eslint-disable-next-line no-console + console.warn(this.id, `${this.getTime()}ms`, ...args); + } else { + this.info(...args); + } + } + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any error(...args: unknown[]): void { if (this.enabled) { diff --git a/src/css/IPropertyDescriptor.ts b/src/css/IPropertyDescriptor.ts index e3113dc91..8fc9e9207 100644 --- a/src/css/IPropertyDescriptor.ts +++ b/src/css/IPropertyDescriptor.ts @@ -1,5 +1,6 @@ import {CSSValue} from './syntax/parser'; import {CSSTypes} from './types/index'; +import {Context} from '../core/context'; export enum PropertyDescriptorParsingType { VALUE, @@ -18,7 +19,7 @@ export interface IPropertyDescriptor { export interface IPropertyIdentValueDescriptor extends IPropertyDescriptor { type: PropertyDescriptorParsingType.IDENT_VALUE; - parse: (token: string) => T; + parse: (context: Context, token: string) => T; } export interface IPropertyTypeValueDescriptor extends IPropertyDescriptor { @@ -28,12 +29,12 @@ export interface IPropertyTypeValueDescriptor extends IPropertyDescriptor { export interface IPropertyValueDescriptor extends IPropertyDescriptor { type: PropertyDescriptorParsingType.VALUE; - parse: (token: CSSValue) => T; + parse: (context: Context, token: CSSValue) => T; } export interface IPropertyListDescriptor extends IPropertyDescriptor { type: PropertyDescriptorParsingType.LIST; - parse: (tokens: CSSValue[]) => T; + parse: (context: Context, tokens: CSSValue[]) => T; } export interface IPropertyTokenValueDescriptor extends IPropertyDescriptor { diff --git a/src/css/ITypeDescriptor.ts b/src/css/ITypeDescriptor.ts index e4486017c..2f47081c5 100644 --- a/src/css/ITypeDescriptor.ts +++ b/src/css/ITypeDescriptor.ts @@ -1,6 +1,7 @@ import {CSSValue} from './syntax/parser'; +import {Context} from '../core/context'; export interface ITypeDescriptor { name: string; - parse: (value: CSSValue) => T; + parse: (context: Context, value: CSSValue) => T; } diff --git a/src/css/index.ts b/src/css/index.ts index 09d22d3d2..e1ab48340 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -76,6 +76,7 @@ import {boxShadow} from './property-descriptors/box-shadow'; import {paintOrder} from './property-descriptors/paint-order'; import {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color'; import {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width'; +import {Context} from '../core/context'; export class CSSParsedDeclaration { backgroundClip: ReturnType; @@ -143,75 +144,80 @@ export class CSSParsedDeclaration { wordBreak: ReturnType; zIndex: ReturnType; - constructor(declaration: CSSStyleDeclaration) { - this.backgroundClip = parse(backgroundClip, declaration.backgroundClip); - this.backgroundColor = parse(backgroundColor, declaration.backgroundColor); - this.backgroundImage = parse(backgroundImage, declaration.backgroundImage); - this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin); - this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition); - this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat); - this.backgroundSize = parse(backgroundSize, declaration.backgroundSize); - this.borderTopColor = parse(borderTopColor, declaration.borderTopColor); - this.borderRightColor = parse(borderRightColor, declaration.borderRightColor); - this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor); - this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor); - this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius); - this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius); - this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius); - this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius); - this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle); - this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle); - this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle); - this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle); - this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth); - this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth); - this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth); - this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth); - this.boxShadow = parse(boxShadow, declaration.boxShadow); - this.color = parse(color, declaration.color); - this.display = parse(display, declaration.display); - this.float = parse(float, declaration.cssFloat); - this.fontFamily = parse(fontFamily, declaration.fontFamily); - this.fontSize = parse(fontSize, declaration.fontSize); - this.fontStyle = parse(fontStyle, declaration.fontStyle); - this.fontVariant = parse(fontVariant, declaration.fontVariant); - this.fontWeight = parse(fontWeight, declaration.fontWeight); - this.letterSpacing = parse(letterSpacing, declaration.letterSpacing); - this.lineBreak = parse(lineBreak, declaration.lineBreak); - this.lineHeight = parse(lineHeight, declaration.lineHeight); - this.listStyleImage = parse(listStyleImage, declaration.listStyleImage); - this.listStylePosition = parse(listStylePosition, declaration.listStylePosition); - this.listStyleType = parse(listStyleType, declaration.listStyleType); - this.marginTop = parse(marginTop, declaration.marginTop); - this.marginRight = parse(marginRight, declaration.marginRight); - this.marginBottom = parse(marginBottom, declaration.marginBottom); - this.marginLeft = parse(marginLeft, declaration.marginLeft); - this.opacity = parse(opacity, declaration.opacity); - const overflowTuple = parse(overflow, declaration.overflow); + constructor(context: Context, declaration: CSSStyleDeclaration) { + this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip); + this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor); + this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage); + this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin); + this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition); + this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat); + this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize); + this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor); + this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor); + this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor); + this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor); + this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius); + this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius); + this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius); + this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius); + this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle); + this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle); + this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle); + this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle); + this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth); + this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth); + this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth); + this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth); + this.boxShadow = parse(context, boxShadow, declaration.boxShadow); + this.color = parse(context, color, declaration.color); + this.display = parse(context, display, declaration.display); + this.float = parse(context, float, declaration.cssFloat); + this.fontFamily = parse(context, fontFamily, declaration.fontFamily); + this.fontSize = parse(context, fontSize, declaration.fontSize); + this.fontStyle = parse(context, fontStyle, declaration.fontStyle); + this.fontVariant = parse(context, fontVariant, declaration.fontVariant); + this.fontWeight = parse(context, fontWeight, declaration.fontWeight); + this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing); + this.lineBreak = parse(context, lineBreak, declaration.lineBreak); + this.lineHeight = parse(context, lineHeight, declaration.lineHeight); + this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage); + this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition); + this.listStyleType = parse(context, listStyleType, declaration.listStyleType); + this.marginTop = parse(context, marginTop, declaration.marginTop); + this.marginRight = parse(context, marginRight, declaration.marginRight); + this.marginBottom = parse(context, marginBottom, declaration.marginBottom); + this.marginLeft = parse(context, marginLeft, declaration.marginLeft); + this.opacity = parse(context, opacity, declaration.opacity); + const overflowTuple = parse(context, overflow, declaration.overflow); this.overflowX = overflowTuple[0]; this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]; - this.overflowWrap = parse(overflowWrap, declaration.overflowWrap); - this.paddingTop = parse(paddingTop, declaration.paddingTop); - this.paddingRight = parse(paddingRight, declaration.paddingRight); - this.paddingBottom = parse(paddingBottom, declaration.paddingBottom); - this.paddingLeft = parse(paddingLeft, declaration.paddingLeft); - this.paintOrder = parse(paintOrder, declaration.paintOrder); - this.position = parse(position, declaration.position); - this.textAlign = parse(textAlign, declaration.textAlign); - this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor ?? declaration.color); + this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap); + this.paddingTop = parse(context, paddingTop, declaration.paddingTop); + this.paddingRight = parse(context, paddingRight, declaration.paddingRight); + this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom); + this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft); + this.paintOrder = parse(context, paintOrder, declaration.paintOrder); + this.position = parse(context, position, declaration.position); + this.textAlign = parse(context, textAlign, declaration.textAlign); + this.textDecorationColor = parse( + context, + textDecorationColor, + declaration.textDecorationColor ?? declaration.color + ); this.textDecorationLine = parse( + context, textDecorationLine, declaration.textDecorationLine ?? declaration.textDecoration ); - this.textShadow = parse(textShadow, declaration.textShadow); - this.textTransform = parse(textTransform, declaration.textTransform); - this.transform = parse(transform, declaration.transform); - this.transformOrigin = parse(transformOrigin, declaration.transformOrigin); - this.visibility = parse(visibility, declaration.visibility); - this.webkitTextStrokeColor = parse(webkitTextStrokeColor, declaration.webkitTextStrokeColor); - this.webkitTextStrokeWidth = parse(webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); - this.wordBreak = parse(wordBreak, declaration.wordBreak); - this.zIndex = parse(zIndex, declaration.zIndex); + this.textShadow = parse(context, textShadow, declaration.textShadow); + this.textTransform = parse(context, textTransform, declaration.textTransform); + this.transform = parse(context, transform, declaration.transform); + this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); + this.visibility = parse(context, visibility, declaration.visibility); + this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); + this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); + this.wordBreak = parse(context, wordBreak, declaration.wordBreak); + this.zIndex = parse(context, zIndex, declaration.zIndex); } isVisible(): boolean { @@ -254,9 +260,9 @@ export class CSSParsedPseudoDeclaration { content: ReturnType; quotes: ReturnType; - constructor(declaration: CSSStyleDeclaration) { - this.content = parse(content, declaration.content); - this.quotes = parse(quotes, declaration.quotes); + constructor(context: Context, declaration: CSSStyleDeclaration) { + this.content = parse(context, content, declaration.content); + this.quotes = parse(context, quotes, declaration.quotes); } } @@ -264,14 +270,14 @@ export class CSSParsedCounterDeclaration { counterIncrement: ReturnType; counterReset: ReturnType; - constructor(declaration: CSSStyleDeclaration) { - this.counterIncrement = parse(counterIncrement, declaration.counterIncrement); - this.counterReset = parse(counterReset, declaration.counterReset); + constructor(context: Context, declaration: CSSStyleDeclaration) { + this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement); + this.counterReset = parse(context, counterReset, declaration.counterReset); } } // eslint-disable-next-line @typescript-eslint/no-explicit-any -const parse = (descriptor: CSSPropertyDescriptor, style?: string | null) => { +const parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => { const tokenizer = new Tokenizer(); const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue; tokenizer.write(value); @@ -279,21 +285,21 @@ const parse = (descriptor: CSSPropertyDescriptor, style?: string | null) => switch (descriptor.type) { case PropertyDescriptorParsingType.IDENT_VALUE: const token = parser.parseComponentValue(); - return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue); + return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue); case PropertyDescriptorParsingType.VALUE: - return descriptor.parse(parser.parseComponentValue()); + return descriptor.parse(context, parser.parseComponentValue()); case PropertyDescriptorParsingType.LIST: - return descriptor.parse(parser.parseComponentValues()); + return descriptor.parse(context, parser.parseComponentValues()); case PropertyDescriptorParsingType.TOKEN_VALUE: return parser.parseComponentValue(); case PropertyDescriptorParsingType.TYPE_VALUE: switch (descriptor.format) { case 'angle': - return angle.parse(parser.parseComponentValue()); + return angle.parse(context, parser.parseComponentValue()); case 'color': - return colorType.parse(parser.parseComponentValue()); + return colorType.parse(context, parser.parseComponentValue()); case 'image': - return image.parse(parser.parseComponentValue()); + return image.parse(context, parser.parseComponentValue()); case 'length': const length = parser.parseComponentValue(); return isLength(length) ? length : ZERO_LENGTH; diff --git a/src/css/layout/bounds.ts b/src/css/layout/bounds.ts index 42ae1c8a0..04596e305 100644 --- a/src/css/layout/bounds.ts +++ b/src/css/layout/bounds.ts @@ -1,27 +1,24 @@ +import {Context} from '../../core/context'; + export class Bounds { - readonly top: number; - readonly left: number; - readonly width: number; - readonly height: number; - - constructor(x: number, y: number, w: number, h: number) { - this.left = x; - this.top = y; - this.width = w; - this.height = h; - } + constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {} add(x: number, y: number, w: number, h: number): Bounds { return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h); } - static fromClientRect(clientRect: ClientRect): Bounds { - return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height); + static fromClientRect(context: Context, clientRect: ClientRect): Bounds { + return new Bounds( + clientRect.left + context.windowBounds.left, + clientRect.top + context.windowBounds.top, + clientRect.width, + clientRect.height + ); } } -export const parseBounds = (node: Element): Bounds => { - return Bounds.fromClientRect(node.getBoundingClientRect()); +export const parseBounds = (context: Context, node: Element): Bounds => { + return Bounds.fromClientRect(context, node.getBoundingClientRect()); }; export const parseDocumentSize = (document: Document): Bounds => { diff --git a/src/css/layout/text.ts b/src/css/layout/text.ts index 2734967bb..247392663 100644 --- a/src/css/layout/text.ts +++ b/src/css/layout/text.ts @@ -3,6 +3,7 @@ import {CSSParsedDeclaration} from '../index'; import {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break'; import {Bounds, parseBounds} from './bounds'; import {FEATURES} from '../../core/features'; +import {Context} from '../../core/context'; export class TextBounds { readonly text: string; @@ -14,17 +15,22 @@ export class TextBounds { } } -export const parseTextBounds = (value: string, styles: CSSParsedDeclaration, node: Text): TextBounds[] => { +export const parseTextBounds = ( + context: Context, + value: string, + styles: CSSParsedDeclaration, + node: Text +): TextBounds[] => { const textList = breakText(value, styles); const textBounds: TextBounds[] = []; let offset = 0; textList.forEach((text) => { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { - textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length))); + textBounds.push(new TextBounds(text, getRangeBounds(context, node, offset, text.length))); } else { const replacementNode = node.splitText(text.length); - textBounds.push(new TextBounds(text, getWrapperBounds(node))); + textBounds.push(new TextBounds(text, getWrapperBounds(context, node))); node = replacementNode; } } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) { @@ -36,7 +42,7 @@ export const parseTextBounds = (value: string, styles: CSSParsedDeclaration, nod return textBounds; }; -const getWrapperBounds = (node: Text): Bounds => { +const getWrapperBounds = (context: Context, node: Text): Bounds => { const ownerDocument = node.ownerDocument; if (ownerDocument) { const wrapper = ownerDocument.createElement('html2canvaswrapper'); @@ -44,7 +50,7 @@ const getWrapperBounds = (node: Text): Bounds => { const parentNode = node.parentNode; if (parentNode) { parentNode.replaceChild(wrapper, node); - const bounds = parseBounds(wrapper); + const bounds = parseBounds(context, wrapper); if (wrapper.firstChild) { parentNode.replaceChild(wrapper.firstChild, wrapper); } @@ -55,7 +61,7 @@ const getWrapperBounds = (node: Text): Bounds => { return new Bounds(0, 0, 0, 0); }; -const getRangeBounds = (node: Text, offset: number, length: number): Bounds => { +const getRangeBounds = (context: Context, node: Text, offset: number, length: number): Bounds => { const ownerDocument = node.ownerDocument; if (!ownerDocument) { throw new Error('Node has no owner document'); @@ -63,7 +69,7 @@ const getRangeBounds = (node: Text, offset: number, length: number): Bounds => { const range = ownerDocument.createRange(); range.setStart(node, offset); range.setEnd(node, offset + length); - return Bounds.fromClientRect(range.getBoundingClientRect()); + return Bounds.fromClientRect(context, range.getBoundingClientRect()); }; const breakText = (value: string, styles: CSSParsedDeclaration): string[] => { diff --git a/src/css/property-descriptors/__tests__/background-tests.ts b/src/css/property-descriptors/__tests__/background-tests.ts index 2f6149501..35f0923fa 100644 --- a/src/css/property-descriptors/__tests__/background-tests.ts +++ b/src/css/property-descriptors/__tests__/background-tests.ts @@ -5,27 +5,42 @@ import {CSSImageType} from '../../types/image'; import {pack} from '../../types/color'; import {deg} from '../../types/angle'; -jest.mock('../../../core/cache-storage'); +jest.mock('../../../core/context'); +import {Context} from '../../../core/context'; + jest.mock('../../../core/features'); -const backgroundImageParse = (value: string) => backgroundImage.parse(Parser.parseValues(value)); +const backgroundImageParse = (context: Context, value: string) => + backgroundImage.parse(context, Parser.parseValues(value)); describe('property-descriptors', () => { + let context: Context; + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + context = new Context({} as any, {} as any); + }); describe('background-image', () => { - it('none', () => deepStrictEqual(backgroundImageParse('none'), [])); + it('none', () => { + deepStrictEqual(backgroundImageParse(context, 'none'), []); + expect(context.cache.addImage).not.toHaveBeenCalled(); + }); - it('url(test.jpg), url(test2.jpg)', () => + it('url(test.jpg), url(test2.jpg)', () => { deepStrictEqual( - backgroundImageParse('url(http://example.com/test.jpg), url(http://example.com/test2.jpg)'), + backgroundImageParse(context, 'url(http://example.com/test.jpg), url(http://example.com/test2.jpg)'), [ {url: 'http://example.com/test.jpg', type: CSSImageType.URL}, {url: 'http://example.com/test2.jpg', type: CSSImageType.URL} ] - )); + ); + expect(context.cache.addImage).toHaveBeenCalledWith('http://example.com/test.jpg'); + expect(context.cache.addImage).toHaveBeenCalledWith('http://example.com/test2.jpg'); + }); it(`linear-gradient(to bottom, rgba(255,255,0,0.5), rgba(0,0,255,0.5)), url('https://html2canvas.hertzen.com')`, () => deepStrictEqual( backgroundImageParse( + context, `linear-gradient(to bottom, rgba(255,255,0,0.5), rgba(0,0,255,0.5)), url('https://html2canvas.hertzen.com')` ), [ diff --git a/src/css/property-descriptors/__tests__/font-family.ts b/src/css/property-descriptors/__tests__/font-family.ts index f98a9ce49..38c54b819 100644 --- a/src/css/property-descriptors/__tests__/font-family.ts +++ b/src/css/property-descriptors/__tests__/font-family.ts @@ -1,8 +1,9 @@ import {deepEqual} from 'assert'; import {Parser} from '../../syntax/parser'; import {fontFamily} from '../font-family'; +import {Context} from '../../../core/context'; -const fontFamilyParse = (value: string) => fontFamily.parse(Parser.parseValues(value)); +const fontFamilyParse = (value: string) => fontFamily.parse({} as Context, Parser.parseValues(value)); describe('property-descriptors', () => { describe('font-family', () => { diff --git a/src/css/property-descriptors/__tests__/paint-order.ts b/src/css/property-descriptors/__tests__/paint-order.ts index 19aa7e35e..6b76f4f24 100644 --- a/src/css/property-descriptors/__tests__/paint-order.ts +++ b/src/css/property-descriptors/__tests__/paint-order.ts @@ -1,8 +1,9 @@ import {deepStrictEqual} from 'assert'; import {Parser} from '../../syntax/parser'; import {paintOrder, PAINT_ORDER_LAYER} from '../paint-order'; +import {Context} from '../../../core/context'; -const paintOrderParse = (value: string) => paintOrder.parse(Parser.parseValues(value)); +const paintOrderParse = (value: string) => paintOrder.parse({} as Context, Parser.parseValues(value)); describe('property-descriptors', () => { describe('paint-order', () => { diff --git a/src/css/property-descriptors/__tests__/text-shadow.ts b/src/css/property-descriptors/__tests__/text-shadow.ts index 1eae5f89c..ae0ad7436 100644 --- a/src/css/property-descriptors/__tests__/text-shadow.ts +++ b/src/css/property-descriptors/__tests__/text-shadow.ts @@ -4,9 +4,10 @@ import {color, COLORS} from '../../types/color'; import {textShadow} from '../text-shadow'; import {FLAG_INTEGER, DimensionToken, TokenType} from '../../syntax/tokenizer'; import {ZERO_LENGTH} from '../../types/length-percentage'; +import {Context} from '../../../core/context'; -const textShadowParse = (value: string) => textShadow.parse(Parser.parseValues(value)); -const colorParse = (value: string) => color.parse(Parser.parseValue(value)); +const textShadowParse = (value: string) => textShadow.parse({} as Context, Parser.parseValues(value)); +const colorParse = (value: string) => color.parse({} as Context, Parser.parseValue(value)); const dimension = (number: number, unit: string): DimensionToken => ({ flags: FLAG_INTEGER, number, diff --git a/src/css/property-descriptors/__tests__/transform-tests.ts b/src/css/property-descriptors/__tests__/transform-tests.ts index 48c6bf17a..949534250 100644 --- a/src/css/property-descriptors/__tests__/transform-tests.ts +++ b/src/css/property-descriptors/__tests__/transform-tests.ts @@ -1,7 +1,8 @@ import {transform} from '../transform'; import {Parser} from '../../syntax/parser'; import {deepStrictEqual} from 'assert'; -const parseValue = (value: string) => transform.parse(Parser.parseValue(value)); +import {Context} from '../../../core/context'; +const parseValue = (value: string) => transform.parse({} as Context, Parser.parseValue(value)); describe('property-descriptors', () => { describe('transform', () => { diff --git a/src/css/property-descriptors/background-clip.ts b/src/css/property-descriptors/background-clip.ts index f64c53dc1..022676dac 100644 --- a/src/css/property-descriptors/background-clip.ts +++ b/src/css/property-descriptors/background-clip.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export enum BACKGROUND_CLIP { BORDER_BOX = 0, PADDING_BOX = 1, @@ -13,7 +14,7 @@ export const backgroundClip: IPropertyListDescriptor = { initialValue: 'border-box', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): BackgroundClip => { + parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => { return tokens.map((token) => { if (isIdentToken(token)) { switch (token.value) { diff --git a/src/css/property-descriptors/background-image.ts b/src/css/property-descriptors/background-image.ts index 97099469b..d8553f3d1 100644 --- a/src/css/property-descriptors/background-image.ts +++ b/src/css/property-descriptors/background-image.ts @@ -2,13 +2,14 @@ import {TokenType} from '../syntax/tokenizer'; import {ICSSImage, image, isSupportedImage} from '../types/image'; import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, nonFunctionArgSeparator} from '../syntax/parser'; +import {Context} from '../../core/context'; export const backgroundImage: IPropertyListDescriptor = { name: 'background-image', initialValue: 'none', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]) => { + parse: (context: Context, tokens: CSSValue[]) => { if (tokens.length === 0) { return []; } @@ -19,6 +20,8 @@ export const backgroundImage: IPropertyListDescriptor = { return []; } - return tokens.filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value)).map(image.parse); + return tokens + .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value)) + .map((value) => image.parse(context, value)); } }; diff --git a/src/css/property-descriptors/background-origin.ts b/src/css/property-descriptors/background-origin.ts index 86b4a75fe..85a1ed869 100644 --- a/src/css/property-descriptors/background-origin.ts +++ b/src/css/property-descriptors/background-origin.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const enum BACKGROUND_ORIGIN { BORDER_BOX = 0, @@ -14,7 +15,7 @@ export const backgroundOrigin: IPropertyListDescriptor = { initialValue: 'border-box', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): BackgroundOrigin => { + parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => { return tokens.map((token) => { if (isIdentToken(token)) { switch (token.value) { diff --git a/src/css/property-descriptors/background-position.ts b/src/css/property-descriptors/background-position.ts index 5f67d180e..729cac1be 100644 --- a/src/css/property-descriptors/background-position.ts +++ b/src/css/property-descriptors/background-position.ts @@ -1,6 +1,7 @@ import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor'; import {CSSValue, parseFunctionArgs} from '../syntax/parser'; import {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage'; +import {Context} from '../../core/context'; export type BackgroundPosition = BackgroundImagePosition[]; export type BackgroundImagePosition = LengthPercentageTuple; @@ -10,7 +11,7 @@ export const backgroundPosition: IPropertyListDescriptor = { initialValue: '0% 0%', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]): BackgroundPosition => { + parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => { return parseFunctionArgs(tokens) .map((values: CSSValue[]) => values.filter(isLengthPercentage)) .map(parseLengthPercentageTuple); diff --git a/src/css/property-descriptors/background-repeat.ts b/src/css/property-descriptors/background-repeat.ts index d35220b51..e02dcb1cc 100644 --- a/src/css/property-descriptors/background-repeat.ts +++ b/src/css/property-descriptors/background-repeat.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser'; +import {Context} from '../../core/context'; export type BackgroundRepeat = BACKGROUND_REPEAT[]; export enum BACKGROUND_REPEAT { @@ -14,7 +15,7 @@ export const backgroundRepeat: IPropertyListDescriptor = { initialValue: 'repeat', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): BackgroundRepeat => { + parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => { return parseFunctionArgs(tokens) .map((values) => values diff --git a/src/css/property-descriptors/background-size.ts b/src/css/property-descriptors/background-size.ts index a62e6f6ae..d9b3d29f3 100644 --- a/src/css/property-descriptors/background-size.ts +++ b/src/css/property-descriptors/background-size.ts @@ -2,6 +2,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IProper import {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser'; import {isLengthPercentage, LengthPercentage} from '../types/length-percentage'; import {StringValueToken} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export enum BACKGROUND_SIZE { AUTO = 'auto', @@ -17,7 +18,7 @@ export const backgroundSize: IPropertyListDescriptor = { initialValue: '0', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): BackgroundSize => { + parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => { return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken)); } }; diff --git a/src/css/property-descriptors/border-radius.ts b/src/css/property-descriptors/border-radius.ts index 23a4a9a66..29fd3d191 100644 --- a/src/css/property-descriptors/border-radius.ts +++ b/src/css/property-descriptors/border-radius.ts @@ -1,6 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; import {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage'; +import {Context} from '../../core/context'; export type BorderRadius = LengthPercentageTuple; const borderRadiusForSide = (side: string): IPropertyListDescriptor => ({ @@ -8,7 +9,8 @@ const borderRadiusForSide = (side: string): IPropertyListDescriptor parseLengthPercentageTuple(tokens.filter(isLengthPercentage)) + parse: (_context: Context, tokens: CSSValue[]): BorderRadius => + parseLengthPercentageTuple(tokens.filter(isLengthPercentage)) }); export const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left'); diff --git a/src/css/property-descriptors/border-style.ts b/src/css/property-descriptors/border-style.ts index b70ff077b..4302f66a5 100644 --- a/src/css/property-descriptors/border-style.ts +++ b/src/css/property-descriptors/border-style.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum BORDER_STYLE { NONE = 0, SOLID = 1, @@ -12,7 +13,7 @@ const borderStyleForSide = (side: string): IPropertyIdentValueDescriptor { + parse: (_context: Context, style: string): BORDER_STYLE => { switch (style) { case 'none': return BORDER_STYLE.NONE; diff --git a/src/css/property-descriptors/border-width.ts b/src/css/property-descriptors/border-width.ts index 853dde97c..1fd9e9797 100644 --- a/src/css/property-descriptors/border-width.ts +++ b/src/css/property-descriptors/border-width.ts @@ -1,11 +1,12 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isDimensionToken} from '../syntax/parser'; +import {Context} from '../../core/context'; const borderWidthForSide = (side: string): IPropertyValueDescriptor => ({ name: `border-${side}-width`, initialValue: '0', type: PropertyDescriptorParsingType.VALUE, prefix: false, - parse: (token: CSSValue): number => { + parse: (_context: Context, token: CSSValue): number => { if (isDimensionToken(token)) { return token.number; } diff --git a/src/css/property-descriptors/box-shadow.ts b/src/css/property-descriptors/box-shadow.ts index 8a4253685..84df3a04a 100644 --- a/src/css/property-descriptors/box-shadow.ts +++ b/src/css/property-descriptors/box-shadow.ts @@ -3,6 +3,7 @@ import {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser'; import {ZERO_LENGTH} from '../types/length-percentage'; import {color, Color} from '../types/color'; import {isLength, Length} from '../types/length'; +import {Context} from '../../core/context'; export type BoxShadow = BoxShadowItem[]; interface BoxShadowItem { @@ -19,7 +20,7 @@ export const boxShadow: IPropertyListDescriptor = { initialValue: 'none', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]): BoxShadow => { + parse: (context: Context, tokens: CSSValue[]): BoxShadow => { if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) { return []; } @@ -50,7 +51,7 @@ export const boxShadow: IPropertyListDescriptor = { } c++; } else { - shadow.color = color.parse(token); + shadow.color = color.parse(context, token); } } return shadow; diff --git a/src/css/property-descriptors/content.ts b/src/css/property-descriptors/content.ts index 956d511ab..90ec02008 100644 --- a/src/css/property-descriptors/content.ts +++ b/src/css/property-descriptors/content.ts @@ -1,6 +1,7 @@ import {TokenType} from '../syntax/tokenizer'; import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; +import {Context} from '../../core/context'; export type Content = CSSValue[]; @@ -9,7 +10,7 @@ export const content: IPropertyListDescriptor = { initialValue: 'none', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { if (tokens.length === 0) { return []; } diff --git a/src/css/property-descriptors/counter-increment.ts b/src/css/property-descriptors/counter-increment.ts index a43e97e92..6af589470 100644 --- a/src/css/property-descriptors/counter-increment.ts +++ b/src/css/property-descriptors/counter-increment.ts @@ -1,6 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export interface COUNTER_INCREMENT { counter: string; @@ -14,7 +15,7 @@ export const counterIncrement: IPropertyListDescriptor = { initialValue: 'none', prefix: true, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { if (tokens.length === 0) { return null; } diff --git a/src/css/property-descriptors/counter-reset.ts b/src/css/property-descriptors/counter-reset.ts index aa958ed0a..b77dc03e2 100644 --- a/src/css/property-descriptors/counter-reset.ts +++ b/src/css/property-descriptors/counter-reset.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser'; +import {Context} from '../../core/context'; export interface COUNTER_RESET { counter: string; @@ -13,7 +14,7 @@ export const counterReset: IPropertyListDescriptor = { initialValue: 'none', prefix: true, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { if (tokens.length === 0) { return []; } diff --git a/src/css/property-descriptors/display.ts b/src/css/property-descriptors/display.ts index 4243c4a75..d36d7c3d1 100644 --- a/src/css/property-descriptors/display.ts +++ b/src/css/property-descriptors/display.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const enum DISPLAY { NONE = 0, BLOCK = 1 << 1, @@ -40,7 +41,7 @@ export const display: IPropertyListDescriptor = { initialValue: 'inline-block', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): Display => { + parse: (_context: Context, tokens: CSSValue[]): Display => { return tokens.filter(isIdentToken).reduce((bit, token) => { return bit | parseDisplayValue(token.value); }, DISPLAY.NONE); diff --git a/src/css/property-descriptors/float.ts b/src/css/property-descriptors/float.ts index ba0a98aaa..134785e49 100644 --- a/src/css/property-descriptors/float.ts +++ b/src/css/property-descriptors/float.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum FLOAT { NONE = 0, LEFT = 1, @@ -12,7 +13,7 @@ export const float: IPropertyIdentValueDescriptor = { initialValue: 'none', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (float: string) => { + parse: (_context: Context, float: string) => { switch (float) { case 'left': return FLOAT.LEFT; diff --git a/src/css/property-descriptors/font-family.ts b/src/css/property-descriptors/font-family.ts index e64475909..ec1e282e2 100644 --- a/src/css/property-descriptors/font-family.ts +++ b/src/css/property-descriptors/font-family.ts @@ -1,6 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export type FONT_FAMILY = string; @@ -11,7 +12,7 @@ export const fontFamily: IPropertyListDescriptor = { initialValue: '', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { const accumulator: string[] = []; const results: string[] = []; tokens.forEach((token) => { diff --git a/src/css/property-descriptors/font-style.ts b/src/css/property-descriptors/font-style.ts index 84fe0cc5a..9a9c40ecd 100644 --- a/src/css/property-descriptors/font-style.ts +++ b/src/css/property-descriptors/font-style.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum FONT_STYLE { NORMAL = 'normal', ITALIC = 'italic', @@ -10,7 +11,7 @@ export const fontStyle: IPropertyIdentValueDescriptor = { initialValue: 'normal', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (overflow: string) => { + parse: (_context: Context, overflow: string) => { switch (overflow) { case 'oblique': return FONT_STYLE.OBLIQUE; diff --git a/src/css/property-descriptors/font-variant.ts b/src/css/property-descriptors/font-variant.ts index 66e54ba88..e416513c9 100644 --- a/src/css/property-descriptors/font-variant.ts +++ b/src/css/property-descriptors/font-variant.ts @@ -1,11 +1,12 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const fontVariant: IPropertyListDescriptor = { name: 'font-variant', initialValue: 'none', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]): string[] => { + parse: (_context: Context, tokens: CSSValue[]): string[] => { return tokens.filter(isIdentToken).map((token) => token.value); } }; diff --git a/src/css/property-descriptors/font-weight.ts b/src/css/property-descriptors/font-weight.ts index cf80d1a9d..ca418b62b 100644 --- a/src/css/property-descriptors/font-weight.ts +++ b/src/css/property-descriptors/font-weight.ts @@ -1,11 +1,12 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const fontWeight: IPropertyValueDescriptor = { name: 'font-weight', initialValue: 'normal', type: PropertyDescriptorParsingType.VALUE, prefix: false, - parse: (token: CSSValue): number => { + parse: (_context: Context, token: CSSValue): number => { if (isNumberToken(token)) { return token.number; } diff --git a/src/css/property-descriptors/letter-spacing.ts b/src/css/property-descriptors/letter-spacing.ts index d4d1c2efd..6f82333ea 100644 --- a/src/css/property-descriptors/letter-spacing.ts +++ b/src/css/property-descriptors/letter-spacing.ts @@ -1,12 +1,13 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export const letterSpacing: IPropertyValueDescriptor = { name: 'letter-spacing', initialValue: '0', prefix: false, type: PropertyDescriptorParsingType.VALUE, - parse: (token: CSSValue) => { + parse: (_context: Context, token: CSSValue) => { if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') { return 0; } diff --git a/src/css/property-descriptors/line-break.ts b/src/css/property-descriptors/line-break.ts index 1a4b02b6f..1fe3f136e 100644 --- a/src/css/property-descriptors/line-break.ts +++ b/src/css/property-descriptors/line-break.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum LINE_BREAK { NORMAL = 'normal', STRICT = 'strict' @@ -9,7 +10,7 @@ export const lineBreak: IPropertyIdentValueDescriptor = { initialValue: 'normal', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (lineBreak: string): LINE_BREAK => { + parse: (_context: Context, lineBreak: string): LINE_BREAK => { switch (lineBreak) { case 'strict': return LINE_BREAK.STRICT; diff --git a/src/css/property-descriptors/list-style-image.ts b/src/css/property-descriptors/list-style-image.ts index 11143f12a..4cb4fccaa 100644 --- a/src/css/property-descriptors/list-style-image.ts +++ b/src/css/property-descriptors/list-style-image.ts @@ -2,17 +2,18 @@ import {TokenType} from '../syntax/tokenizer'; import {ICSSImage, image} from '../types/image'; import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; +import {Context} from '../../core/context'; export const listStyleImage: IPropertyValueDescriptor = { name: 'list-style-image', initialValue: 'none', type: PropertyDescriptorParsingType.VALUE, prefix: false, - parse: (token: CSSValue) => { + parse: (context: Context, token: CSSValue) => { if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') { return null; } - return image.parse(token); + return image.parse(context, token); } }; diff --git a/src/css/property-descriptors/list-style-position.ts b/src/css/property-descriptors/list-style-position.ts index c636ccefd..d4fbf744b 100644 --- a/src/css/property-descriptors/list-style-position.ts +++ b/src/css/property-descriptors/list-style-position.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum LIST_STYLE_POSITION { INSIDE = 0, OUTSIDE = 1 @@ -9,7 +10,7 @@ export const listStylePosition: IPropertyIdentValueDescriptor { + parse: (_context: Context, position: string) => { switch (position) { case 'inside': return LIST_STYLE_POSITION.INSIDE; diff --git a/src/css/property-descriptors/list-style-type.ts b/src/css/property-descriptors/list-style-type.ts index 8ddaad660..8655001a7 100644 --- a/src/css/property-descriptors/list-style-type.ts +++ b/src/css/property-descriptors/list-style-type.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum LIST_STYLE_TYPE { NONE = -1, DISC = 0, @@ -61,7 +62,7 @@ export const listStyleType: IPropertyIdentValueDescriptor = { initialValue: 'none', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (type: string) => { + parse: (_context: Context, type: string) => { switch (type) { case 'disc': return LIST_STYLE_TYPE.DISC; diff --git a/src/css/property-descriptors/opacity.ts b/src/css/property-descriptors/opacity.ts index cbcc033ab..579e973f7 100644 --- a/src/css/property-descriptors/opacity.ts +++ b/src/css/property-descriptors/opacity.ts @@ -1,11 +1,12 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isNumberToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const opacity: IPropertyValueDescriptor = { name: 'opacity', initialValue: '1', type: PropertyDescriptorParsingType.VALUE, prefix: false, - parse: (token: CSSValue): number => { + parse: (_context: Context, token: CSSValue): number => { if (isNumberToken(token)) { return token.number; } diff --git a/src/css/property-descriptors/overflow-wrap.ts b/src/css/property-descriptors/overflow-wrap.ts index d7d2dfc7e..e28887d5f 100644 --- a/src/css/property-descriptors/overflow-wrap.ts +++ b/src/css/property-descriptors/overflow-wrap.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum OVERFLOW_WRAP { NORMAL = 'normal', BREAK_WORD = 'break-word' @@ -9,7 +10,7 @@ export const overflowWrap: IPropertyIdentValueDescriptor = { initialValue: 'normal', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (overflow: string) => { + parse: (_context: Context, overflow: string) => { switch (overflow) { case 'break-word': return OVERFLOW_WRAP.BREAK_WORD; diff --git a/src/css/property-descriptors/overflow.ts b/src/css/property-descriptors/overflow.ts index 8d9f8fab5..19ac5444c 100644 --- a/src/css/property-descriptors/overflow.ts +++ b/src/css/property-descriptors/overflow.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export enum OVERFLOW { VISIBLE = 0, HIDDEN = 1, @@ -12,7 +13,7 @@ export const overflow: IPropertyListDescriptor = { initialValue: 'visible', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): OVERFLOW[] => { + parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => { return tokens.filter(isIdentToken).map((overflow) => { switch (overflow.value) { case 'hidden': diff --git a/src/css/property-descriptors/paint-order.ts b/src/css/property-descriptors/paint-order.ts index eb2a901de..83fade4ee 100644 --- a/src/css/property-descriptors/paint-order.ts +++ b/src/css/property-descriptors/paint-order.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export enum PAINT_ORDER_LAYER { FILL, STROKE, @@ -13,9 +14,9 @@ export const paintOrder: IPropertyListDescriptor = { initialValue: 'normal', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): PaintOrder => { + parse: (_context: Context, tokens: CSSValue[]): PaintOrder => { const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS]; - let layers: PaintOrder = []; + const layers: PaintOrder = []; tokens.filter(isIdentToken).forEach((token) => { switch (token.value) { diff --git a/src/css/property-descriptors/position.ts b/src/css/property-descriptors/position.ts index ba1b381a4..8ff8944cb 100644 --- a/src/css/property-descriptors/position.ts +++ b/src/css/property-descriptors/position.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum POSITION { STATIC = 0, RELATIVE = 1, @@ -12,7 +13,7 @@ export const position: IPropertyIdentValueDescriptor = { initialValue: 'static', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (position: string) => { + parse: (_context: Context, position: string) => { switch (position) { case 'relative': return POSITION.RELATIVE; diff --git a/src/css/property-descriptors/quotes.ts b/src/css/property-descriptors/quotes.ts index 29c3c79ea..db22beb4e 100644 --- a/src/css/property-descriptors/quotes.ts +++ b/src/css/property-descriptors/quotes.ts @@ -1,6 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isStringToken} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export interface QUOTE { open: string; @@ -14,7 +15,7 @@ export const quotes: IPropertyListDescriptor = { initialValue: 'none', prefix: true, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { if (tokens.length === 0) { return null; } diff --git a/src/css/property-descriptors/text-align.ts b/src/css/property-descriptors/text-align.ts index d0ef6c5f0..6fb4d1791 100644 --- a/src/css/property-descriptors/text-align.ts +++ b/src/css/property-descriptors/text-align.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum TEXT_ALIGN { LEFT = 0, CENTER = 1, @@ -10,7 +11,7 @@ export const textAlign: IPropertyIdentValueDescriptor = { initialValue: 'left', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (textAlign: string) => { + parse: (_context: Context, textAlign: string) => { switch (textAlign) { case 'right': return TEXT_ALIGN.RIGHT; diff --git a/src/css/property-descriptors/text-decoration-line.ts b/src/css/property-descriptors/text-decoration-line.ts index ebeeaeab3..5028eb53a 100644 --- a/src/css/property-descriptors/text-decoration-line.ts +++ b/src/css/property-descriptors/text-decoration-line.ts @@ -1,5 +1,6 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; +import {Context} from '../../core/context'; export const enum TEXT_DECORATION_LINE { NONE = 0, @@ -16,7 +17,7 @@ export const textDecorationLine: IPropertyListDescriptor = { initialValue: 'none', prefix: false, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]): TextDecorationLine => { + parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => { return tokens .filter(isIdentToken) .map((token) => { diff --git a/src/css/property-descriptors/text-shadow.ts b/src/css/property-descriptors/text-shadow.ts index 44efeaebe..fd5802300 100644 --- a/src/css/property-descriptors/text-shadow.ts +++ b/src/css/property-descriptors/text-shadow.ts @@ -3,6 +3,7 @@ import {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser'; import {ZERO_LENGTH} from '../types/length-percentage'; import {color, Color, COLORS} from '../types/color'; import {isLength, Length} from '../types/length'; +import {Context} from '../../core/context'; export type TextShadow = TextShadowItem[]; interface TextShadowItem { @@ -17,7 +18,7 @@ export const textShadow: IPropertyListDescriptor = { initialValue: 'none', type: PropertyDescriptorParsingType.LIST, prefix: false, - parse: (tokens: CSSValue[]): TextShadow => { + parse: (context: Context, tokens: CSSValue[]): TextShadow => { if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) { return []; } @@ -42,7 +43,7 @@ export const textShadow: IPropertyListDescriptor = { } c++; } else { - shadow.color = color.parse(token); + shadow.color = color.parse(context, token); } } return shadow; diff --git a/src/css/property-descriptors/text-transform.ts b/src/css/property-descriptors/text-transform.ts index 08d3c4ab3..fd879beb1 100644 --- a/src/css/property-descriptors/text-transform.ts +++ b/src/css/property-descriptors/text-transform.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum TEXT_TRANSFORM { NONE = 0, LOWERCASE = 1, @@ -11,7 +12,7 @@ export const textTransform: IPropertyIdentValueDescriptor = { initialValue: 'none', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (textTransform: string) => { + parse: (_context: Context, textTransform: string) => { switch (textTransform) { case 'uppercase': return TEXT_TRANSFORM.UPPERCASE; diff --git a/src/css/property-descriptors/transform-origin.ts b/src/css/property-descriptors/transform-origin.ts index 29a18192c..bdad47146 100644 --- a/src/css/property-descriptors/transform-origin.ts +++ b/src/css/property-descriptors/transform-origin.ts @@ -2,6 +2,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IProper import {CSSValue} from '../syntax/parser'; import {isLengthPercentage, LengthPercentage} from '../types/length-percentage'; import {FLAG_INTEGER, TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export type TransformOrigin = [LengthPercentage, LengthPercentage]; const DEFAULT_VALUE: LengthPercentage = { @@ -16,7 +17,7 @@ export const transformOrigin: IPropertyListDescriptor = { initialValue: '50% 50%', prefix: true, type: PropertyDescriptorParsingType.LIST, - parse: (tokens: CSSValue[]) => { + parse: (_context: Context, tokens: CSSValue[]) => { const origins: LengthPercentage[] = tokens.filter(isLengthPercentage); if (origins.length !== 2) { diff --git a/src/css/property-descriptors/transform.ts b/src/css/property-descriptors/transform.ts index ca5a0bd14..a99a5750d 100644 --- a/src/css/property-descriptors/transform.ts +++ b/src/css/property-descriptors/transform.ts @@ -1,6 +1,7 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue} from '../syntax/parser'; import {NumberValueToken, TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; export type Matrix = [number, number, number, number, number, number]; export type Transform = Matrix | null; @@ -9,7 +10,7 @@ export const transform: IPropertyValueDescriptor = { initialValue: 'none', prefix: true, type: PropertyDescriptorParsingType.VALUE, - parse: (token: CSSValue) => { + parse: (_context: Context, token: CSSValue) => { if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') { return null; } diff --git a/src/css/property-descriptors/visibility.ts b/src/css/property-descriptors/visibility.ts index 0410edbc4..ede4df1a8 100644 --- a/src/css/property-descriptors/visibility.ts +++ b/src/css/property-descriptors/visibility.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum VISIBILITY { VISIBLE = 0, HIDDEN = 1, @@ -10,7 +11,7 @@ export const visibility: IPropertyIdentValueDescriptor = { initialValue: 'none', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (visibility: string) => { + parse: (_context: Context, visibility: string) => { switch (visibility) { case 'hidden': return VISIBILITY.HIDDEN; diff --git a/src/css/property-descriptors/webkit-text-stroke-width.ts b/src/css/property-descriptors/webkit-text-stroke-width.ts index 4d0acefd6..ffe0483a0 100644 --- a/src/css/property-descriptors/webkit-text-stroke-width.ts +++ b/src/css/property-descriptors/webkit-text-stroke-width.ts @@ -1,11 +1,12 @@ import {CSSValue, isDimensionToken} from '../syntax/parser'; import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export const webkitTextStrokeWidth: IPropertyValueDescriptor = { name: `-webkit-text-stroke-width`, initialValue: '0', type: PropertyDescriptorParsingType.VALUE, prefix: false, - parse: (token: CSSValue): number => { + parse: (_context: Context, token: CSSValue): number => { if (isDimensionToken(token)) { return token.number; } diff --git a/src/css/property-descriptors/word-break.ts b/src/css/property-descriptors/word-break.ts index e374e8e2d..c03f98067 100644 --- a/src/css/property-descriptors/word-break.ts +++ b/src/css/property-descriptors/word-break.ts @@ -1,4 +1,5 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; export enum WORD_BREAK { NORMAL = 'normal', BREAK_ALL = 'break-all', @@ -10,7 +11,7 @@ export const wordBreak: IPropertyIdentValueDescriptor = { initialValue: 'normal', prefix: false, type: PropertyDescriptorParsingType.IDENT_VALUE, - parse: (wordBreak: string): WORD_BREAK => { + parse: (_context: Context, wordBreak: string): WORD_BREAK => { switch (wordBreak) { case 'break-all': return WORD_BREAK.BREAK_ALL; diff --git a/src/css/property-descriptors/z-index.ts b/src/css/property-descriptors/z-index.ts index ee13b358d..b3667669d 100644 --- a/src/css/property-descriptors/z-index.ts +++ b/src/css/property-descriptors/z-index.ts @@ -1,6 +1,7 @@ import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isNumberToken} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; +import {Context} from '../../core/context'; interface zIndex { order: number; @@ -12,7 +13,7 @@ export const zIndex: IPropertyValueDescriptor = { initialValue: 'auto', prefix: false, type: PropertyDescriptorParsingType.VALUE, - parse: (token: CSSValue): zIndex => { + parse: (_context: Context, token: CSSValue): zIndex => { if (token.type === TokenType.IDENT_TOKEN) { return {auto: true, order: 0}; } diff --git a/src/css/types/__tests__/color-tests.ts b/src/css/types/__tests__/color-tests.ts index 9c8677d1f..2976c3c26 100644 --- a/src/css/types/__tests__/color-tests.ts +++ b/src/css/types/__tests__/color-tests.ts @@ -1,8 +1,9 @@ import {strictEqual} from 'assert'; import {asString, color, isTransparent, pack} from '../color'; import {Parser} from '../../syntax/parser'; +import {Context} from '../../../core/context'; -const parse = (value: string) => color.parse(Parser.parseValue(value)); +const parse = (value: string) => color.parse({} as Context, Parser.parseValue(value)); describe('types', () => { describe('', () => { diff --git a/src/css/types/__tests__/image-tests.ts b/src/css/types/__tests__/image-tests.ts index 9e50c6bcf..dac9eea6a 100644 --- a/src/css/types/__tests__/image-tests.ts +++ b/src/css/types/__tests__/image-tests.ts @@ -5,30 +5,38 @@ import {color, pack} from '../color'; import {FLAG_INTEGER, TokenType} from '../../syntax/tokenizer'; import {deg} from '../angle'; -const parse = (value: string) => image.parse(Parser.parseValue(value)); -const colorParse = (value: string) => color.parse(Parser.parseValue(value)); +const parse = (context: Context, value: string) => image.parse(context, Parser.parseValue(value)); +const colorParse = (context: Context, value: string) => color.parse(context, Parser.parseValue(value)); -jest.mock('../../../core/cache-storage'); jest.mock('../../../core/features'); +jest.mock('../../../core/context'); +import {Context} from '../../../core/context'; + describe('types', () => { + let context: Context; + beforeEach(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + context = new Context({} as any, {} as any); + }); + describe('', () => { describe('parsing', () => { describe('url', () => { it('url(test.jpg)', () => - deepStrictEqual(parse('url(http://example.com/test.jpg)'), { + deepStrictEqual(parse(context, 'url(http://example.com/test.jpg)'), { url: 'http://example.com/test.jpg', type: CSSImageType.URL })); it('url("test.jpg")', () => - deepStrictEqual(parse('url("http://example.com/test.jpg")'), { + deepStrictEqual(parse(context, 'url("http://example.com/test.jpg")'), { url: 'http://example.com/test.jpg', type: CSSImageType.URL })); }); describe('linear-gradient', () => { it('linear-gradient(#f69d3c, #3f87a6)', () => - deepStrictEqual(parse('linear-gradient(#f69d3c, #3f87a6)'), { + deepStrictEqual(parse(context, 'linear-gradient(#f69d3c, #3f87a6)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ @@ -37,60 +45,60 @@ describe('types', () => { ] })); it('linear-gradient(yellow, blue)', () => - deepStrictEqual(parse('linear-gradient(yellow, blue)'), { + deepStrictEqual(parse(context, 'linear-gradient(yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('yellow'), stop: null}, - {color: colorParse('blue'), stop: null} + {color: colorParse(context, 'yellow'), stop: null}, + {color: colorParse(context, 'blue'), stop: null} ] })); it('linear-gradient(to bottom, yellow, blue)', () => - deepStrictEqual(parse('linear-gradient(to bottom, yellow, blue)'), { + deepStrictEqual(parse(context, 'linear-gradient(to bottom, yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('yellow'), stop: null}, - {color: colorParse('blue'), stop: null} + {color: colorParse(context, 'yellow'), stop: null}, + {color: colorParse(context, 'blue'), stop: null} ] })); it('linear-gradient(180deg, yellow, blue)', () => - deepStrictEqual(parse('linear-gradient(180deg, yellow, blue)'), { + deepStrictEqual(parse(context, 'linear-gradient(180deg, yellow, blue)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('yellow'), stop: null}, - {color: colorParse('blue'), stop: null} + {color: colorParse(context, 'yellow'), stop: null}, + {color: colorParse(context, 'blue'), stop: null} ] })); it('linear-gradient(to top, blue, yellow)', () => - deepStrictEqual(parse('linear-gradient(to top, blue, yellow)'), { + deepStrictEqual(parse(context, 'linear-gradient(to top, blue, yellow)'), { angle: 0, type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('blue'), stop: null}, - {color: colorParse('yellow'), stop: null} + {color: colorParse(context, 'blue'), stop: null}, + {color: colorParse(context, 'yellow'), stop: null} ] })); it('linear-gradient(to top right, blue, yellow)', () => - deepStrictEqual(parse('linear-gradient(to top right, blue, yellow)'), { + deepStrictEqual(parse(context, 'linear-gradient(to top right, blue, yellow)'), { angle: [ {type: TokenType.PERCENTAGE_TOKEN, number: 100, flags: 4}, {type: TokenType.NUMBER_TOKEN, number: 0, flags: 4} ], type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('blue'), stop: null}, - {color: colorParse('yellow'), stop: null} + {color: colorParse(context, 'blue'), stop: null}, + {color: colorParse(context, 'yellow'), stop: null} ] })); it('linear-gradient(to bottom, yellow 0%, blue 100%)', () => - deepStrictEqual(parse('linear-gradient(to bottom, yellow 0%, blue 100%)'), { + deepStrictEqual(parse(context, 'linear-gradient(to bottom, yellow 0%, blue 100%)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ { - color: colorParse('yellow'), + color: colorParse(context, 'yellow'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 0, @@ -98,7 +106,7 @@ describe('types', () => { } }, { - color: colorParse('blue'), + color: colorParse(context, 'blue'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 100, @@ -109,7 +117,7 @@ describe('types', () => { })); it('linear-gradient(to top left, lightpink, lightpink 5px, white 5px, white 10px)', () => deepStrictEqual( - parse('linear-gradient(to top left, lightpink, lightpink 5px, white 5px, white 10px)'), + parse(context, 'linear-gradient(to top left, lightpink, lightpink 5px, white 5px, white 10px)'), { angle: [ {type: TokenType.PERCENTAGE_TOKEN, number: 100, flags: 4}, @@ -117,9 +125,9 @@ describe('types', () => { ], type: CSSImageType.LINEAR_GRADIENT, stops: [ - {color: colorParse('lightpink'), stop: null}, + {color: colorParse(context, 'lightpink'), stop: null}, { - color: colorParse('lightpink'), + color: colorParse(context, 'lightpink'), stop: { type: TokenType.DIMENSION_TOKEN, number: 5, @@ -128,7 +136,7 @@ describe('types', () => { } }, { - color: colorParse('white'), + color: colorParse(context, 'white'), stop: { type: TokenType.DIMENSION_TOKEN, number: 5, @@ -137,7 +145,7 @@ describe('types', () => { } }, { - color: colorParse('white'), + color: colorParse(context, 'white'), stop: { type: TokenType.DIMENSION_TOKEN, number: 10, @@ -152,13 +160,16 @@ describe('types', () => { describe('-prefix-linear-gradient', () => { it('-webkit-linear-gradient(left, #cedbe9 0%, #aac5de 17%, #3a8bc2 84%, #26558b 100%)', () => deepStrictEqual( - parse('-webkit-linear-gradient(left, #cedbe9 0%, #aac5de 17%, #3a8bc2 84%, #26558b 100%)'), + parse( + context, + '-webkit-linear-gradient(left, #cedbe9 0%, #aac5de 17%, #3a8bc2 84%, #26558b 100%)' + ), { angle: deg(90), type: CSSImageType.LINEAR_GRADIENT, stops: [ { - color: colorParse('#cedbe9'), + color: colorParse(context, '#cedbe9'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 0, @@ -166,7 +177,7 @@ describe('types', () => { } }, { - color: colorParse('#aac5de'), + color: colorParse(context, '#aac5de'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 17, @@ -174,7 +185,7 @@ describe('types', () => { } }, { - color: colorParse('#3a8bc2'), + color: colorParse(context, '#3a8bc2'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 84, @@ -182,7 +193,7 @@ describe('types', () => { } }, { - color: colorParse('#26558b'), + color: colorParse(context, '#26558b'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 100, @@ -193,12 +204,12 @@ describe('types', () => { } )); it('-moz-linear-gradient(top, #cce5f4 0%, #00263c 100%)', () => - deepStrictEqual(parse('-moz-linear-gradient(top, #cce5f4 0%, #00263c 100%)'), { + deepStrictEqual(parse(context, '-moz-linear-gradient(top, #cce5f4 0%, #00263c 100%)'), { angle: deg(180), type: CSSImageType.LINEAR_GRADIENT, stops: [ { - color: colorParse('#cce5f4'), + color: colorParse(context, '#cce5f4'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 0, @@ -206,7 +217,7 @@ describe('types', () => { } }, { - color: colorParse('#00263c'), + color: colorParse(context, '#00263c'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 100, diff --git a/src/css/types/angle.ts b/src/css/types/angle.ts index ec66b7ef3..676f8e00f 100644 --- a/src/css/types/angle.ts +++ b/src/css/types/angle.ts @@ -3,6 +3,7 @@ import {TokenType} from '../syntax/tokenizer'; import {ITypeDescriptor} from '../ITypeDescriptor'; import {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage'; import {GradientCorner} from './image'; +import {Context} from '../../core/context'; const DEG = 'deg'; const GRAD = 'grad'; @@ -11,7 +12,7 @@ const TURN = 'turn'; export const angle: ITypeDescriptor = { name: 'angle', - parse: (value: CSSValue): number => { + parse: (_context: Context, value: CSSValue): number => { if (value.type === TokenType.DIMENSION_TOKEN) { switch (value.unit) { case DEG: diff --git a/src/css/types/color.ts b/src/css/types/color.ts index b0e1afa83..29af9ce02 100644 --- a/src/css/types/color.ts +++ b/src/css/types/color.ts @@ -1,19 +1,20 @@ -import {CSSValue, nonFunctionArgSeparator} from '../syntax/parser'; +import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser'; import {TokenType} from '../syntax/tokenizer'; import {ITypeDescriptor} from '../ITypeDescriptor'; import {angle, deg} from './angle'; import {getAbsoluteValue, isLengthPercentage} from './length-percentage'; +import {Context} from '../../core/context'; export type Color = number; export const color: ITypeDescriptor = { name: 'color', - parse: (value: CSSValue): Color => { + parse: (context: Context, value: CSSValue): Color => { if (value.type === TokenType.FUNCTION) { const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name]; if (typeof colorFunction === 'undefined') { throw new Error(`Attempting to parse an unsupported color function "${value.name}"`); } - return colorFunction(value.values); + return colorFunction(context, value.values); } if (value.type === TokenType.HASH_TOKEN) { @@ -85,7 +86,7 @@ const getTokenColorValue = (token: CSSValue, i: number): number => { return 0; }; -const rgb = (args: CSSValue[]): number => { +const rgb = (_context: Context, args: CSSValue[]): number => { const tokens = args.filter(nonFunctionArgSeparator); if (tokens.length === 3) { @@ -120,11 +121,11 @@ function hue2rgb(t1: number, t2: number, hue: number): number { } } -const hsl = (args: CSSValue[]): number => { +const hsl = (context: Context, args: CSSValue[]): number => { const tokens = args.filter(nonFunctionArgSeparator); const [hue, saturation, lightness, alpha] = tokens; - const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2); + const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2); const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0; const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0; const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1; @@ -143,7 +144,7 @@ const hsl = (args: CSSValue[]): number => { }; const SUPPORTED_COLOR_FUNCTIONS: { - [key: string]: (args: CSSValue[]) => number; + [key: string]: (context: Context, args: CSSValue[]) => number; } = { hsl: hsl, hsla: hsl, @@ -151,6 +152,9 @@ const SUPPORTED_COLOR_FUNCTIONS: { rgba: rgb }; +export const parseColor = (context: Context, value: string): Color => + color.parse(context, Parser.create(value).parseComponentValue()); + export const COLORS: {[key: string]: Color} = { ALICEBLUE: 0xf0f8ffff, ANTIQUEWHITE: 0xfaebd7ff, diff --git a/src/css/types/functions/-prefix-linear-gradient.ts b/src/css/types/functions/-prefix-linear-gradient.ts index 8df819964..147dd9d62 100644 --- a/src/css/types/functions/-prefix-linear-gradient.ts +++ b/src/css/types/functions/-prefix-linear-gradient.ts @@ -3,8 +3,9 @@ import {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradien import {TokenType} from '../../syntax/tokenizer'; import {isAngle, angle as angleType, parseNamedSide, deg} from '../angle'; import {parseColorStop} from './gradient'; +import {Context} from '../../../core/context'; -export const prefixLinearGradient = (tokens: CSSValue[]): CSSLinearGradientImage => { +export const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => { let angle: number | GradientCorner = deg(180); const stops: UnprocessedGradientColorStop[] = []; @@ -18,11 +19,11 @@ export const prefixLinearGradient = (tokens: CSSValue[]): CSSLinearGradientImage angle = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { - angle = (angleType.parse(firstToken) + deg(270)) % deg(360); + angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360); return; } } - const colorStop = parseColorStop(arg); + const colorStop = parseColorStop(context, arg); stops.push(colorStop); }); diff --git a/src/css/types/functions/-prefix-radial-gradient.ts b/src/css/types/functions/-prefix-radial-gradient.ts index 7bb862246..e4a391bba 100644 --- a/src/css/types/functions/-prefix-radial-gradient.ts +++ b/src/css/types/functions/-prefix-radial-gradient.ts @@ -20,8 +20,9 @@ import { FARTHEST_CORNER, FARTHEST_SIDE } from './radial-gradient'; +import {Context} from '../../../core/context'; -export const prefixRadialGradient = (tokens: CSSValue[]): CSSRadialGradientImage => { +export const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => { let shape: CSSRadialShape = CSSRadialShape.CIRCLE; let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER; const stops: UnprocessedGradientColorStop[] = []; @@ -90,7 +91,7 @@ export const prefixRadialGradient = (tokens: CSSValue[]): CSSRadialGradientImage } if (isColorStop) { - const colorStop = parseColorStop(arg); + const colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); diff --git a/src/css/types/functions/-webkit-gradient.ts b/src/css/types/functions/-webkit-gradient.ts index e9f6f477f..9a687d6df 100644 --- a/src/css/types/functions/-webkit-gradient.ts +++ b/src/css/types/functions/-webkit-gradient.ts @@ -12,8 +12,12 @@ import {deg} from '../angle'; import {TokenType} from '../../syntax/tokenizer'; import {color as colorType} from '../color'; import {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage'; +import {Context} from '../../../core/context'; -export const webkitGradient = (tokens: CSSValue[]): CSSLinearGradientImage | CSSRadialGradientImage => { +export const webkitGradient = ( + context: Context, + tokens: CSSValue[] +): CSSLinearGradientImage | CSSRadialGradientImage => { const angle = deg(180); const stops: UnprocessedGradientColorStop[] = []; let type = CSSImageType.LINEAR_GRADIENT; @@ -34,15 +38,15 @@ export const webkitGradient = (tokens: CSSValue[]): CSSLinearGradientImage | CSS if (firstToken.type === TokenType.FUNCTION) { if (firstToken.name === 'from') { - const color = colorType.parse(firstToken.values[0]); + const color = colorType.parse(context, firstToken.values[0]); stops.push({stop: ZERO_LENGTH, color}); } else if (firstToken.name === 'to') { - const color = colorType.parse(firstToken.values[0]); + const color = colorType.parse(context, firstToken.values[0]); stops.push({stop: HUNDRED_PERCENT, color}); } else if (firstToken.name === 'color-stop') { const values = firstToken.values.filter(nonFunctionArgSeparator); if (values.length === 2) { - const color = colorType.parse(values[1]); + const color = colorType.parse(context, values[1]); const stop = values[0]; if (isNumberToken(stop)) { stops.push({ diff --git a/src/css/types/functions/__tests__/radial-gradient.ts b/src/css/types/functions/__tests__/radial-gradient.ts index 508598ef8..357841618 100644 --- a/src/css/types/functions/__tests__/radial-gradient.ts +++ b/src/css/types/functions/__tests__/radial-gradient.ts @@ -5,9 +5,10 @@ import {CSSImageType, CSSRadialExtent, CSSRadialShape} from '../../image'; import {color} from '../../color'; import {TokenType} from '../../../syntax/tokenizer'; import {FIFTY_PERCENT, HUNDRED_PERCENT} from '../../length-percentage'; +import {Context} from '../../../../core/context'; -const parse = (value: string) => radialGradient((Parser.parseValues(value)[0] as CSSFunction).values); -const colorParse = (value: string) => color.parse(Parser.parseValue(value)); +const parse = (value: string) => radialGradient({} as Context, (Parser.parseValues(value)[0] as CSSFunction).values); +const colorParse = (value: string) => color.parse({} as Context, Parser.parseValue(value)); describe('functions', () => { describe('radial-gradient', () => { diff --git a/src/css/types/functions/gradient.ts b/src/css/types/functions/gradient.ts index 0463b8b56..c6b894fd3 100644 --- a/src/css/types/functions/gradient.ts +++ b/src/css/types/functions/gradient.ts @@ -9,9 +9,10 @@ import { } from '../image'; import {color as colorType} from '../color'; import {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage'; +import {Context} from '../../../core/context'; -export const parseColorStop = (args: CSSValue[]): UnprocessedGradientColorStop => { - const color = colorType.parse(args[0]); +export const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => { + const color = colorType.parse(context, args[0]); const stop = args[1]; return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null}; }; diff --git a/src/css/types/functions/linear-gradient.ts b/src/css/types/functions/linear-gradient.ts index 27e65cee1..2d13844f2 100644 --- a/src/css/types/functions/linear-gradient.ts +++ b/src/css/types/functions/linear-gradient.ts @@ -3,8 +3,9 @@ import {TokenType} from '../../syntax/tokenizer'; import {isAngle, angle as angleType, parseNamedSide, deg} from '../angle'; import {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image'; import {parseColorStop} from './gradient'; +import {Context} from '../../../core/context'; -export const linearGradient = (tokens: CSSValue[]): CSSLinearGradientImage => { +export const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => { let angle: number | GradientCorner = deg(180); const stops: UnprocessedGradientColorStop[] = []; @@ -15,11 +16,11 @@ export const linearGradient = (tokens: CSSValue[]): CSSLinearGradientImage => { angle = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { - angle = angleType.parse(firstToken); + angle = angleType.parse(context, firstToken); return; } } - const colorStop = parseColorStop(arg); + const colorStop = parseColorStop(context, arg); stops.push(colorStop); }); diff --git a/src/css/types/functions/radial-gradient.ts b/src/css/types/functions/radial-gradient.ts index 7fe99e209..f88bbdcbf 100644 --- a/src/css/types/functions/radial-gradient.ts +++ b/src/css/types/functions/radial-gradient.ts @@ -10,6 +10,7 @@ import { import {parseColorStop} from './gradient'; import {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage'; import {isLength} from '../length'; +import {Context} from '../../../core/context'; export const CLOSEST_SIDE = 'closest-side'; export const FARTHEST_SIDE = 'farthest-side'; export const CLOSEST_CORNER = 'closest-corner'; @@ -19,7 +20,7 @@ export const ELLIPSE = 'ellipse'; export const COVER = 'cover'; export const CONTAIN = 'contain'; -export const radialGradient = (tokens: CSSValue[]): CSSRadialGradientImage => { +export const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => { let shape: CSSRadialShape = CSSRadialShape.CIRCLE; let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER; const stops: UnprocessedGradientColorStop[] = []; @@ -85,7 +86,7 @@ export const radialGradient = (tokens: CSSValue[]): CSSRadialGradientImage => { } if (isColorStop) { - const colorStop = parseColorStop(arg); + const colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); diff --git a/src/css/types/image.ts b/src/css/types/image.ts index 17be3febe..7e4ae8d75 100644 --- a/src/css/types/image.ts +++ b/src/css/types/image.ts @@ -4,11 +4,11 @@ import {Color} from './color'; import {linearGradient} from './functions/linear-gradient'; import {prefixLinearGradient} from './functions/-prefix-linear-gradient'; import {ITypeDescriptor} from '../ITypeDescriptor'; -import {CacheStorage} from '../../core/cache-storage'; import {LengthPercentage} from './length-percentage'; import {webkitGradient} from './functions/-webkit-gradient'; import {radialGradient} from './functions/radial-gradient'; import {prefixRadialGradient} from './functions/-prefix-radial-gradient'; +import {Context} from '../../core/context'; export enum CSSImageType { URL, @@ -79,10 +79,10 @@ export interface CSSRadialGradientImage extends ICSSGradientImage { export const image: ITypeDescriptor = { name: 'image', - parse: (value: CSSValue): ICSSImage => { + parse: (context: Context, value: CSSValue): ICSSImage => { if (value.type === TokenType.URL_TOKEN) { const image: CSSURLImage = {url: value.value, type: CSSImageType.URL}; - CacheStorage.getInstance().addImage(value.value); + context.cache.addImage(value.value); return image; } @@ -91,7 +91,7 @@ export const image: ITypeDescriptor = { if (typeof imageFunction === 'undefined') { throw new Error(`Attempting to parse an unsupported image function "${value.name}"`); } - return imageFunction(value.values); + return imageFunction(context, value.values); } throw new Error(`Unsupported image type`); @@ -102,7 +102,7 @@ export function isSupportedImage(value: CSSValue): boolean { return value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]; } -const SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = { +const SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = { 'linear-gradient': linearGradient, '-moz-linear-gradient': prefixLinearGradient, '-ms-linear-gradient': prefixLinearGradient, diff --git a/src/dom/__mocks__/document-cloner.ts b/src/dom/__mocks__/document-cloner.ts index 0311b06a0..3fa53f6b5 100644 --- a/src/dom/__mocks__/document-cloner.ts +++ b/src/dom/__mocks__/document-cloner.ts @@ -2,7 +2,14 @@ export class DocumentCloner { clonedReferenceElement?: HTMLElement; constructor() { - this.clonedReferenceElement = {} as HTMLElement; + this.clonedReferenceElement = { + ownerDocument: { + defaultView: { + pageXOffset: 12, + pageYOffset: 34 + } + } + } as HTMLElement; } toIFrame(): Promise { diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 4e644cef6..cacfc0279 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -13,20 +13,26 @@ import { isTextareaElement, isTextNode } from './node-parser'; -import {Logger} from '../core/logger'; import {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser'; import {TokenType} from '../css/syntax/tokenizer'; import {CounterState, createCounterText} from '../css/types/functions/counter'; import {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type'; import {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index'; import {getQuote} from '../css/property-descriptors/quotes'; +import {Context} from '../core/context'; export interface CloneOptions { - id: string; ignoreElements?: (element: Element) => boolean; onclone?: (document: Document, element: HTMLElement) => void; } +export interface WindowOptions { + scrollX: number; + scrollY: number; + windowWidth: number; + windowHeight: number; +} + export type CloneConfigurations = CloneOptions & { inlineImages: boolean; copyStyles: boolean; @@ -36,15 +42,17 @@ const IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'; export class DocumentCloner { private readonly scrolledElements: [Element, number, number][]; - private readonly options: CloneConfigurations; private readonly referenceElement: HTMLElement; clonedReferenceElement?: HTMLElement; private readonly documentElement: HTMLElement; private readonly counters: CounterState; private quoteDepth: number; - constructor(element: HTMLElement, options: CloneConfigurations) { - this.options = options; + constructor( + private readonly context: Context, + element: HTMLElement, + private readonly options: CloneConfigurations + ) { this.scrolledElements = []; this.referenceElement = element; this.counters = new CounterState(); @@ -81,9 +89,13 @@ export class DocumentCloner { /(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left) ) { - documentClone.documentElement.style.top = -windowSize.top + 'px'; - documentClone.documentElement.style.left = -windowSize.left + 'px'; - documentClone.documentElement.style.position = 'absolute'; + this.context.logger.warn('Unable to restore scroll position for cloned document'); + this.context.windowBounds = this.context.windowBounds.add( + cloneWindow.scrollX - windowSize.left, + cloneWindow.scrollY - windowSize.top, + 0, + 0 + ); } } @@ -162,7 +174,7 @@ export class DocumentCloner { } } catch (e) { // accessing node.sheet.cssRules throws a DOMException - Logger.getInstance(this.options.id).error('Unable to access cssRules property', e); + this.context.logger.error('Unable to access cssRules property', e); if (e.name !== 'SecurityError') { throw e; } @@ -177,7 +189,7 @@ export class DocumentCloner { img.src = canvas.toDataURL(); return img; } catch (e) { - Logger.getInstance(this.options.id).info(`Unable to clone canvas contents, canvas is tainted`); + this.context.logger.info(`Unable to clone canvas contents, canvas is tainted`); } } @@ -226,7 +238,7 @@ export class DocumentCloner { createPseudoHideStyles(clone); } - const counters = this.counters.parse(new CSSParsedCounterDeclaration(style)); + const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE); for (let child = node.firstChild; child; child = child.nextSibling) { @@ -290,8 +302,8 @@ export class DocumentCloner { return; } - this.counters.parse(new CSSParsedCounterDeclaration(style)); - const declaration = new CSSParsedPseudoDeclaration(style); + this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); + const declaration = new CSSParsedPseudoDeclaration(this.context, style); const anonymousReplacedElement = document.createElement('html2canvaspseudoelement'); copyCSSStyles(style, anonymousReplacedElement); @@ -318,7 +330,7 @@ export class DocumentCloner { const counterState = this.counters.getCounterValue(counter.value); const counterType = counterStyle && isIdentToken(counterStyle) - ? listStyleType.parse(counterStyle.value) + ? listStyleType.parse(this.context, counterStyle.value) : LIST_STYLE_TYPE.DECIMAL; anonymousReplacedElement.appendChild( @@ -331,7 +343,7 @@ export class DocumentCloner { const counterStates = this.counters.getCounterValues(counter.value); const counterType = counterStyle && isIdentToken(counterStyle) - ? listStyleType.parse(counterStyle.value) + ? listStyleType.parse(this.context, counterStyle.value) : LIST_STYLE_TYPE.DECIMAL; const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : ''; const text = counterStates diff --git a/src/dom/element-container.ts b/src/dom/element-container.ts index 3482e967d..9928cc77d 100644 --- a/src/dom/element-container.ts +++ b/src/dom/element-container.ts @@ -2,6 +2,7 @@ import {CSSParsedDeclaration} from '../css/index'; import {TextContainer} from './text-container'; import {Bounds, parseBounds} from '../css/layout/bounds'; import {isHTMLElementNode} from './node-parser'; +import {Context} from '../core/context'; export const enum FLAGS { CREATES_STACKING_CONTEXT = 1 << 1, @@ -16,15 +17,15 @@ export class ElementContainer { bounds: Bounds; flags: number; - constructor(element: Element) { - this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null)); + constructor(protected readonly context: Context, element: Element) { + this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); this.textNodes = []; this.elements = []; if (this.styles.transform !== null && isHTMLElementNode(element)) { // getBoundingClientRect takes transforms into account element.style.transform = 'none'; } - this.bounds = parseBounds(element); + this.bounds = parseBounds(this.context, element); this.flags = 0; } } diff --git a/src/dom/elements/li-element-container.ts b/src/dom/elements/li-element-container.ts index 5a427574e..f65f088c3 100644 --- a/src/dom/elements/li-element-container.ts +++ b/src/dom/elements/li-element-container.ts @@ -1,9 +1,10 @@ import {ElementContainer} from '../element-container'; +import {Context} from '../../core/context'; export class LIElementContainer extends ElementContainer { readonly value: number; - constructor(element: HTMLLIElement) { - super(element); + constructor(context: Context, element: HTMLLIElement) { + super(context, element); this.value = element.value; } } diff --git a/src/dom/elements/ol-element-container.ts b/src/dom/elements/ol-element-container.ts index 65f3d9e75..47ebcdc64 100644 --- a/src/dom/elements/ol-element-container.ts +++ b/src/dom/elements/ol-element-container.ts @@ -1,10 +1,11 @@ import {ElementContainer} from '../element-container'; +import {Context} from '../../core/context'; export class OLElementContainer extends ElementContainer { readonly start: number; readonly reversed: boolean; - constructor(element: HTMLOListElement) { - super(element); + constructor(context: Context, element: HTMLOListElement) { + super(context, element); this.start = element.start; this.reversed = typeof element.reversed === 'boolean' && element.reversed === true; } diff --git a/src/dom/elements/select-element-container.ts b/src/dom/elements/select-element-container.ts index 84147a6ab..147d1454b 100644 --- a/src/dom/elements/select-element-container.ts +++ b/src/dom/elements/select-element-container.ts @@ -1,8 +1,9 @@ import {ElementContainer} from '../element-container'; +import {Context} from '../../core/context'; export class SelectElementContainer extends ElementContainer { readonly value: string; - constructor(element: HTMLSelectElement) { - super(element); + constructor(context: Context, element: HTMLSelectElement) { + super(context, element); const option = element.options[element.selectedIndex || 0]; this.value = option ? option.text || '' : ''; } diff --git a/src/dom/elements/textarea-element-container.ts b/src/dom/elements/textarea-element-container.ts index e7c56df4b..5b7b42196 100644 --- a/src/dom/elements/textarea-element-container.ts +++ b/src/dom/elements/textarea-element-container.ts @@ -1,8 +1,9 @@ import {ElementContainer} from '../element-container'; +import {Context} from '../../core/context'; export class TextareaElementContainer extends ElementContainer { readonly value: string; - constructor(element: HTMLTextAreaElement) { - super(element); + constructor(context: Context, element: HTMLTextAreaElement) { + super(context, element); this.value = element.value; } } diff --git a/src/dom/node-parser.ts b/src/dom/node-parser.ts index f00c02b5f..260974e2d 100644 --- a/src/dom/node-parser.ts +++ b/src/dom/node-parser.ts @@ -1,4 +1,4 @@ -import {CSSParsedDeclaration} from '../css/index'; +import {CSSParsedDeclaration} from '../css'; import {ElementContainer, FLAGS} from './element-container'; import {TextContainer} from './text-container'; import {ImageElementContainer} from './replaced-elements/image-element-container'; @@ -10,20 +10,21 @@ import {InputElementContainer} from './replaced-elements/input-element-container import {SelectElementContainer} from './elements/select-element-container'; import {TextareaElementContainer} from './elements/textarea-element-container'; import {IFrameElementContainer} from './replaced-elements/iframe-element-container'; +import {Context} from '../core/context'; const LIST_OWNERS = ['OL', 'UL', 'MENU']; -const parseNodeTree = (node: Node, parent: ElementContainer, root: ElementContainer) => { +const parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => { for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; if (isTextNode(childNode) && childNode.data.trim().length > 0) { - parent.textNodes.push(new TextContainer(childNode, parent.styles)); + parent.textNodes.push(new TextContainer(context, childNode, parent.styles)); } else if (isElementNode(childNode)) { if (isSlotElement(childNode) && childNode.assignedNodes) { - childNode.assignedNodes().forEach((childNode) => parseNodeTree(childNode, parent, root)); + childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root)); } else { - const container = createContainer(childNode); + const container = createContainer(context, childNode); if (container.styles.isVisible()) { if (createsRealStackingContext(childNode, container, root)) { container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT; @@ -38,13 +39,13 @@ const parseNodeTree = (node: Node, parent: ElementContainer, root: ElementContai parent.elements.push(container); childNode.slot; if (childNode.shadowRoot) { - parseNodeTree(childNode.shadowRoot, container, root); + parseNodeTree(context, childNode.shadowRoot, container, root); } else if ( !isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode) ) { - parseNodeTree(childNode, container, root); + parseNodeTree(context, childNode, container, root); } } } @@ -52,50 +53,50 @@ const parseNodeTree = (node: Node, parent: ElementContainer, root: ElementContai } }; -const createContainer = (element: Element): ElementContainer => { +const createContainer = (context: Context, element: Element): ElementContainer => { if (isImageElement(element)) { - return new ImageElementContainer(element); + return new ImageElementContainer(context, element); } if (isCanvasElement(element)) { - return new CanvasElementContainer(element); + return new CanvasElementContainer(context, element); } if (isSVGElement(element)) { - return new SVGElementContainer(element); + return new SVGElementContainer(context, element); } if (isLIElement(element)) { - return new LIElementContainer(element); + return new LIElementContainer(context, element); } if (isOLElement(element)) { - return new OLElementContainer(element); + return new OLElementContainer(context, element); } if (isInputElement(element)) { - return new InputElementContainer(element); + return new InputElementContainer(context, element); } if (isSelectElement(element)) { - return new SelectElementContainer(element); + return new SelectElementContainer(context, element); } if (isTextareaElement(element)) { - return new TextareaElementContainer(element); + return new TextareaElementContainer(context, element); } if (isIFrameElement(element)) { - return new IFrameElementContainer(element); + return new IFrameElementContainer(context, element); } - return new ElementContainer(element); + return new ElementContainer(context, element); }; -export const parseTree = (element: HTMLElement): ElementContainer => { - const container = createContainer(element); +export const parseTree = (context: Context, element: HTMLElement): ElementContainer => { + const container = createContainer(context, element); container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT; - parseNodeTree(element, container, container); + parseNodeTree(context, element, container, container); return container; }; diff --git a/src/dom/replaced-elements/canvas-element-container.ts b/src/dom/replaced-elements/canvas-element-container.ts index 84747d12f..0364ca7e4 100644 --- a/src/dom/replaced-elements/canvas-element-container.ts +++ b/src/dom/replaced-elements/canvas-element-container.ts @@ -1,12 +1,13 @@ import {ElementContainer} from '../element-container'; +import {Context} from '../../core/context'; export class CanvasElementContainer extends ElementContainer { canvas: HTMLCanvasElement; intrinsicWidth: number; intrinsicHeight: number; - constructor(canvas: HTMLCanvasElement) { - super(canvas); + constructor(context: Context, canvas: HTMLCanvasElement) { + super(context, canvas); this.canvas = canvas; this.intrinsicWidth = canvas.width; this.intrinsicHeight = canvas.height; diff --git a/src/dom/replaced-elements/iframe-element-container.ts b/src/dom/replaced-elements/iframe-element-container.ts index 54ba1e9e4..1ad8d852b 100644 --- a/src/dom/replaced-elements/iframe-element-container.ts +++ b/src/dom/replaced-elements/iframe-element-container.ts @@ -1,9 +1,7 @@ import {ElementContainer} from '../element-container'; import {parseTree} from '../node-parser'; -import {Color, color, COLORS, isTransparent} from '../../css/types/color'; -import {Parser} from '../../css/syntax/parser'; - -const parseColor = (value: string): Color => color.parse(Parser.create(value).parseComponentValue()); +import {Color, parseColor, COLORS, isTransparent} from '../../css/types/color'; +import {Context} from '../../core/context'; export class IFrameElementContainer extends ElementContainer { src: string; @@ -12,8 +10,8 @@ export class IFrameElementContainer extends ElementContainer { tree?: ElementContainer; backgroundColor: Color; - constructor(iframe: HTMLIFrameElement) { - super(iframe); + constructor(context: Context, iframe: HTMLIFrameElement) { + super(context, iframe); this.src = iframe.src; this.width = parseInt(iframe.width, 10) || 0; this.height = parseInt(iframe.height, 10) || 0; @@ -24,16 +22,20 @@ export class IFrameElementContainer extends ElementContainer { iframe.contentWindow.document && iframe.contentWindow.document.documentElement ) { - this.tree = parseTree(iframe.contentWindow.document.documentElement); + this.tree = parseTree(context, iframe.contentWindow.document.documentElement); // http://www.w3.org/TR/css3-background/#special-backgrounds const documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor( + context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string ) : COLORS.TRANSPARENT; const bodyBackgroundColor = iframe.contentWindow.document.body - ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string) + ? parseColor( + context, + getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string + ) : COLORS.TRANSPARENT; this.backgroundColor = isTransparent(documentBackgroundColor) diff --git a/src/dom/replaced-elements/image-element-container.ts b/src/dom/replaced-elements/image-element-container.ts index ca74cf7d2..51ef1b123 100644 --- a/src/dom/replaced-elements/image-element-container.ts +++ b/src/dom/replaced-elements/image-element-container.ts @@ -1,16 +1,16 @@ import {ElementContainer} from '../element-container'; -import {CacheStorage} from '../../core/cache-storage'; +import {Context} from '../../core/context'; export class ImageElementContainer extends ElementContainer { src: string; intrinsicWidth: number; intrinsicHeight: number; - constructor(img: HTMLImageElement) { - super(img); + constructor(context: Context, img: HTMLImageElement) { + super(context, img); this.src = img.currentSrc || img.src; this.intrinsicWidth = img.naturalWidth; this.intrinsicHeight = img.naturalHeight; - CacheStorage.getInstance().addImage(this.src); + this.context.cache.addImage(this.src); } } diff --git a/src/dom/replaced-elements/input-element-container.ts b/src/dom/replaced-elements/input-element-container.ts index c06e45413..1a2c78a38 100644 --- a/src/dom/replaced-elements/input-element-container.ts +++ b/src/dom/replaced-elements/input-element-container.ts @@ -5,6 +5,7 @@ import {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origi import {TokenType} from '../../css/syntax/tokenizer'; import {LengthPercentageTuple} from '../../css/types/length-percentage'; import {Bounds} from '../../css/layout/bounds'; +import {Context} from '../../core/context'; const CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [ { @@ -48,8 +49,8 @@ export class InputElementContainer extends ElementContainer { readonly checked: boolean; readonly value: string; - constructor(input: HTMLInputElement) { - super(input); + constructor(context: Context, input: HTMLInputElement) { + super(context, input); this.type = input.type.toLowerCase(); this.checked = input.checked; this.value = getInputValue(input); diff --git a/src/dom/replaced-elements/svg-element-container.ts b/src/dom/replaced-elements/svg-element-container.ts index 62511bed7..ae9c5a4c4 100644 --- a/src/dom/replaced-elements/svg-element-container.ts +++ b/src/dom/replaced-elements/svg-element-container.ts @@ -1,16 +1,16 @@ import {ElementContainer} from '../element-container'; -import {CacheStorage} from '../../core/cache-storage'; import {parseBounds} from '../../css/layout/bounds'; +import {Context} from '../../core/context'; export class SVGElementContainer extends ElementContainer { svg: string; intrinsicWidth: number; intrinsicHeight: number; - constructor(img: SVGSVGElement) { - super(img); + constructor(context: Context, img: SVGSVGElement) { + super(context, img); const s = new XMLSerializer(); - const bounds = parseBounds(img); + const bounds = parseBounds(context, img); img.setAttribute('width', `${bounds.width}px`); img.setAttribute('height', `${bounds.height}px`); @@ -18,6 +18,6 @@ export class SVGElementContainer extends ElementContainer { this.intrinsicWidth = img.width.baseVal.value; this.intrinsicHeight = img.height.baseVal.value; - CacheStorage.getInstance().addImage(this.svg); + this.context.cache.addImage(this.svg); } } diff --git a/src/dom/text-container.ts b/src/dom/text-container.ts index 9eb2c525c..3923bb274 100644 --- a/src/dom/text-container.ts +++ b/src/dom/text-container.ts @@ -1,14 +1,15 @@ import {CSSParsedDeclaration} from '../css/index'; import {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform'; import {parseTextBounds, TextBounds} from '../css/layout/text'; +import {Context} from '../core/context'; export class TextContainer { text: string; textBounds: TextBounds[]; - constructor(node: Text, styles: CSSParsedDeclaration) { + constructor(context: Context, node: Text, styles: CSSParsedDeclaration) { this.text = transform(node.data, styles.textTransform); - this.textBounds = parseTextBounds(this.text, styles, node); + this.textBounds = parseTextBounds(context, this.text, styles, node); } } diff --git a/src/index.ts b/src/index.ts index c6eb7b0cc..a56a28499 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,24 +1,21 @@ import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds'; -import {color, Color, COLORS, isTransparent} from './css/types/color'; -import {Parser} from './css/syntax/parser'; -import {CloneOptions, DocumentCloner} from './dom/document-cloner'; +import {COLORS, isTransparent, parseColor} from './css/types/color'; +import {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner'; import {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser'; -import {Logger} from './core/logger'; -import {CacheStorage, ResourceOptions} from './core/cache-storage'; -import {CanvasRenderer, RenderOptions} from './render/canvas/canvas-renderer'; +import {CacheStorage} from './core/cache-storage'; +import {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer'; import {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer'; +import {Context, ContextOptions} from './core/context'; export type Options = CloneOptions & + WindowOptions & RenderOptions & - ResourceOptions & { + ContextOptions & { backgroundColor: string | null; foreignObjectRendering: boolean; - logging: boolean; removeContainer?: boolean; }; -const parseColor = (value: string): Color => color.parse(Parser.create(value).parseComponentValue()); - const html2canvas = (element: HTMLElement, options: Partial = {}): Promise => { return renderElement(element, options); }; @@ -29,8 +26,6 @@ if (typeof window !== 'undefined') { CacheStorage.setContext(window); } -let instanceCount = 1; - const renderElement = async (element: HTMLElement, opts: Partial): Promise => { if (!element || typeof element !== 'object') { return Promise.reject('Invalid element provided as first argument'); @@ -47,51 +42,51 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom throw new Error(`Document is not attached to a Window`); } - const instanceName = `#${instanceCount++}`; - - const {width, height, left, top} = - isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element); + const resourceOptions = { + allowTaint: opts.allowTaint ?? false, + imageTimeout: opts.imageTimeout ?? 15000, + proxy: opts.proxy, + useCORS: opts.useCORS ?? false + }; - const defaultResourceOptions = { - allowTaint: false, - imageTimeout: 15000, - proxy: undefined, - useCORS: false + const contextOptions = { + logging: opts.logging ?? true, + cache: opts.cache, + ...resourceOptions }; - const resourceOptions: ResourceOptions = {...defaultResourceOptions, ...opts}; - - const defaultOptions = { - backgroundColor: '#ffffff', - cache: opts.cache ? opts.cache : CacheStorage.create(instanceName, resourceOptions), - logging: true, - removeContainer: true, - foreignObjectRendering: false, - scale: defaultView.devicePixelRatio || 1, - windowWidth: defaultView.innerWidth, - windowHeight: defaultView.innerHeight, - scrollX: defaultView.pageXOffset, - scrollY: defaultView.pageYOffset, - x: left, - y: top, - width: Math.ceil(width), - height: Math.ceil(height), - id: instanceName + const windowOptions = { + windowWidth: opts.windowWidth ?? defaultView.innerWidth, + windowHeight: opts.windowHeight ?? defaultView.innerHeight, + scrollX: opts.scrollX ?? defaultView.pageXOffset, + scrollY: opts.scrollY ?? defaultView.pageYOffset }; - const options: Options = {...defaultOptions, ...resourceOptions, ...opts}; + const windowBounds = new Bounds( + windowOptions.scrollX, + windowOptions.scrollY, + windowOptions.windowWidth, + windowOptions.windowHeight + ); + + const context = new Context(contextOptions, windowBounds); + + const foreignObjectRendering = opts.foreignObjectRendering ?? false; - const windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight); + const cloneOptions: CloneConfigurations = { + onclone: opts.onclone, + ignoreElements: opts.ignoreElements, + inlineImages: foreignObjectRendering, + copyStyles: foreignObjectRendering + }; + + context.logger.debug( + `Starting document clone with size ${windowBounds.width}x${ + windowBounds.height + } scrolled to ${-windowBounds.left},${-windowBounds.top}` + ); - Logger.create({id: instanceName, enabled: options.logging}); - Logger.getInstance(instanceName).debug(`Starting document clone`); - const documentCloner = new DocumentCloner(element, { - id: instanceName, - onclone: options.onclone, - ignoreElements: options.ignoreElements, - inlineImages: options.foreignObjectRendering, - copyStyles: options.foreignObjectRendering - }); + const documentCloner = new DocumentCloner(context, element, cloneOptions); const clonedElement = documentCloner.clonedReferenceElement; if (!clonedElement) { return Promise.reject(`Unable to find element in cloned iframe`); @@ -99,75 +94,81 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom const container = await documentCloner.toIFrame(ownerDocument, windowBounds); - // http://www.w3.org/TR/css3-background/#special-backgrounds - const documentBackgroundColor = ownerDocument.documentElement - ? parseColor(getComputedStyle(ownerDocument.documentElement).backgroundColor as string) - : COLORS.TRANSPARENT; - const bodyBackgroundColor = ownerDocument.body - ? parseColor(getComputedStyle(ownerDocument.body).backgroundColor as string) - : COLORS.TRANSPARENT; + const {width, height, left, top} = + isBodyElement(clonedElement) || isHTMLElement(clonedElement) + ? parseDocumentSize(clonedElement.ownerDocument) + : parseBounds(context, clonedElement); - const bgColor = opts.backgroundColor; - const defaultBackgroundColor = - typeof bgColor === 'string' ? parseColor(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff; - - const backgroundColor = - element === ownerDocument.documentElement - ? isTransparent(documentBackgroundColor) - ? isTransparent(bodyBackgroundColor) - ? defaultBackgroundColor - : bodyBackgroundColor - : documentBackgroundColor - : defaultBackgroundColor; - - const renderOptions = { - id: instanceName, - cache: options.cache, - canvas: options.canvas, + const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor); + + const renderOptions: RenderConfigurations = { + canvas: opts.canvas, backgroundColor, - scale: options.scale, - x: options.x, - y: options.y, - scrollX: options.scrollX, - scrollY: options.scrollY, - width: options.width, - height: options.height, - windowWidth: options.windowWidth, - windowHeight: options.windowHeight + scale: opts.scale ?? defaultView.devicePixelRatio ?? 1, + x: (opts.x ?? 0) + left, + y: (opts.y ?? 0) + top, + width: opts.width ?? Math.ceil(width), + height: opts.height ?? Math.ceil(height) }; let canvas; - if (options.foreignObjectRendering) { - Logger.getInstance(instanceName).debug(`Document cloned, using foreign object rendering`); - const renderer = new ForeignObjectRenderer(renderOptions); + if (foreignObjectRendering) { + context.logger.debug(`Document cloned, using foreign object rendering`); + const renderer = new ForeignObjectRenderer(context, renderOptions); canvas = await renderer.render(clonedElement); } else { - Logger.getInstance(instanceName).debug(`Document cloned, using computed rendering`); + context.logger.debug( + `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering` + ); - CacheStorage.attachInstance(options.cache); - Logger.getInstance(instanceName).debug(`Starting DOM parsing`); - const root = parseTree(clonedElement); - CacheStorage.detachInstance(); + context.logger.debug(`Starting DOM parsing`); + const root = parseTree(context, clonedElement); if (backgroundColor === root.styles.backgroundColor) { root.styles.backgroundColor = COLORS.TRANSPARENT; } - Logger.getInstance(instanceName).debug(`Starting renderer`); + context.logger.debug( + `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}` + ); - const renderer = new CanvasRenderer(renderOptions); + const renderer = new CanvasRenderer(context, renderOptions); canvas = await renderer.render(root); } - if (options.removeContainer === true) { + if (opts.removeContainer ?? true) { if (!DocumentCloner.destroy(container)) { - Logger.getInstance(instanceName).error(`Cannot detach cloned iframe as it is not in the DOM anymore`); + context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`); } } - Logger.getInstance(instanceName).debug(`Finished rendering`); - Logger.destroy(instanceName); - CacheStorage.destroy(instanceName); + context.logger.debug(`Finished rendering`); return canvas; }; + +const parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => { + const ownerDocument = element.ownerDocument; + // http://www.w3.org/TR/css3-background/#special-backgrounds + const documentBackgroundColor = ownerDocument.documentElement + ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string) + : COLORS.TRANSPARENT; + const bodyBackgroundColor = ownerDocument.body + ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string) + : COLORS.TRANSPARENT; + + const defaultBackgroundColor = + typeof backgroundColorOverride === 'string' + ? parseColor(context, backgroundColorOverride) + : backgroundColorOverride === null + ? COLORS.TRANSPARENT + : 0xffffffff; + + return element === ownerDocument.documentElement + ? isTransparent(documentBackgroundColor) + ? isTransparent(bodyBackgroundColor) + ? defaultBackgroundColor + : bodyBackgroundColor + : documentBackgroundColor + : defaultBackgroundColor; +}; diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 08625bd7a..12d2a6051 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -1,6 +1,5 @@ import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context'; import {asString, Color, isTransparent} from '../../css/types/color'; -import {Logger} from '../../core/logger'; import {ElementContainer} from '../../dom/element-container'; import {BORDER_STYLE} from '../../css/property-descriptors/border-style'; import {CSSParsedDeclaration} from '../../css/index'; @@ -17,7 +16,6 @@ import { parsePathForBorderDoubleOuter, parsePathForBorderStroke } from '../border'; -import {Cache} from '../../core/cache-storage'; import {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background'; import {isDimensionToken} from '../../css/syntax/parser'; import {TextBounds} from '../../css/layout/text'; @@ -44,39 +42,34 @@ import {SelectElementContainer} from '../../dom/elements/select-element-containe import {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container'; import {TextShadow} from '../../css/property-descriptors/text-shadow'; import {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order'; +import {Renderer} from '../renderer'; +import {Context} from '../../core/context'; export type RenderConfigurations = RenderOptions & { backgroundColor: Color | null; }; export interface RenderOptions { - id: string; scale: number; canvas?: HTMLCanvasElement; x: number; y: number; - scrollX: number; - scrollY: number; width: number; height: number; - windowWidth: number; - windowHeight: number; - cache: Cache; } const MASK_OFFSET = 10000; -export class CanvasRenderer { +export class CanvasRenderer extends Renderer { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; - options: RenderConfigurations; private readonly _activeEffects: IElementEffect[] = []; private readonly fontMetrics: FontMetrics; - constructor(options: RenderConfigurations) { + constructor(context: Context, options: RenderConfigurations) { + super(context, options); this.canvas = options.canvas ? options.canvas : document.createElement('canvas'); this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D; - this.options = options; if (!options.canvas) { this.canvas.width = Math.floor(options.width * options.scale); this.canvas.height = Math.floor(options.height * options.scale); @@ -85,11 +78,11 @@ export class CanvasRenderer { } this.fontMetrics = new FontMetrics(document); this.ctx.scale(this.options.scale, this.options.scale); - this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY); + this.ctx.translate(-options.x, -options.y); this.ctx.textBaseline = 'bottom'; this._activeEffects = []; - Logger.getInstance(options.id).debug( - `Canvas renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}` + this.context.logger.debug( + `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}` ); } @@ -253,6 +246,7 @@ export class CanvasRenderer { if (styles.webkitTextStrokeWidth && text.text.trim().length) { this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor); this.ctx.lineWidth = styles.webkitTextStrokeWidth; + // eslint-disable-next-line @typescript-eslint/no-explicit-any this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round'; this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline); } @@ -302,10 +296,10 @@ export class CanvasRenderer { if (container instanceof ImageElementContainer) { try { - const image = await this.options.cache.match(container.src); + const image = await this.context.cache.match(container.src); this.renderReplacedElement(container, curves, image); } catch (e) { - Logger.getInstance(this.options.id).error(`Error loading image ${container.src}`); + this.context.logger.error(`Error loading image ${container.src}`); } } @@ -315,27 +309,21 @@ export class CanvasRenderer { if (container instanceof SVGElementContainer) { try { - const image = await this.options.cache.match(container.svg); + const image = await this.context.cache.match(container.svg); this.renderReplacedElement(container, curves, image); } catch (e) { - Logger.getInstance(this.options.id).error(`Error loading svg ${container.svg.substring(0, 255)}`); + this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`); } } if (container instanceof IFrameElementContainer && container.tree) { - const iframeRenderer = new CanvasRenderer({ - id: this.options.id, + const iframeRenderer = new CanvasRenderer(this.context, { scale: this.options.scale, backgroundColor: container.backgroundColor, x: 0, y: 0, - scrollX: 0, - scrollY: 0, width: container.width, - height: container.height, - cache: this.options.cache, - windowWidth: container.width, - windowHeight: container.height + height: container.height }); const canvas = await iframeRenderer.render(container.tree); @@ -444,10 +432,10 @@ export class CanvasRenderer { let image; const url = (img as CSSURLImage).url; try { - image = await this.options.cache.match(url); + image = await this.context.cache.match(url); this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top); } catch (e) { - Logger.getInstance(this.options.id).error(`Error loading list-style-image ${url}`); + this.context.logger.error(`Error loading list-style-image ${url}`); } } } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) { @@ -592,9 +580,9 @@ export class CanvasRenderer { let image; const url = (backgroundImage as CSSURLImage).url; try { - image = await this.options.cache.match(url); + image = await this.context.cache.match(url); } catch (e) { - Logger.getInstance(this.options.id).error(`Error loading background-image ${url}`); + this.context.logger.error(`Error loading background-image ${url}`); } if (image) { @@ -902,12 +890,7 @@ export class CanvasRenderer { async render(element: ElementContainer): Promise { if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); - this.ctx.fillRect( - this.options.x - this.options.scrollX, - this.options.y - this.options.scrollY, - this.options.width, - this.options.height - ); + this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height); } const stack = parseStackingContexts(element); diff --git a/src/render/canvas/foreignobject-renderer.ts b/src/render/canvas/foreignobject-renderer.ts index cee5971f1..a6d1e3a64 100644 --- a/src/render/canvas/foreignobject-renderer.ts +++ b/src/render/canvas/foreignobject-renderer.ts @@ -1,14 +1,16 @@ import {RenderConfigurations} from './canvas-renderer'; -import {Logger} from '../../core/logger'; import {createForeignObjectSVG} from '../../core/features'; import {asString} from '../../css/types/color'; +import {Renderer} from '../renderer'; +import {Context} from '../../core/context'; -export class ForeignObjectRenderer { +export class ForeignObjectRenderer extends Renderer { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; options: RenderConfigurations; - constructor(options: RenderConfigurations) { + constructor(context: Context, options: RenderConfigurations) { + super(context, options); this.canvas = options.canvas ? options.canvas : document.createElement('canvas'); this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D; this.options = options; @@ -18,18 +20,18 @@ export class ForeignObjectRenderer { this.canvas.style.height = `${options.height}px`; this.ctx.scale(this.options.scale, this.options.scale); - this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY); - Logger.getInstance(options.id).debug( + this.ctx.translate(-options.x, -options.y); + this.context.logger.debug( `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}` ); } async render(element: HTMLElement): Promise { const svg = createForeignObjectSVG( - Math.max(this.options.windowWidth, this.options.width) * this.options.scale, - Math.max(this.options.windowHeight, this.options.height) * this.options.scale, - this.options.scrollX * this.options.scale, - this.options.scrollY * this.options.scale, + this.options.width * this.options.scale, + this.options.height * this.options.scale, + this.options.scale, + this.options.scale, element ); diff --git a/src/render/renderer.ts b/src/render/renderer.ts new file mode 100644 index 000000000..420db35c3 --- /dev/null +++ b/src/render/renderer.ts @@ -0,0 +1,6 @@ +import {Context} from '../core/context'; +import {RenderConfigurations} from './canvas/canvas-renderer'; + +export class Renderer { + constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {} +} diff --git a/tests/reftests/options/crop-2.html b/tests/reftests/options/crop-2.html new file mode 100644 index 000000000..7184945aa --- /dev/null +++ b/tests/reftests/options/crop-2.html @@ -0,0 +1,44 @@ + + + + crop test + + + + + + + + +
        + great success +
        + + + diff --git a/tests/reftests/options/ignore-2.html b/tests/reftests/options/ignore-2.html new file mode 100644 index 000000000..70f6aea2c --- /dev/null +++ b/tests/reftests/options/ignore-2.html @@ -0,0 +1,48 @@ + + + + element render test + + + + + + + +
        + great failure +
        +
        + ignore predicate +
        +
        + great success +
        + + + From 95a46b00c53563722c035a0e45fdf5fb507275e4 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 4 Aug 2021 22:53:48 +0800 Subject: [PATCH 332/377] fix: overflow-wrap break-word (#2626) --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b5f373dd9..4e251f7da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,10 +5,10 @@ "requires": true, "packages": { "": { - "version": "1.1.4", + "version": "1.1.5", "license": "MIT", "dependencies": { - "css-line-break": "2.0.0" + "css-line-break": "2.0.1" }, "devDependencies": { "@babel/cli": "^7.4.3", @@ -8630,9 +8630,9 @@ } }, "node_modules/css-line-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.0.tgz", - "integrity": "sha512-zEKNpyrJHt4R3qAXLTdJkJc7F/4dkNWG+ij2CHF6/o346QJ6GSjD+oaKOUQoibOy0Wvl3F8IYdEEx3yb/+rdJw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.1.tgz", + "integrity": "sha512-gwKYIMUn7xodIcb346wgUhE2Dt5O1Kmrc16PWi8sL4FTfyDj8P5095rzH7+O8CTZudJr+uw2GCI/hwEkDJFI2w==", "dependencies": { "base64-arraybuffer": "^0.2.0" } @@ -32811,9 +32811,9 @@ } }, "css-line-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.0.tgz", - "integrity": "sha512-zEKNpyrJHt4R3qAXLTdJkJc7F/4dkNWG+ij2CHF6/o346QJ6GSjD+oaKOUQoibOy0Wvl3F8IYdEEx3yb/+rdJw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.0.1.tgz", + "integrity": "sha512-gwKYIMUn7xodIcb346wgUhE2Dt5O1Kmrc16PWi8sL4FTfyDj8P5095rzH7+O8CTZudJr+uw2GCI/hwEkDJFI2w==", "requires": { "base64-arraybuffer": "^0.2.0" } diff --git a/package.json b/package.json index cb94e3bcf..c0d17971e 100644 --- a/package.json +++ b/package.json @@ -118,6 +118,6 @@ "homepage": "https://html2canvas.hertzen.com", "license": "MIT", "dependencies": { - "css-line-break": "2.0.0" + "css-line-break": "2.0.1" } } From df223c3ff2d3ea328f16407835153e680f298dc4 Mon Sep 17 00:00:00 2001 From: CI Date: Wed, 4 Aug 2021 15:00:38 +0000 Subject: [PATCH 333/377] chore(release): 1.2.0 --- CHANGELOG.md | 14 ++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7c0f63d3..4fa6f5bad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.2.0](https://github.com/niklasvh/html2canvas/compare/v1.1.5...v1.2.0) (2021-08-04) + + +### fix + +* element cropping & scrolling (#2625) ([878e37a](https://github.com/niklasvh/html2canvas/commit/878e37a24272d0412fe589975ef8eed931c56e0b)), closes [#2625](https://github.com/niklasvh/html2canvas/issues/2625) +* overflow-wrap break-word (#2626) ([95a46b0](https://github.com/niklasvh/html2canvas/commit/95a46b00c53563722c035a0e45fdf5fb507275e4)), closes [#2626](https://github.com/niklasvh/html2canvas/issues/2626) + +### test + +* element with scrolled window (#2624) ([1338c7b](https://github.com/niklasvh/html2canvas/commit/1338c7b203535d53509416358d74014200a994eb)), closes [#2624](https://github.com/niklasvh/html2canvas/issues/2624) + + + ## [1.1.5](https://github.com/niklasvh/html2canvas/compare/v1.1.4...v1.1.5) (2021-08-02) diff --git a/package-lock.json b/package-lock.json index 4e251f7da..8f766d868 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.1.5", + "version": "1.2.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index c0d17971e..f30003b10 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.1.5", + "version": "1.2.0", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 6651fc6789d5902d171dc53b4094887870433018 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 5 Aug 2021 09:30:22 +0800 Subject: [PATCH 334/377] fix: none image (#2627) --- src/css/types/image.ts | 7 +++++-- tests/reftests/background/linear-gradient2.html | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/css/types/image.ts b/src/css/types/image.ts index 7e4ae8d75..ffb3a7e83 100644 --- a/src/css/types/image.ts +++ b/src/css/types/image.ts @@ -94,12 +94,15 @@ export const image: ITypeDescriptor = { return imageFunction(context, value.values); } - throw new Error(`Unsupported image type`); + throw new Error(`Unsupported image type ${value.type}`); } }; export function isSupportedImage(value: CSSValue): boolean { - return value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]; + return ( + !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') && + (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]) + ); } const SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = { diff --git a/tests/reftests/background/linear-gradient2.html b/tests/reftests/background/linear-gradient2.html index 6547f2bae..f552b89f5 100644 --- a/tests/reftests/background/linear-gradient2.html +++ b/tests/reftests/background/linear-gradient2.html @@ -46,6 +46,7 @@
        +
        From c5c6fa00d71f36ef963ba5170ebc7b668d39c407 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 5 Aug 2021 10:17:30 +0800 Subject: [PATCH 335/377] fix: type import that is only available ts 3.8 or higher (#2629) --- src/core/cache-storage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/cache-storage.ts b/src/core/cache-storage.ts index 278acb9b4..2be98edeb 100644 --- a/src/core/cache-storage.ts +++ b/src/core/cache-storage.ts @@ -1,5 +1,5 @@ import {FEATURES} from './features'; -import type {Context} from './context'; +import {Context} from './context'; export class CacheStorage { private static _link?: HTMLAnchorElement; From b988d9d657e7c92838f20aa06d4902e95799babb Mon Sep 17 00:00:00 2001 From: CI Date: Thu, 5 Aug 2021 02:39:44 +0000 Subject: [PATCH 336/377] chore(release): 1.2.1 --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fa6f5bad..7bf6f0866 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.2.1](https://github.com/niklasvh/html2canvas/compare/v1.2.0...v1.2.1) (2021-08-05) + + +### fix + +* none image (#2627) ([6651fc6](https://github.com/niklasvh/html2canvas/commit/6651fc6789d5902d171dc53b4094887870433018)), closes [#2627](https://github.com/niklasvh/html2canvas/issues/2627) +* type import that is only available ts 3.8 or higher (#2629) ([c5c6fa0](https://github.com/niklasvh/html2canvas/commit/c5c6fa00d71f36ef963ba5170ebc7b668d39c407)), closes [#2629](https://github.com/niklasvh/html2canvas/issues/2629) + + + # [1.2.0](https://github.com/niklasvh/html2canvas/compare/v1.1.5...v1.2.0) (2021-08-04) diff --git a/package-lock.json b/package-lock.json index 8f766d868..c06d8da08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.2.0", + "version": "1.2.1", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index f30003b10..b69716c69 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.2.0", + "version": "1.2.1", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From a0dd38a8be4e540ae1c1f4b4e41f6c386f3e454f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Thu, 5 Aug 2021 14:07:10 +0800 Subject: [PATCH 337/377] fix: radial gradient ry check (#2631) --- src/render/canvas/canvas-renderer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 12d2a6051..2c4ded1ce 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -628,7 +628,7 @@ export class CanvasRenderer extends Renderer { const y = getAbsoluteValue(position[position.length - 1], height); const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height); - if (rx > 0 && rx > 0) { + if (rx > 0 && ry > 0) { const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx); processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) => From e36408ad030fe31acd9969a37fe24c1621c0bd04 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 7 Aug 2021 15:47:15 +0800 Subject: [PATCH 338/377] test: large base64 encoded background (#2636) --- tests/reftests/background/base64.css | 3 +++ tests/reftests/background/encoded.html | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 tests/reftests/background/base64.css diff --git a/tests/reftests/background/base64.css b/tests/reftests/background/base64.css new file mode 100644 index 000000000..d33f4a570 --- /dev/null +++ b/tests/reftests/background/base64.css @@ -0,0 +1,3 @@ +.base64 { + background-image: url("data:image/jpeg;base64,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") +} diff --git a/tests/reftests/background/encoded.html b/tests/reftests/background/encoded.html index 0c49250c7..5dff7fff7 100644 --- a/tests/reftests/background/encoded.html +++ b/tests/reftests/background/encoded.html @@ -4,6 +4,7 @@ Background attribute tests + @@ -46,6 +50,7 @@
        +
        From 7a06d0c2c2f3b8a1d1a8a85c540f8288b782e8c6 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 7 Aug 2021 18:05:08 +0800 Subject: [PATCH 339/377] docs: update test previewer (#2637) --- www/src/preview.ts | 49 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/www/src/preview.ts b/www/src/preview.ts index e85003236..6ac7df7fc 100644 --- a/www/src/preview.ts +++ b/www/src/preview.ts @@ -22,18 +22,30 @@ type TestList = {[key: string]: Test[]}; function onTestChange(browserTests: Test[]) { if (browserSelector) { + const currentSelection = browserSelector.value; while (browserSelector.firstChild) { browserSelector.firstChild.remove(); } + + let newSelection; + browserTests.forEach((browser, i) => { if (i === 0) { - onBrowserChange(browser); + newSelection = browser; } const option = document.createElement('option'); option.value = browser.id; + if (browser.id === currentSelection) { + option.selected = true; + newSelection = browser; + } option.textContent = browser.id.replace(/_/g, ' '); browserSelector.appendChild(option); }); + + if (newSelection) { + onBrowserChange(newSelection); + } } } @@ -48,13 +60,20 @@ function onBrowserChange(browserTest: Test) { previewImage.style.transformOrigin = ''; } } + + if (history) { + history.replaceState(null, document.title, `?browser=${browserSelector?.value}&test=${testSelector?.value}`); + } } function selectTest(testName: string) { - if (testLink) { - testLink.textContent = testLink.href = testName; + const foundTest = testList[testName]; + if (foundTest) { + if (testLink) { + testLink.textContent = testLink.href = testName; + } + onTestChange(foundTest); } - onTestChange(testList[testName]); } const UP_ARROW = 38; @@ -116,15 +135,29 @@ if (testSelector && browserSelector) { false ); - const tests: string[] = Object.keys(testList); - tests.forEach((testName, i) => { - if (i === 0) { - selectTest(testName); + let testFromUrl: string | null = null; + + if (URLSearchParams) { + const url = new URLSearchParams(location.search); + testFromUrl = url.get('test'); + if (browserSelector) { + const option = document.createElement('option'); + browserSelector.appendChild(option); + browserSelector.value = option.value = url.get('browser') ?? ''; } + } + + const tests: string[] = Object.keys(testList); + tests.forEach((testName) => { const option = document.createElement('option'); option.value = testName; option.textContent = testName; + if (option.value === testFromUrl) { + option.selected = true; + } testSelector.appendChild(option); }); + + selectTest(testSelector.value ?? testSelector.firstChild?.textContent ?? ''); } From f43f942fcd793dde9cdc6c0438f379ec3c05c405 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 9 Aug 2021 17:14:40 +0800 Subject: [PATCH 340/377] fix: test for ios range line break error (#2635) --- src/core/features.ts | 47 ++++++++++++++++++++++++++++++++++++++++ src/css/layout/bounds.ts | 14 ++++++++++++ src/css/layout/text.ts | 21 ++++++++++++++---- 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/src/core/features.ts b/src/core/features.ts index 2b5f00126..78514bdd9 100644 --- a/src/core/features.ts +++ b/src/core/features.ts @@ -1,3 +1,5 @@ +import {fromCodePoint, toCodePoints} from 'css-line-break'; + const testRangeBounds = (document: Document) => { const TEST_HEIGHT = 123; @@ -22,6 +24,45 @@ const testRangeBounds = (document: Document) => { return false; }; +const testIOSLineBreak = (document: Document) => { + const testElement = document.createElement('boundtest'); + testElement.style.width = '50px'; + testElement.style.display = 'block'; + testElement.style.fontSize = '12px'; + testElement.style.letterSpacing = '0px'; + testElement.style.wordSpacing = '0px'; + document.body.appendChild(testElement); + const range = document.createRange(); + + testElement.innerHTML = typeof ''.repeat === 'function' ? '👨'.repeat(10) : ''; + + const node = testElement.firstChild as Text; + + const textList = toCodePoints(node.data).map((i) => fromCodePoint(i)); + let offset = 0; + let prev: DOMRect = {} as DOMRect; + + // ios 13 does not handle range getBoundingClientRect line changes correctly #2177 + const supports = textList.every((text, i) => { + range.setStart(node, offset); + range.setEnd(node, offset + text.length); + const rect = range.getBoundingClientRect(); + + offset += text.length; + const boundAhead = rect.x > prev.x || rect.y > prev.y; + + prev = rect; + if (i === 0) { + return true; + } + + return boundAhead; + }); + + document.body.removeChild(testElement); + return supports; +}; + const testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined'; const testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string'; @@ -132,6 +173,12 @@ export const FEATURES = { Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value}); return value; }, + get SUPPORT_WORD_BREAKING(): boolean { + 'use strict'; + const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document); + Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value}); + return value; + }, get SUPPORT_SVG_DRAWING(): boolean { 'use strict'; const value = testSVG(document); diff --git a/src/css/layout/bounds.ts b/src/css/layout/bounds.ts index 04596e305..43d1bea1c 100644 --- a/src/css/layout/bounds.ts +++ b/src/css/layout/bounds.ts @@ -15,6 +15,20 @@ export class Bounds { clientRect.height ); } + + static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds { + const domRect = domRectList[0]; + return domRect + ? new Bounds( + domRect.x + context.windowBounds.left, + domRect.y + context.windowBounds.top, + domRect.width, + domRect.height + ) + : Bounds.EMPTY; + } + + static EMPTY = new Bounds(0, 0, 0, 0); } export const parseBounds = (context: Context, node: Element): Bounds => { diff --git a/src/css/layout/text.ts b/src/css/layout/text.ts index 247392663..9b33e7c1a 100644 --- a/src/css/layout/text.ts +++ b/src/css/layout/text.ts @@ -27,7 +27,16 @@ export const parseTextBounds = ( textList.forEach((text) => { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { - textBounds.push(new TextBounds(text, getRangeBounds(context, node, offset, text.length))); + if (!FEATURES.SUPPORT_WORD_BREAKING) { + textBounds.push( + new TextBounds( + text, + Bounds.fromDOMRectList(context, createRange(node, offset, text.length).getClientRects()) + ) + ); + } else { + textBounds.push(new TextBounds(text, getRangeBounds(context, node, offset, text.length))); + } } else { const replacementNode = node.splitText(text.length); textBounds.push(new TextBounds(text, getWrapperBounds(context, node))); @@ -58,10 +67,10 @@ const getWrapperBounds = (context: Context, node: Text): Bounds => { } } - return new Bounds(0, 0, 0, 0); + return Bounds.EMPTY; }; -const getRangeBounds = (context: Context, node: Text, offset: number, length: number): Bounds => { +const createRange = (node: Text, offset: number, length: number): Range => { const ownerDocument = node.ownerDocument; if (!ownerDocument) { throw new Error('Node has no owner document'); @@ -69,7 +78,11 @@ const getRangeBounds = (context: Context, node: Text, offset: number, length: nu const range = ownerDocument.createRange(); range.setStart(node, offset); range.setEnd(node, offset + length); - return Bounds.fromClientRect(context, range.getBoundingClientRect()); + return range; +}; + +const getRangeBounds = (context: Context, node: Text, offset: number, length: number): Bounds => { + return Bounds.fromClientRect(context, createRange(node, offset, length).getBoundingClientRect()); }; const breakText = (value: string, styles: CSSParsedDeclaration): string[] => { From e429e0443adf5c7ca3041b97a8157b8911302206 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 9 Aug 2021 17:15:00 +0800 Subject: [PATCH 341/377] ci: add ios15 target (#2564) --- .github/workflows/ci.yml | 4 ++++ karma.conf.js | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc0771214..2e5126ffd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,6 +113,10 @@ jobs: name: iOS Simulator Safari 14 targetBrowser: Safari_IOS_14 xcode: /Applications/Xcode_12_beta.app + - os: macos-11 + name: iOS Simulator Safari 15 + targetBrowser: Safari_IOS_15 + xcode: /Applications/Xcode_13.0.app - os: windows-latest name: Windows Internet Explorer 9 (Emulated) targetBrowser: IE_9 diff --git a/karma.conf.js b/karma.conf.js index 8ed4e1617..4c2d17604 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -42,6 +42,12 @@ module.exports = function(config) { platform: 'iOS', sdk: '14.0' }, + Safari_IOS_15: { + base: 'MobileSafari', + name: 'iPhone 8', + platform: 'iOS', + sdk: '15.0' + }, SauceLabs_IE9: { base: 'SauceLabs', browserName: 'internet explorer', From 1941b9e0acfd9243da0beaf70e1643cab1b4a963 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 9 Aug 2021 18:43:42 +0800 Subject: [PATCH 342/377] fix: parsing counter content in pseudo element (#2640) --- src/css/types/functions/counter.ts | 10 +++++----- tests/reftests/pseudo-content.html | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/css/types/functions/counter.ts b/src/css/types/functions/counter.ts index 8404f68b5..280bba498 100644 --- a/src/css/types/functions/counter.ts +++ b/src/css/types/functions/counter.ts @@ -4,10 +4,7 @@ import {contains} from '../../../core/bitwise'; import {CSSParsedCounterDeclaration} from '../../index'; export class CounterState { - readonly counters: {[key: string]: number[]}; - constructor() { - this.counters = {}; - } + private readonly counters: {[key: string]: number[]} = {}; getCounterValue(name: string): number { const counter = this.counters[name]; @@ -18,7 +15,7 @@ export class CounterState { return 1; } - getCounterValues(name: string): number[] { + getCounterValues(name: string): readonly number[] { const counter = this.counters[name]; return counter ? counter : []; } @@ -37,6 +34,9 @@ export class CounterState { const counter = this.counters[entry.counter]; if (counter && entry.increment !== 0) { canReset = false; + if (!counter.length) { + counter.push(1); + } counter[Math.max(0, counter.length - 1)] += entry.increment; } }); diff --git a/tests/reftests/pseudo-content.html b/tests/reftests/pseudo-content.html index 24c763e99..a97dab735 100644 --- a/tests/reftests/pseudo-content.html +++ b/tests/reftests/pseudo-content.html @@ -86,6 +86,20 @@ of the section counter, separated by a period */ } + + .issue-2639 { + display: flex; + } + + .issue-2639::before { + content: counter(ol0) '. '; + counter-increment: ol0; + } + + .issue-2639:first-child { + counter-reset: ol0; + } + @@ -163,5 +177,10 @@
      • item
      • +
          +
        1. one
        2. +
        3. two
        4. +
        + From 2b4de68e923fd508bccb3260b2912dda4af207de Mon Sep 17 00:00:00 2001 From: CI Date: Tue, 10 Aug 2021 10:39:01 +0000 Subject: [PATCH 343/377] chore(release): 1.2.2 --- CHANGELOG.md | 23 +++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf6f0866..c17832034 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,29 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.2.2](https://github.com/niklasvh/html2canvas/compare/v1.2.1...v1.2.2) (2021-08-10) + + +### ci + +* add ios15 target (#2564) ([e429e04](https://github.com/niklasvh/html2canvas/commit/e429e0443adf5c7ca3041b97a8157b8911302206)), closes [#2564](https://github.com/niklasvh/html2canvas/issues/2564) + +### docs + +* update test previewer (#2637) ([7a06d0c](https://github.com/niklasvh/html2canvas/commit/7a06d0c2c2f3b8a1d1a8a85c540f8288b782e8c6)), closes [#2637](https://github.com/niklasvh/html2canvas/issues/2637) + +### fix + +* parsing counter content in pseudo element (#2640) ([1941b9e](https://github.com/niklasvh/html2canvas/commit/1941b9e0acfd9243da0beaf70e1643cab1b4a963)), closes [#2640](https://github.com/niklasvh/html2canvas/issues/2640) +* radial gradient ry check (#2631) ([a0dd38a](https://github.com/niklasvh/html2canvas/commit/a0dd38a8be4e540ae1c1f4b4e41f6c386f3e454f)), closes [#2631](https://github.com/niklasvh/html2canvas/issues/2631) +* test for ios range line break error (#2635) ([f43f942](https://github.com/niklasvh/html2canvas/commit/f43f942fcd793dde9cdc6c0438f379ec3c05c405)), closes [#2635](https://github.com/niklasvh/html2canvas/issues/2635) + +### test + +* large base64 encoded background (#2636) ([e36408a](https://github.com/niklasvh/html2canvas/commit/e36408ad030fe31acd9969a37fe24c1621c0bd04)), closes [#2636](https://github.com/niklasvh/html2canvas/issues/2636) + + + ## [1.2.1](https://github.com/niklasvh/html2canvas/compare/v1.2.0...v1.2.1) (2021-08-05) diff --git a/package-lock.json b/package-lock.json index c06d8da08..47a3972f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.2.1", + "version": "1.2.2", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index b69716c69..722260786 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.2.1", + "version": "1.2.2", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From c378e220694c14cb7b3b4b8650a7757f8fc23c7a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 13 Aug 2021 17:32:55 +0800 Subject: [PATCH 344/377] fix: correctly handle allowTaint canvas cloning (#2649) --- src/dom/document-cloner.ts | 7 +++++-- src/index.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index cacfc0279..0bb7b1807 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -24,6 +24,7 @@ import {Context} from '../core/context'; export interface CloneOptions { ignoreElements?: (element: Element) => boolean; onclone?: (document: Document, element: HTMLElement) => void; + allowTaint?: boolean; } export interface WindowOptions { @@ -201,14 +202,16 @@ export class DocumentCloner { const ctx = canvas.getContext('2d'); const clonedCtx = clonedCanvas.getContext('2d'); if (clonedCtx) { - if (ctx) { + if (!this.options.allowTaint && ctx) { clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0); } else { clonedCtx.drawImage(canvas, 0, 0); } } return clonedCanvas; - } catch (e) {} + } catch (e) { + this.context.logger.info(`Unable to clone canvas as it is tainted`); + } return clonedCanvas; } diff --git a/src/index.ts b/src/index.ts index a56a28499..348b050fb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -74,6 +74,7 @@ const renderElement = async (element: HTMLElement, opts: Partial): Prom const foreignObjectRendering = opts.foreignObjectRendering ?? false; const cloneOptions: CloneConfigurations = { + allowTaint: opts.allowTaint ?? false, onclone: opts.onclone, ignoreElements: opts.ignoreElements, inlineImages: foreignObjectRendering, From f919204efa06af219f155ca279f96124bb92862b Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 13 Aug 2021 17:45:42 +0800 Subject: [PATCH 345/377] test: add letter-spacing test for zwj emoji (#2650) --- package-lock.json | 2403 ++++++++------------------------- package.json | 5 +- tests/reftests/text/text.html | 1 + 3 files changed, 553 insertions(+), 1856 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47a3972f5..38a3851c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,10 +5,11 @@ "requires": true, "packages": { "": { - "version": "1.1.5", + "version": "1.2.2", "license": "MIT", "dependencies": { - "css-line-break": "2.0.1" + "css-line-break": "2.0.1", + "text-segmentation": "^1.0.2" }, "devDependencies": { "@babel/cli": "^7.4.3", @@ -36,7 +37,7 @@ "babel-loader": "^8.0.5", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-dev-expression": "^0.2.1", - "base64-arraybuffer": "0.2.0", + "base64-arraybuffer": "1.0.1", "body-parser": "^1.19.0", "chai": "4.1.1", "chromeless": "^1.5.2", @@ -2527,12 +2528,6 @@ "regenerator-runtime": "^0.13.4" } }, - "node_modules/@jimp/core/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, "node_modules/@jimp/core/node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -4093,18 +4088,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4126,12 +4109,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.28.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.2.tgz", @@ -4293,18 +4270,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4326,12 +4291,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "4.28.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.2.tgz", @@ -4672,19 +4631,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", - "dev": true, - "dependencies": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -4757,94 +4703,51 @@ } }, "node_modules/appium-ios-simulator": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", - "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.28.1.tgz", + "integrity": "sha512-JqtpDXeYpJ0iA5Uwx4bbLFGiA/vpuejMa7VG5qbQ1nrGQ7+EZuETpKl+w8oWUmDi2fvOwwVLbeCSuDp0ysSPzg==", "dev": true, "engines": [ "node" ], "dependencies": { "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", + "appium-support": "^2.44.0", "appium-xcode": "^3.1.0", "async-lock": "^1.0.0", "asyncbox": "^2.3.1", "bluebird": "^3.5.1", - "fkill": "^5.0.0", "lodash": "^4.2.1", - "node-simctl": "^4.0.0", - "openssl-wrapper": "^0.3.4", - "semver": "^5.5.0", - "shell-quote": "^1.6.1", + "node-simctl": "^6.4.0", + "semver": "^7.0.0", "source-map-support": "^0.5.3", - "teen_process": "^1.3.0" + "teen_process": "^1.3.0", + "xmldom": "^0.x" } }, - "node_modules/appium-ios-simulator/node_modules/appium-support": { - "version": "2.53.0", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", - "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", + "node_modules/appium-ios-simulator/node_modules/node-simctl": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-6.4.1.tgz", + "integrity": "sha512-RkEvbv2SJYDJF5eBJ0rRGZRU/LOypLmUAPLI/s7KqJAk0rSbG45x2OF2eqbK9+pfzL7N9XPorIcqtS75cYIydw==", "dev": true, "engines": [ "node" ], "dependencies": { "@babel/runtime": "^7.0.0", - "archiver": "^5.0.0", - "axios": "^0.x", - "base64-stream": "^1.0.0", + "asyncbox": "^2.3.1", "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.x", - "form-data": "^4.0.0", - "get-stream": "^6.0.0", - "glob": "^7.1.2", - "jimp": "^0.x", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", "lodash": "^4.2.1", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^6.0.0", "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", "semver": "^7.0.0", - "shell-quote": "^1.7.2", "source-map-support": "^0.5.5", "teen_process": "^1.5.1", "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" + "which": "^2.0.0" } }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/semver": { + "node_modules/appium-ios-simulator/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", @@ -4859,64 +4762,74 @@ "node": ">=10" } }, - "node_modules/appium-ios-simulator/node_modules/appium-support/node_modules/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 - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "node_modules/appium-ios-simulator/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "node_modules/appium-ios-simulator/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/appium-ios-simulator/node_modules/appium-xcode/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "node_modules/appium-support": { + "version": "2.54.1", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.54.1.tgz", + "integrity": "sha512-Nhbduhtj9CwDAhOH77Ux5nyXpccIw9kz2WW0eLwIn2BoEEIcRjEcAdIvXQ2qTqURhVAHd4VyATllf1oAVYFbkQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^5.0.0", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" } }, - "node_modules/appium-ios-simulator/node_modules/combined-stream": { + "node_modules/appium-support/node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", @@ -4928,7 +4841,7 @@ "node": ">= 0.8" } }, - "node_modules/appium-ios-simulator/node_modules/form-data": { + "node_modules/appium-support/node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", @@ -4942,28 +4855,39 @@ "node": ">= 6" } }, - "node_modules/appium-ios-simulator/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/appium-support/node_modules/gauge": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.1.tgz", + "integrity": "sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ==", "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, "engines": { "node": ">=10" } }, - "node_modules/appium-ios-simulator/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/appium-support/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/appium-ios-simulator/node_modules/mkdirp": { + "node_modules/appium-support/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", @@ -4975,25 +4899,19 @@ "node": ">=10" } }, - "node_modules/appium-ios-simulator/node_modules/node-simctl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", - "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", + "node_modules/appium-support/node_modules/npmlog": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.0.tgz", + "integrity": "sha512-ftpIiLjerL2tUg3dCqN8pOSoB90gqZlzv/gaZoxHaKjeLClrfJIEQ1Pdxi6qSzflz916Bljdy8dTWQ4J7hAFSQ==", "dev": true, - "engines": [ - "node" - ], "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "asyncbox": "^2.3.1", - "lodash": "^4.2.1", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1" + "are-we-there-yet": "^1.1.5", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, - "node_modules/appium-ios-simulator/node_modules/pngjs": { + "node_modules/appium-support/node_modules/pngjs": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", @@ -5002,23 +4920,22 @@ "node": ">=12.13.0" } }, - "node_modules/appium-ios-simulator/node_modules/teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", + "node_modules/appium-support/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "engines": [ - "node" - ], "dependencies": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/appium-ios-simulator/node_modules/uuid": { + "node_modules/appium-support/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", @@ -5027,7 +4944,7 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/appium-ios-simulator/node_modules/which": { + "node_modules/appium-support/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -5042,20 +4959,39 @@ "node": ">= 8" } }, - "node_modules/appium-ios-simulator/node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "node_modules/appium-xcode": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.11.0.tgz", + "integrity": "sha512-kT1du+HYBrd8X+cLfpp0mLCbqv7tgPRI9lCmrSeL2t9cIGdb+p9m4MOlfaKxrsqFurQlmMVUHmKDZLU4kvZWBg==", "dev": true, - "engines": { - "node": ">=4.0" + "engines": [ + "node" + ], + "dependencies": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" } }, - "node_modules/appium-ios-simulator/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/appium-xcode/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/aproba": { "version": "1.2.0", @@ -5200,12 +5136,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -5227,18 +5157,6 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "node_modules/array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "node_modules/array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -5784,18 +5702,32 @@ } }, "node_modules/base64-arraybuffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", - "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz", + "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==", "engines": { "node": ">= 0.6.0" } }, "node_modules/base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/base64-stream": { "version": "1.0.0", @@ -6177,22 +6109,6 @@ "isarray": "^1.0.0" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -6211,12 +6127,6 @@ "node": ">=0.4.0" } }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "node_modules/buffer-from": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", @@ -6885,15 +6795,6 @@ "node": ">=0.10.0" } }, - "node_modules/clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -7002,6 +6903,15 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "node_modules/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==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", @@ -7356,18 +7266,6 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-core/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-changelog-core/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -7657,12 +7555,6 @@ "node": ">=10" } }, - "node_modules/conventional-changelog-core/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/conventional-changelog-ember": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz", @@ -7807,18 +7699,6 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-changelog-writer/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -8028,12 +7908,6 @@ "node": ">=10" } }, - "node_modules/conventional-changelog-writer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/conventional-commits-filter": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", @@ -8105,18 +7979,6 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/conventional-commits-parser/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -8326,12 +8188,6 @@ "node": ">=10" } }, - "node_modules/conventional-commits-parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/conventional-recommended-bump": { "version": "6.0.9", "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.0.9.tgz", @@ -8586,27 +8442,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.0", - "which": "^1.2.8" - } - }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -8637,6 +8472,14 @@ "base64-arraybuffer": "^0.2.0" } }, + "node_modules/css-line-break/node_modules/base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -8661,30 +8504,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/csv-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-1.12.1.tgz", - "integrity": "sha512-r45M92nLnGP246ot0Yo5RvbiiMF5Bw/OTIdWJ3OQ4Vbv4hpOeoXVIPxdSmUw+fPJlQOseY+iigJyLSfPMIrddQ==", - "dev": true, - "dependencies": { - "buffer-alloc": "^1.1.0", - "buffer-from": "^1.0.0", - "generate-function": "^1.0.1", - "generate-object-property": "^1.0.0", - "inherits": "^2.0.1", - "minimist": "^1.2.0", - "ndjson": "^1.4.0" - }, - "bin": { - "csv-parser": "bin.js" - } - }, - "node_modules/csv-parser/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "node_modules/currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -9242,9 +9061,9 @@ "dev": true }, "node_modules/duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "dependencies": { "end-of-stream": "^1.0.0", @@ -10033,18 +9852,6 @@ "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint/node_modules/ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -10173,12 +9980,6 @@ "node": ">= 8" } }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -10895,57 +10696,6 @@ "node": ">= 0.10" } }, - "node_modules/fkill": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fkill/-/fkill-5.3.0.tgz", - "integrity": "sha512-AHe4x/k9xHlSNPRya0FOCd42qa6ggmW4gtdy6mR0R1vdWtNq9zMd8nmMR5LB7fTNOA1f1nOU+uqaQHP7NMWmVA==", - "dev": true, - "dependencies": { - "aggregate-error": "^1.0.0", - "arrify": "^1.0.0", - "execa": "^0.10.0", - "pid-from-port": "^1.0.0", - "process-exists": "^3.1.0", - "taskkill": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fkill/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/fkill/node_modules/execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -11938,21 +11688,6 @@ "node": ">=0.10.0" } }, - "node_modules/generate-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", - "integrity": "sha1-VMIbCAGSsW2Yd3ecW7gWZudyNl8=", - "dev": true - }, - "node_modules/generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "dependencies": { - "is-property": "^1.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -12488,18 +12223,6 @@ "node": ">=8" } }, - "node_modules/git-semver-tags/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/git-semver-tags/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -12686,12 +12409,6 @@ "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/gitconfiglocal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", @@ -13885,12 +13602,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", @@ -13933,15 +13644,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-symbol": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", @@ -16397,18 +16099,6 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -16436,12 +16126,6 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/jest-util": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz", @@ -17290,9 +16974,9 @@ } }, "node_modules/jszip": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", - "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", "dev": true, "dependencies": { "lie": "~3.3.0", @@ -18135,13 +17819,15 @@ } }, "node_modules/lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/magic-string": { @@ -19132,9 +18818,9 @@ } }, "node_modules/mqtt": { - "version": "2.18.8", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.8.tgz", - "integrity": "sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA==", + "version": "2.18.9", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.9.tgz", + "integrity": "sha512-ufywki8VAQ8YAERiunbj77TnXgaeVYVlyebnj4o9vhPUQFRjo+d3oUf0rft8kWi7YPYf4O8rkwPkeFc7ndWESg==", "dev": true, "dependencies": { "commist": "^1.0.0", @@ -19149,7 +18835,7 @@ "readable-stream": "^2.3.6", "reinterval": "^1.1.0", "split2": "^2.1.1", - "websocket-stream": "^5.1.2", + "websocket-stream": "~5.2.0", "xtend": "^4.0.1" }, "bin": { @@ -19292,66 +18978,6 @@ "ncp": "bin/ncp" } }, - "node_modules/ndjson": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", - "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=", - "dev": true, - "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.0", - "split2": "^2.1.0", - "through2": "^2.0.3" - }, - "bin": { - "ndjson": "cli.js" - } - }, - "node_modules/ndjson/node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/neat-csv": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/neat-csv/-/neat-csv-2.1.0.tgz", - "integrity": "sha1-BvWDYMTDuVW9Rn3cha5FEaOQekw=", - "dev": true, - "dependencies": { - "csv-parser": "^1.6.0", - "get-stream": "^2.1.0", - "into-stream": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/neat-csv/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/neat-csv/node_modules/into-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-2.0.1.tgz", - "integrity": "sha1-25sANpRFPq4JHYpchMwRUHt4HTE=", - "dev": true, - "dependencies": { - "from2": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -19469,164 +19095,6 @@ "teen_process": "^1.5.1" } }, - "node_modules/node-simctl/node_modules/appium-support": { - "version": "2.53.0", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", - "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "archiver": "^5.0.0", - "axios": "^0.x", - "base64-stream": "^1.0.0", - "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.x", - "form-data": "^4.0.0", - "get-stream": "^6.0.0", - "glob": "^7.1.2", - "jimp": "^0.x", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", - "lodash": "^4.2.1", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", - "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^6.0.0", - "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "shell-quote": "^1.7.2", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1", - "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" - } - }, - "node_modules/node-simctl/node_modules/appium-support/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/node-simctl/node_modules/appium-support/node_modules/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 - }, - "node_modules/node-simctl/node_modules/appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" - } - }, - "node_modules/node-simctl/node_modules/appium-xcode/node_modules/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/node-simctl/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "node_modules/node-simctl/node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/node-simctl/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-simctl/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-simctl/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-simctl/node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true, - "engines": { - "node": ">=12.13.0" - } - }, "node_modules/node-simctl/node_modules/semver": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", @@ -19639,55 +19107,6 @@ "node": ">=10" } }, - "node_modules/node-simctl/node_modules/teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", - "dev": true, - "engines": [ - "node" - ], - "dependencies": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" - } - }, - "node_modules/node-simctl/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/node-simctl/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-simctl/node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -19728,18 +19147,6 @@ "node": ">=4" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -19893,12 +19300,6 @@ "wrappy": "1" } }, - "node_modules/openssl-wrapper": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/openssl-wrapper/-/openssl-wrapper-0.3.4.tgz", - "integrity": "sha1-wB7Jjk3NK13+C2k/MYJyAOO4Gwc=", - "dev": true - }, "node_modules/optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -20249,36 +19650,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pid-from-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pid-from-port/-/pid-from-port-1.1.3.tgz", - "integrity": "sha512-OlE82n3yMOE5dY9RMOwxhoWefeMlxwk5IVxoj0sSzSFIlmvhN4obzTvO3s/d/b5JhcgXikjaspsy/HuUDTqbBg==", - "dev": true, - "dependencies": { - "execa": "^0.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pid-from-port/node_modules/execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -20412,6 +19783,29 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, + "node_modules/plist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.3.tgz", + "integrity": "sha512-ghdOKN99hh1oEmAlwBmPYo4L+tSQ7O3jRpkhWqOrMz86CWotpVzMevvQ+czo7oPDpOZyA6K06Ci7QVHpoh9gaA==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -20547,18 +19941,6 @@ "node": ">= 0.6.0" } }, - "node_modules/process-exists": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/process-exists/-/process-exists-3.1.0.tgz", - "integrity": "sha512-X11vso1oNLtyDa2j8fsMol2fph1+5PoQ4vpEc1it/rM8eLuRTmrmTg4jfn82WhNur241AYitgjKCgmlgMRZesw==", - "dev": true, - "dependencies": { - "ps-list": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -20612,25 +19994,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "node_modules/ps-list": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-4.1.0.tgz", - "integrity": "sha512-DSpMj8PI5W7v2G4+rE+BymTKZPjlu6t/M1N6rPAa6Hwn+/e8jDmFJaq8/kpoGCvwd75g2h5DbjF2MduOMNyrsQ==", - "dev": true, - "dependencies": { - "pify": "^3.0.0", - "tasklist": "^3.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -21612,15 +20975,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/sec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sec/-/sec-1.0.0.tgz", - "integrity": "sha1-Az1go60g7PLgCUDRT5eCNGV3QzU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/selenium-webdriver": { "version": "4.0.0-alpha.1", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz", @@ -21855,16 +21209,10 @@ } }, "node_modules/shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "dependencies": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "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 }, "node_modules/shelljs": { "version": "0.8.4", @@ -22962,15 +22310,6 @@ "node": ">=4" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -23197,12 +22536,6 @@ "node": ">=6" } }, - "node_modules/tar-stream/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, "node_modules/tar-stream/node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -23250,54 +22583,36 @@ "node": ">= 6" } }, - "node_modules/taskkill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", - "integrity": "sha1-o1QwVwKpZDVwMwJ6qUnq7VMxt4Q=", + "node_modules/teen_process": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.16.0.tgz", + "integrity": "sha512-RnW7HHZD1XuhSTzD3djYOdIl1adE3oNEprE3HOFFxWs5m4FZsqYRhKJ4mDU2udtNGMLUS7jV7l8vVRLWAvmPDw==", "dev": true, + "engines": [ + "node" + ], "dependencies": { - "arrify": "^1.0.0", - "execa": "^0.1.1" - }, - "engines": { - "node": ">=4" + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "lodash": "^4.17.4", + "shell-quote": "^1.4.3", + "source-map-support": "^0.5.3", + "which": "^2.0.2" } }, - "node_modules/taskkill/node_modules/execa": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.1.1.tgz", - "integrity": "sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=", + "node_modules/teen_process/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "cross-spawn-async": "^2.1.1", - "object-assign": "^4.0.1", - "strip-eof": "^1.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/tasklist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tasklist/-/tasklist-3.1.1.tgz", - "integrity": "sha512-G3I7QWUBSNWaekrJcDabydF6dcvy+vZ2PrX04JYq1p914TOLgpN+ryMtheGavs1LYVevTbTmwjQY8aeX8yLsyA==", - "dev": true, - "dependencies": { - "neat-csv": "^2.1.0", - "pify": "^2.2.0", - "sec": "^1.0.0" + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=4" - } - }, - "node_modules/tasklist/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/terminal-link": { @@ -23441,6 +22756,14 @@ "node": ">=0.10" } }, + "node_modules/text-segmentation": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.2.tgz", + "integrity": "sha512-uTqvLxdBrVnx/CFQOtnf8tfzSXFm+1Qxau7Xi54j4OPTZokuDOX8qncQzrg2G8ZicAMOM8TgzFAYTb+AqNO4Cw==", + "dependencies": { + "utrie": "^1.0.1" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -23710,18 +23033,6 @@ "node": ">=6" } }, - "node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-jest/node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -23755,12 +23066,6 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.3.0.tgz", @@ -23901,18 +23206,6 @@ "node": ">=8.9.0" } }, - "node_modules/ts-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-loader/node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -23971,12 +23264,6 @@ "node": ">=8.0" } }, - "node_modules/ts-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/ts-node": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz", @@ -24517,6 +23804,14 @@ "node": ">= 0.4.0" } }, + "node_modules/utrie": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.1.tgz", + "integrity": "sha512-JPaDXF3vzgZxfeEwutdGzlrNoVFL5UvZcbO6Qo9D4GoahrieUPoMU8GCpVpR7MQqcKhmShIh8VlbEN3PLM3EBg==", + "dependencies": { + "base64-arraybuffer": "^1.0.1" + } + }, "node_modules/uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -25025,28 +24320,40 @@ "dev": true }, "node_modules/websocket-stream": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.1.2.tgz", - "integrity": "sha512-lchLOk435iDWs0jNuL+hiU14i3ERSrMA0IKSiJh7z6X/i4XNsutBZrtqu2CPOZuA4G/zabiqVAos0vW+S7GEVw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.2.0.tgz", + "integrity": "sha512-2ZfiWuEK/bTi8AhXdYh/lFEUwXtGVcbO4vWUy5XJhf7F6nCMAC8hbXXTarxrmv2BFSwdk3P3bhvgiA9wzT+GFQ==", "dev": true, "dependencies": { - "duplexify": "^3.5.1", + "duplexify": "^3.6.1", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.1", - "ws": "^3.2.0", + "readable-stream": "^3.0.0", + "safe-buffer": "^5.1.2", + "ws": "^6.1.2", "xtend": "^4.0.0" } }, + "node_modules/websocket-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/websocket-stream/node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } }, "node_modules/whatwg-encoding": { @@ -25276,9 +24583,9 @@ "dev": true }, "node_modules/xmldom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", - "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -25300,9 +24607,9 @@ "dev": true }, "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/yargs": { @@ -27560,12 +26867,6 @@ "regenerator-runtime": "^0.13.4" } }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -29075,15 +28376,6 @@ "ms": "2.1.2" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -29098,12 +28390,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -29202,15 +28488,6 @@ "ms": "2.1.2" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -29225,12 +28502,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -29536,16 +28807,6 @@ } } }, - "aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", - "dev": true, - "requires": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" - } - }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -29609,142 +28870,110 @@ } }, "appium-ios-simulator": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.10.0.tgz", - "integrity": "sha512-FKb/Prga3RTjATw3eCqCLTT1r541Lh/44RpQElIgIvxZcDTutf2UVXiKy1pBWUL9Ylyu9d+KmXRIGUelpaxyEw==", + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/appium-ios-simulator/-/appium-ios-simulator-3.28.1.tgz", + "integrity": "sha512-JqtpDXeYpJ0iA5Uwx4bbLFGiA/vpuejMa7VG5qbQ1nrGQ7+EZuETpKl+w8oWUmDi2fvOwwVLbeCSuDp0ysSPzg==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", + "appium-support": "^2.44.0", "appium-xcode": "^3.1.0", "async-lock": "^1.0.0", "asyncbox": "^2.3.1", "bluebird": "^3.5.1", - "fkill": "^5.0.0", "lodash": "^4.2.1", - "node-simctl": "^4.0.0", - "openssl-wrapper": "^0.3.4", - "semver": "^5.5.0", - "shell-quote": "^1.6.1", + "node-simctl": "^6.4.0", + "semver": "^7.0.0", "source-map-support": "^0.5.3", - "teen_process": "^1.3.0" + "teen_process": "^1.3.0", + "xmldom": "^0.x" }, "dependencies": { - "appium-support": { - "version": "2.53.0", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", - "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", + "node-simctl": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-6.4.1.tgz", + "integrity": "sha512-RkEvbv2SJYDJF5eBJ0rRGZRU/LOypLmUAPLI/s7KqJAk0rSbG45x2OF2eqbK9+pfzL7N9XPorIcqtS75cYIydw==", "dev": true, "requires": { "@babel/runtime": "^7.0.0", - "archiver": "^5.0.0", - "axios": "^0.x", - "base64-stream": "^1.0.0", + "asyncbox": "^2.3.1", "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.x", - "form-data": "^4.0.0", - "get-stream": "^6.0.0", - "glob": "^7.1.2", - "jimp": "^0.x", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", "lodash": "^4.2.1", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^6.0.0", "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", "semver": "^7.0.0", - "shell-quote": "^1.7.2", "source-map-support": "^0.5.5", "teen_process": "^1.5.1", "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" - }, - "dependencies": { - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "requires": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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 - } + "which": "^2.0.0" } }, - "appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" - }, - "dependencies": { - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "requires": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } + "lru-cache": "^6.0.0" } }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "appium-support": { + "version": "2.54.1", + "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.54.1.tgz", + "integrity": "sha512-Nhbduhtj9CwDAhOH77Ux5nyXpccIw9kz2WW0eLwIn2BoEEIcRjEcAdIvXQ2qTqURhVAHd4VyATllf1oAVYFbkQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "archiver": "^5.0.0", + "axios": "^0.x", + "base64-stream": "^1.0.0", + "bluebird": "^3.5.1", + "bplist-creator": "^0", + "bplist-parser": "^0.x", + "form-data": "^4.0.0", + "get-stream": "^6.0.0", + "glob": "^7.1.2", + "jimp": "^0.x", + "jsftp": "^2.1.2", + "klaw": "^3.0.0", + "lockfile": "^1.0.4", + "lodash": "^4.2.1", + "mkdirp": "^1.0.0", + "moment": "^2.24.0", + "mv": "^2.1.1", + "ncp": "^2.0.0", + "npmlog": "^5.0.0", + "plist": "^3.0.1", + "pluralize": "^8.0.0", + "pngjs": "^6.0.0", + "rimraf": "^3.0.0", + "sanitize-filename": "^1.6.1", + "semver": "^7.0.0", + "shell-quote": "^1.7.2", + "source-map-support": "^0.5.5", + "teen_process": "^1.5.1", + "uuid": "^8.0.0", + "which": "^2.0.0", + "yauzl": "^2.7.0" + }, + "dependencies": { "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -29765,40 +28994,45 @@ "mime-types": "^2.1.12" } }, + "gauge": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.1.tgz", + "integrity": "sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "node-simctl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/node-simctl/-/node-simctl-4.0.2.tgz", - "integrity": "sha512-W9vkzeAA/h6Tby2TijAtv0weN7TdAA3zNXlaH8hGNMXvvcdTLj/w7tIKigAPnRlN3kDmfqPHB3Hjw3WdxhZ5Ug==", + "npmlog": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.0.tgz", + "integrity": "sha512-ftpIiLjerL2tUg3dCqN8pOSoB90gqZlzv/gaZoxHaKjeLClrfJIEQ1Pdxi6qSzflz916Bljdy8dTWQ4J7hAFSQ==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "appium-xcode": "^3.1.0", - "asyncbox": "^2.3.1", - "lodash": "^4.2.1", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1" + "are-we-there-yet": "^1.1.5", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" } }, "pngjs": { @@ -29807,17 +29041,13 @@ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", "dev": true }, - "teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" + "lru-cache": "^6.0.0" } }, "uuid": { @@ -29834,18 +29064,33 @@ "requires": { "isexe": "^2.0.0" } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + } + } + }, + "appium-xcode": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.11.0.tgz", + "integrity": "sha512-kT1du+HYBrd8X+cLfpp0mLCbqv7tgPRI9lCmrSeL2t9cIGdb+p9m4MOlfaKxrsqFurQlmMVUHmKDZLU4kvZWBg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "appium-support": "^2.4.0", + "asyncbox": "^2.3.0", + "lodash": "^4.17.4", + "plist": "^3.0.1", + "semver": "^7.0.0", + "source-map-support": "^0.5.5", + "teen_process": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -29972,12 +29217,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -29996,18 +29235,6 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -30457,14 +29684,14 @@ } }, "base64-arraybuffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", - "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz", + "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==" }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "base64-stream": { @@ -30796,22 +30023,6 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -30824,12 +30035,6 @@ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", @@ -31375,12 +30580,6 @@ } } }, - "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=", - "dev": true - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -31472,6 +30671,12 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "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==", + "dev": true + }, "colorette": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", @@ -31767,15 +30972,6 @@ "p-locate": "^4.1.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -32006,12 +31202,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -32123,15 +31313,6 @@ "p-locate": "^4.1.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -32298,12 +31479,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -32360,15 +31535,6 @@ "p-locate": "^4.1.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -32536,12 +31702,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -32770,27 +31930,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", - "dev": true, - "requires": { - "lru-cache": "^4.0.0", - "which": "^1.2.8" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -32816,6 +31955,13 @@ "integrity": "sha512-gwKYIMUn7xodIcb346wgUhE2Dt5O1Kmrc16PWi8sL4FTfyDj8P5095rzH7+O8CTZudJr+uw2GCI/hwEkDJFI2w==", "requires": { "base64-arraybuffer": "^0.2.0" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + } } }, "cssom": { @@ -32841,29 +31987,6 @@ } } }, - "csv-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-1.12.1.tgz", - "integrity": "sha512-r45M92nLnGP246ot0Yo5RvbiiMF5Bw/OTIdWJ3OQ4Vbv4hpOeoXVIPxdSmUw+fPJlQOseY+iigJyLSfPMIrddQ==", - "dev": true, - "requires": { - "buffer-alloc": "^1.1.0", - "buffer-from": "^1.0.0", - "generate-function": "^1.0.1", - "generate-object-property": "^1.0.0", - "inherits": "^2.0.1", - "minimist": "^1.2.0", - "ndjson": "^1.4.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -33314,9 +32437,9 @@ "dev": true }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -33897,15 +33020,6 @@ "type-check": "~0.4.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -33997,12 +33111,6 @@ "requires": { "isexe": "^2.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -34639,50 +33747,6 @@ "resolve-dir": "^1.0.1" } }, - "fkill": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fkill/-/fkill-5.3.0.tgz", - "integrity": "sha512-AHe4x/k9xHlSNPRya0FOCd42qa6ggmW4gtdy6mR0R1vdWtNq9zMd8nmMR5LB7fTNOA1f1nOU+uqaQHP7NMWmVA==", - "dev": true, - "requires": { - "aggregate-error": "^1.0.0", - "arrify": "^1.0.0", - "execa": "^0.10.0", - "pid-from-port": "^1.0.0", - "process-exists": "^3.1.0", - "taskkill": "^2.0.0" - }, - "dependencies": { - "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" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -35475,21 +34539,6 @@ } } }, - "generate-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz", - "integrity": "sha1-VMIbCAGSsW2Yd3ecW7gWZudyNl8=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -35901,15 +34950,6 @@ "p-locate": "^4.1.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -36056,12 +35096,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -37010,12 +36044,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", @@ -37049,12 +36077,6 @@ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", "dev": true }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "is-symbol": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", @@ -38962,15 +37984,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -38988,12 +38001,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -39567,9 +38574,9 @@ } }, "jszip": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", - "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", + "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", "dev": true, "requires": { "lie": "~3.3.0", @@ -40253,13 +39260,12 @@ "dev": true }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "magic-string": { @@ -41038,9 +40044,9 @@ } }, "mqtt": { - "version": "2.18.8", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.8.tgz", - "integrity": "sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA==", + "version": "2.18.9", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-2.18.9.tgz", + "integrity": "sha512-ufywki8VAQ8YAERiunbj77TnXgaeVYVlyebnj4o9vhPUQFRjo+d3oUf0rft8kWi7YPYf4O8rkwPkeFc7ndWESg==", "dev": true, "requires": { "commist": "^1.0.0", @@ -41055,7 +40061,7 @@ "readable-stream": "^2.3.6", "reinterval": "^1.1.0", "split2": "^2.1.1", - "websocket-stream": "^5.1.2", + "websocket-stream": "~5.2.0", "xtend": "^4.0.1" }, "dependencies": { @@ -41172,58 +40178,6 @@ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, - "ndjson": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz", - "integrity": "sha1-rmA7NrE0vOw0e0UkIrC/mNWDLsg=", - "dev": true, - "requires": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.0", - "split2": "^2.1.0", - "through2": "^2.0.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } - } - }, - "neat-csv": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/neat-csv/-/neat-csv-2.1.0.tgz", - "integrity": "sha1-BvWDYMTDuVW9Rn3cha5FEaOQekw=", - "dev": true, - "requires": { - "csv-parser": "^1.6.0", - "get-stream": "^2.1.0", - "into-stream": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "into-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-2.0.1.tgz", - "integrity": "sha1-25sANpRFPq4JHYpchMwRUHt4HTE=", - "dev": true, - "requires": { - "from2": "^2.1.1" - } - } - } - }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -41331,177 +40285,11 @@ "teen_process": "^1.5.1" }, "dependencies": { - "appium-support": { - "version": "2.53.0", - "resolved": "https://registry.npmjs.org/appium-support/-/appium-support-2.53.0.tgz", - "integrity": "sha512-E4OykST5+ip8aH+fmoKOklwJpuQ9zwxU62481RJoXdnKV0qzPRkrI65zbRX6QzhaUPMKD6N5rLOvlYLITS5rHQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "archiver": "^5.0.0", - "axios": "^0.x", - "base64-stream": "^1.0.0", - "bluebird": "^3.5.1", - "bplist-creator": "^0", - "bplist-parser": "^0.x", - "form-data": "^4.0.0", - "get-stream": "^6.0.0", - "glob": "^7.1.2", - "jimp": "^0.x", - "jsftp": "^2.1.2", - "klaw": "^3.0.0", - "lockfile": "^1.0.4", - "lodash": "^4.2.1", - "mkdirp": "^1.0.0", - "moment": "^2.24.0", - "mv": "^2.1.1", - "ncp": "^2.0.0", - "npmlog": "^4.1.2", - "plist": "^3.0.1", - "pluralize": "^8.0.0", - "pngjs": "^6.0.0", - "rimraf": "^3.0.0", - "sanitize-filename": "^1.6.1", - "semver": "^7.0.0", - "shell-quote": "^1.7.2", - "source-map-support": "^0.5.5", - "teen_process": "^1.5.1", - "uuid": "^8.0.0", - "which": "^2.0.0", - "yauzl": "^2.7.0" - }, - "dependencies": { - "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "requires": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - } - }, - "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 - } - } - }, - "appium-xcode": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/appium-xcode/-/appium-xcode-3.10.0.tgz", - "integrity": "sha512-6Db49w2UjcdMn96nUMS/EGKE/6r/sgIPcw8mr9+e4Oeb5rvROAm/VeIWmwnov3uk2JG3SGkLTQRB9tROKKRDgw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "appium-support": "^2.4.0", - "asyncbox": "^2.3.0", - "lodash": "^4.17.4", - "plist": "^3.0.1", - "semver": "^7.0.0", - "source-map-support": "^0.5.5", - "teen_process": "^1.3.0" - }, - "dependencies": { - "plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", - "dev": true, - "requires": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7", - "xmldom": "^0.5.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true - }, "semver": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.0.tgz", "integrity": "sha512-uyvgU/igkrMgNHwLgXvlpD9jEADbJhB0+JXSywoO47JgJ6c16iau9F9cjtc/E5o0PoqRYTiTIAPRKaYe84z6eQ==", "dev": true - }, - "teen_process": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.15.0.tgz", - "integrity": "sha512-E8DdTeffAselFMtcE56jNiof7jt+X+KJPpCn4xvbLFy0YVAT24Y9O5jSIzOFfAKIAirKkK0M9YfmQfmxmUdgGA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.0.0", - "bluebird": "^3.5.1", - "lodash": "^4.17.4", - "shell-quote": "^1.4.3", - "source-map-support": "^0.5.3" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true } } }, @@ -41539,15 +40327,6 @@ "sort-keys": "^1.0.0" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -41670,12 +40449,6 @@ "wrappy": "1" } }, - "openssl-wrapper": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/openssl-wrapper/-/openssl-wrapper-0.3.4.tgz", - "integrity": "sha1-wB7Jjk3NK13+C2k/MYJyAOO4Gwc=", - "dev": true - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -41960,32 +40733,6 @@ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, - "pid-from-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pid-from-port/-/pid-from-port-1.1.3.tgz", - "integrity": "sha512-OlE82n3yMOE5dY9RMOwxhoWefeMlxwk5IVxoj0sSzSFIlmvhN4obzTvO3s/d/b5JhcgXikjaspsy/HuUDTqbBg==", - "dev": true, - "requires": { - "execa": "^0.9.0" - }, - "dependencies": { - "execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -42085,6 +40832,25 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, + "plist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.3.tgz", + "integrity": "sha512-ghdOKN99hh1oEmAlwBmPYo4L+tSQ7O3jRpkhWqOrMz86CWotpVzMevvQ+czo7oPDpOZyA6K06Ci7QVHpoh9gaA==", + "dev": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.6.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + } + } + }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -42174,15 +40940,6 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, - "process-exists": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/process-exists/-/process-exists-3.1.0.tgz", - "integrity": "sha512-X11vso1oNLtyDa2j8fsMol2fph1+5PoQ4vpEc1it/rM8eLuRTmrmTg4jfn82WhNur241AYitgjKCgmlgMRZesw==", - "dev": true, - "requires": { - "ps-list": "^4.0.0" - } - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -42227,22 +40984,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "ps-list": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-4.1.0.tgz", - "integrity": "sha512-DSpMj8PI5W7v2G4+rE+BymTKZPjlu6t/M1N6rPAa6Hwn+/e8jDmFJaq8/kpoGCvwd75g2h5DbjF2MduOMNyrsQ==", - "dev": true, - "requires": { - "pify": "^3.0.0", - "tasklist": "^3.1.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -43030,12 +41771,6 @@ } } }, - "sec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sec/-/sec-1.0.0.tgz", - "integrity": "sha1-Az1go60g7PLgCUDRT5eCNGV3QzU=", - "dev": true - }, "selenium-webdriver": { "version": "4.0.0-alpha.1", "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz", @@ -43234,16 +41969,10 @@ "dev": true }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "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 }, "shelljs": { "version": "0.8.4", @@ -44127,12 +42856,6 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -44308,12 +43031,6 @@ "readable-stream": "^3.1.1" }, "dependencies": { - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -44362,48 +43079,31 @@ } } }, - "taskkill": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-2.0.0.tgz", - "integrity": "sha1-o1QwVwKpZDVwMwJ6qUnq7VMxt4Q=", + "teen_process": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/teen_process/-/teen_process-1.16.0.tgz", + "integrity": "sha512-RnW7HHZD1XuhSTzD3djYOdIl1adE3oNEprE3HOFFxWs5m4FZsqYRhKJ4mDU2udtNGMLUS7jV7l8vVRLWAvmPDw==", "dev": true, "requires": { - "arrify": "^1.0.0", - "execa": "^0.1.1" + "@babel/runtime": "^7.0.0", + "bluebird": "^3.5.1", + "lodash": "^4.17.4", + "shell-quote": "^1.4.3", + "source-map-support": "^0.5.3", + "which": "^2.0.2" }, "dependencies": { - "execa": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.1.1.tgz", - "integrity": "sha1-sJwqkwm8DvBQFHlHLbMYD41MPt0=", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "cross-spawn-async": "^2.1.1", - "object-assign": "^4.0.1", - "strip-eof": "^1.0.0" + "isexe": "^2.0.0" } } } }, - "tasklist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tasklist/-/tasklist-3.1.1.tgz", - "integrity": "sha512-G3I7QWUBSNWaekrJcDabydF6dcvy+vZ2PrX04JYq1p914TOLgpN+ryMtheGavs1LYVevTbTmwjQY8aeX8yLsyA==", - "dev": true, - "requires": { - "neat-csv": "^2.1.0", - "pify": "^2.2.0", - "sec": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -44509,6 +43209,14 @@ "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true }, + "text-segmentation": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.2.tgz", + "integrity": "sha512-uTqvLxdBrVnx/CFQOtnf8tfzSXFm+1Qxau7Xi54j4OPTZokuDOX8qncQzrg2G8ZicAMOM8TgzFAYTb+AqNO4Cw==", + "requires": { + "utrie": "^1.0.1" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -44724,15 +43432,6 @@ "minimist": "^1.2.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -44753,12 +43452,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -44859,15 +43552,6 @@ "json5": "^2.1.2" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -44910,12 +43594,6 @@ "requires": { "is-number": "^7.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -45332,6 +44010,14 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "utrie": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.1.tgz", + "integrity": "sha512-JPaDXF3vzgZxfeEwutdGzlrNoVFL5UvZcbO6Qo9D4GoahrieUPoMU8GCpVpR7MQqcKhmShIh8VlbEN3PLM3EBg==", + "requires": { + "base64-arraybuffer": "^1.0.1" + } + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -45751,28 +44437,37 @@ } }, "websocket-stream": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.1.2.tgz", - "integrity": "sha512-lchLOk435iDWs0jNuL+hiU14i3ERSrMA0IKSiJh7z6X/i4XNsutBZrtqu2CPOZuA4G/zabiqVAos0vW+S7GEVw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.2.0.tgz", + "integrity": "sha512-2ZfiWuEK/bTi8AhXdYh/lFEUwXtGVcbO4vWUy5XJhf7F6nCMAC8hbXXTarxrmv2BFSwdk3P3bhvgiA9wzT+GFQ==", "dev": true, "requires": { - "duplexify": "^3.5.1", + "duplexify": "^3.6.1", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.1", - "ws": "^3.2.0", + "readable-stream": "^3.0.0", + "safe-buffer": "^5.1.2", + "ws": "^6.1.2", "xtend": "^4.0.0" }, "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } } } @@ -45968,9 +44663,9 @@ "dev": true }, "xmldom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", - "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", "dev": true }, "xtend": { @@ -45986,9 +44681,9 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 722260786..e2dddedf9 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "babel-loader": "^8.0.5", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-dev-expression": "^0.2.1", - "base64-arraybuffer": "0.2.0", + "base64-arraybuffer": "1.0.1", "body-parser": "^1.19.0", "chai": "4.1.1", "chromeless": "^1.5.2", @@ -118,6 +118,7 @@ "homepage": "https://html2canvas.hertzen.com", "license": "MIT", "dependencies": { - "css-line-break": "2.0.1" + "css-line-break": "2.0.1", + "text-segmentation": "^1.0.2" } } diff --git a/tests/reftests/text/text.html b/tests/reftests/text/text.html index 5970a9947..ae1f46f5a 100644 --- a/tests/reftests/text/text.html +++ b/tests/reftests/text/text.html @@ -149,5 +149,6 @@

        <h3> misc text alignments

        [AB / CD]
        Emojis 🤷🏾‍♂️👨‍👩‍👧‍👦 :)
        +
        Emojis with letter-spacing 🤷🏾‍♂️👨‍👩‍👧‍👦 :)
        From 969638fb94a0a14c64a667fa6e5689f79d9f1044 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 13 Aug 2021 18:15:55 +0800 Subject: [PATCH 346/377] fix: finish animation/transitions for elements (#2632) --- src/css/IPropertyDescriptor.ts | 4 +- src/css/index.ts | 8 ++ src/css/property-descriptors/duration.ts | 9 ++ src/css/property-descriptors/overflow-wrap.ts | 2 +- src/css/syntax/tokenizer.ts | 2 +- src/css/types/index.ts | 2 +- src/css/types/time.ts | 20 ++++ src/dom/element-container.ts | 17 +++- tests/reftests/animation.html | 96 +++++++++++++------ 9 files changed, 123 insertions(+), 37 deletions(-) create mode 100644 src/css/property-descriptors/duration.ts create mode 100644 src/css/types/time.ts diff --git a/src/css/IPropertyDescriptor.ts b/src/css/IPropertyDescriptor.ts index 8fc9e9207..ff3438bcf 100644 --- a/src/css/IPropertyDescriptor.ts +++ b/src/css/IPropertyDescriptor.ts @@ -1,8 +1,8 @@ import {CSSValue} from './syntax/parser'; -import {CSSTypes} from './types/index'; +import {CSSTypes} from './types'; import {Context} from '../core/context'; -export enum PropertyDescriptorParsingType { +export const enum PropertyDescriptorParsingType { VALUE, LIST, IDENT_VALUE, diff --git a/src/css/index.ts b/src/css/index.ts index e1ab48340..f81f69221 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -57,6 +57,7 @@ import {Tokenizer} from './syntax/tokenizer'; import {Color, color as colorType, isTransparent} from './types/color'; import {angle} from './types/angle'; import {image} from './types/image'; +import {time} from './types/time'; import {opacity} from './property-descriptors/opacity'; import {textDecorationColor} from './property-descriptors/text-decoration-color'; import {textDecorationLine} from './property-descriptors/text-decoration-line'; @@ -71,6 +72,7 @@ import {contains} from '../core/bitwise'; import {content} from './property-descriptors/content'; import {counterIncrement} from './property-descriptors/counter-increment'; import {counterReset} from './property-descriptors/counter-reset'; +import {duration} from './property-descriptors/duration'; import {quotes} from './property-descriptors/quotes'; import {boxShadow} from './property-descriptors/box-shadow'; import {paintOrder} from './property-descriptors/paint-order'; @@ -79,6 +81,7 @@ import {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-w import {Context} from '../core/context'; export class CSSParsedDeclaration { + animationDuration: ReturnType; backgroundClip: ReturnType; backgroundColor: Color; backgroundImage: ReturnType; @@ -138,6 +141,7 @@ export class CSSParsedDeclaration { textTransform: ReturnType; transform: ReturnType; transformOrigin: ReturnType; + transitionDuration: ReturnType; visibility: ReturnType; webkitTextStrokeColor: Color; webkitTextStrokeWidth: ReturnType; @@ -145,6 +149,7 @@ export class CSSParsedDeclaration { zIndex: ReturnType; constructor(context: Context, declaration: CSSStyleDeclaration) { + this.animationDuration = parse(context, duration, declaration.animationDuration); this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip); this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor); this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage); @@ -213,6 +218,7 @@ export class CSSParsedDeclaration { this.textTransform = parse(context, textTransform, declaration.textTransform); this.transform = parse(context, transform, declaration.transform); this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); + this.transitionDuration = parse(context, duration, declaration.transitionDuration); this.visibility = parse(context, visibility, declaration.visibility); this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); @@ -306,6 +312,8 @@ const parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: case 'length-percentage': const value = parser.parseComponentValue(); return isLengthPercentage(value) ? value : ZERO_LENGTH; + case 'time': + return time.parse(context, parser.parseComponentValue()); } break; } diff --git a/src/css/property-descriptors/duration.ts b/src/css/property-descriptors/duration.ts new file mode 100644 index 000000000..2fa785aef --- /dev/null +++ b/src/css/property-descriptors/duration.ts @@ -0,0 +1,9 @@ +import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; + +export const duration: IPropertyTypeValueDescriptor = { + name: 'duration', + initialValue: '0s', + prefix: false, + type: PropertyDescriptorParsingType.TYPE_VALUE, + format: 'time' +}; diff --git a/src/css/property-descriptors/overflow-wrap.ts b/src/css/property-descriptors/overflow-wrap.ts index e28887d5f..35ca43db7 100644 --- a/src/css/property-descriptors/overflow-wrap.ts +++ b/src/css/property-descriptors/overflow-wrap.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum OVERFLOW_WRAP { +export const enum OVERFLOW_WRAP { NORMAL = 'normal', BREAK_WORD = 'break-word' } diff --git a/src/css/syntax/tokenizer.ts b/src/css/syntax/tokenizer.ts index 7a1ba51ef..e05084740 100644 --- a/src/css/syntax/tokenizer.ts +++ b/src/css/syntax/tokenizer.ts @@ -2,7 +2,7 @@ import {fromCodePoint, toCodePoints} from 'css-line-break'; -export enum TokenType { +export const enum TokenType { STRING_TOKEN, BAD_STRING_TOKEN, LEFT_PARENTHESIS_TOKEN, diff --git a/src/css/types/index.ts b/src/css/types/index.ts index 4279ff330..088e06e04 100644 --- a/src/css/types/index.ts +++ b/src/css/types/index.ts @@ -1 +1 @@ -export type CSSTypes = 'angle' | 'color' | 'image' | 'length' | 'length-percentage'; +export type CSSTypes = 'angle' | 'color' | 'image' | 'length' | 'length-percentage' | 'time'; diff --git a/src/css/types/time.ts b/src/css/types/time.ts new file mode 100644 index 000000000..2b11a66fe --- /dev/null +++ b/src/css/types/time.ts @@ -0,0 +1,20 @@ +import {CSSValue} from '../syntax/parser'; +import {TokenType} from '../syntax/tokenizer'; +import {ITypeDescriptor} from '../ITypeDescriptor'; +import {Context} from '../../core/context'; + +export const time: ITypeDescriptor = { + name: 'time', + parse: (_context: Context, value: CSSValue): number => { + if (value.type === TokenType.DIMENSION_TOKEN) { + switch (value.unit.toLowerCase()) { + case 's': + return 1000 * value.number; + case 'ms': + return value.number; + } + } + + throw new Error(`Unsupported time type`); + } +}; diff --git a/src/dom/element-container.ts b/src/dom/element-container.ts index 9928cc77d..522cf2b95 100644 --- a/src/dom/element-container.ts +++ b/src/dom/element-container.ts @@ -21,10 +21,21 @@ export class ElementContainer { this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); this.textNodes = []; this.elements = []; - if (this.styles.transform !== null && isHTMLElementNode(element)) { - // getBoundingClientRect takes transforms into account - element.style.transform = 'none'; + + if (isHTMLElementNode(element)) { + if (this.styles.animationDuration > 0) { + element.style.animationDuration = '0s'; + } + if (this.styles.transitionDuration > 0) { + element.style.transitionDuration = '0s'; + } + + if (this.styles.transform !== null) { + // getBoundingClientRect takes transforms into account + element.style.transform = 'none'; + } } + this.bounds = parseBounds(this.context, element); this.flags = 0; } diff --git a/tests/reftests/animation.html b/tests/reftests/animation.html index 55b35720f..6986ffc66 100644 --- a/tests/reftests/animation.html +++ b/tests/reftests/animation.html @@ -5,46 +5,84 @@ -
        Some inline text followed by text in span followed by more inline text. -

        Then a block level element.

        - Then more inline text.
        +
        +

        Hello

        +
        + +
        +

        Hello

        +
        + +
        +

        Hello

        +
        + +
        +

        Hello

        +
        From 437b367d3ba9dfd7f9a4c8042ac8d00208c09770 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 13 Aug 2021 18:57:49 +0800 Subject: [PATCH 347/377] feat: correctly break graphemes (#2652) --- src/css/layout/text.ts | 3 ++- src/render/canvas/canvas-renderer.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/css/layout/text.ts b/src/css/layout/text.ts index 9b33e7c1a..59f0bde27 100644 --- a/src/css/layout/text.ts +++ b/src/css/layout/text.ts @@ -1,6 +1,7 @@ import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap'; import {CSSParsedDeclaration} from '../index'; import {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break'; +import {splitGraphemes} from 'text-segmentation'; import {Bounds, parseBounds} from './bounds'; import {FEATURES} from '../../core/features'; import {Context} from '../../core/context'; @@ -86,7 +87,7 @@ const getRangeBounds = (context: Context, node: Text, offset: number, length: nu }; const breakText = (value: string, styles: CSSParsedDeclaration): string[] => { - return styles.letterSpacing !== 0 ? toCodePoints(value).map((i) => fromCodePoint(i)) : breakWords(value, styles); + return styles.letterSpacing !== 0 ? splitGraphemes(value) : breakWords(value, styles); }; // https://drafts.csswg.org/css-text/#word-separator diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 2c4ded1ce..d2cefa7b1 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -19,7 +19,6 @@ import { import {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background'; import {isDimensionToken} from '../../css/syntax/parser'; import {TextBounds} from '../../css/layout/text'; -import {fromCodePoint, toCodePoints} from 'css-line-break'; import {ImageElementContainer} from '../../dom/replaced-elements/image-element-container'; import {contentBox} from '../box-sizing'; import {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container'; @@ -44,6 +43,7 @@ import {TextShadow} from '../../css/property-descriptors/text-shadow'; import {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order'; import {Renderer} from '../renderer'; import {Context} from '../../core/context'; +import {splitGraphemes} from 'text-segmentation'; export type RenderConfigurations = RenderOptions & { backgroundColor: Color | null; @@ -144,7 +144,7 @@ export class CanvasRenderer extends Renderer { if (letterSpacing === 0) { this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { - const letters = toCodePoints(text.text).map((i) => fromCodePoint(i)); + const letters = splitGraphemes(text.text); letters.reduce((left, letter) => { this.ctx.fillText(letter, left, text.bounds.top + baseline); From 694798284838b16882e648914da0905818aa366c Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 13 Aug 2021 19:50:59 +0800 Subject: [PATCH 348/377] feat: add rtl render support (#2653) --- src/css/index.ts | 3 +++ src/css/property-descriptors/direction.ts | 23 +++++++++++++++++++++++ src/render/canvas/canvas-renderer.ts | 3 +++ 3 files changed, 29 insertions(+) create mode 100644 src/css/property-descriptors/direction.ts diff --git a/src/css/index.ts b/src/css/index.ts index f81f69221..2131ab949 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -31,6 +31,7 @@ import { borderTopWidth } from './property-descriptors/border-width'; import {color} from './property-descriptors/color'; +import {direction} from './property-descriptors/direction'; import {display, DISPLAY} from './property-descriptors/display'; import {float, FLOAT} from './property-descriptors/float'; import {letterSpacing} from './property-descriptors/letter-spacing'; @@ -107,6 +108,7 @@ export class CSSParsedDeclaration { borderLeftWidth: ReturnType; boxShadow: ReturnType; color: Color; + direction: ReturnType; display: ReturnType; float: ReturnType; fontFamily: ReturnType; @@ -175,6 +177,7 @@ export class CSSParsedDeclaration { this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth); this.boxShadow = parse(context, boxShadow, declaration.boxShadow); this.color = parse(context, color, declaration.color); + this.direction = parse(context, direction, declaration.direction); this.display = parse(context, display, declaration.display); this.float = parse(context, float, declaration.cssFloat); this.fontFamily = parse(context, fontFamily, declaration.fontFamily); diff --git a/src/css/property-descriptors/direction.ts b/src/css/property-descriptors/direction.ts new file mode 100644 index 000000000..7e413b4c1 --- /dev/null +++ b/src/css/property-descriptors/direction.ts @@ -0,0 +1,23 @@ +import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; + +export const enum DIRECTION { + LTR = 0, + RTL = 1 +} + +export const direction: IPropertyIdentValueDescriptor = { + name: 'direction', + initialValue: 'ltr', + prefix: false, + type: PropertyDescriptorParsingType.IDENT_VALUE, + parse: (_context: Context, direction: string) => { + switch (direction) { + case 'rtl': + return DIRECTION.RTL; + case 'ltr': + default: + return DIRECTION.LTR; + } + } +}; diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index d2cefa7b1..ccbd5a3bf 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -43,6 +43,7 @@ import {TextShadow} from '../../css/property-descriptors/text-shadow'; import {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order'; import {Renderer} from '../renderer'; import {Context} from '../../core/context'; +import {DIRECTION} from '../../css/property-descriptors/direction'; import {splitGraphemes} from 'text-segmentation'; export type RenderConfigurations = RenderOptions & { @@ -174,6 +175,8 @@ export class CanvasRenderer extends Renderer { this.ctx.font = font; + this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr'; + this.ctx.textAlign = 'left'; this.ctx.textBaseline = 'alphabetic'; const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize); const paintOrder = styles.paintOrder; From 68377b3244bcf67dad2a8ec02a9557795c4a77bb Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 13 Aug 2021 11:52:05 +0000 Subject: [PATCH 349/377] chore(release): 1.3.0 --- CHANGELOG.md | 19 +++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c17832034..6a2cdb210 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.3.0](https://github.com/niklasvh/html2canvas/compare/v1.2.2...v1.3.0) (2021-08-13) + + +### feat + +* add rtl render support (#2653) ([6947982](https://github.com/niklasvh/html2canvas/commit/694798284838b16882e648914da0905818aa366c)), closes [#2653](https://github.com/niklasvh/html2canvas/issues/2653) +* correctly break graphemes (#2652) ([437b367](https://github.com/niklasvh/html2canvas/commit/437b367d3ba9dfd7f9a4c8042ac8d00208c09770)), closes [#2652](https://github.com/niklasvh/html2canvas/issues/2652) + +### fix + +* correctly handle allowTaint canvas cloning (#2649) ([c378e22](https://github.com/niklasvh/html2canvas/commit/c378e220694c14cb7b3b4b8650a7757f8fc23c7a)), closes [#2649](https://github.com/niklasvh/html2canvas/issues/2649) +* finish animation/transitions for elements (#2632) ([969638f](https://github.com/niklasvh/html2canvas/commit/969638fb94a0a14c64a667fa6e5689f79d9f1044)), closes [#2632](https://github.com/niklasvh/html2canvas/issues/2632) + +### test + +* add letter-spacing test for zwj emoji (#2650) ([f919204](https://github.com/niklasvh/html2canvas/commit/f919204efa06af219f155ca279f96124bb92862b)), closes [#2650](https://github.com/niklasvh/html2canvas/issues/2650) + + + ## [1.2.2](https://github.com/niklasvh/html2canvas/compare/v1.2.1...v1.2.2) (2021-08-10) diff --git a/package-lock.json b/package-lock.json index 38a3851c1..d14bc073a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.2.2", + "version": "1.3.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index e2dddedf9..6548b11b2 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.2.2", + "version": "1.3.0", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 1b55ed5668dcbbe1c6d8d7e94736d8f2da2d31c5 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 14 Aug 2021 14:05:15 +0800 Subject: [PATCH 350/377] fix: multi arg transition/animation duration (#2657) --- src/css/index.ts | 4 ++-- src/css/property-descriptors/duration.ts | 13 +++++++++---- src/dom/element-container.ts | 4 ++-- tests/reftests/animation.html | 4 ++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/css/index.ts b/src/css/index.ts index 2131ab949..272c6acce 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -82,7 +82,7 @@ import {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-w import {Context} from '../core/context'; export class CSSParsedDeclaration { - animationDuration: ReturnType; + animationDuration: ReturnType; backgroundClip: ReturnType; backgroundColor: Color; backgroundImage: ReturnType; @@ -143,7 +143,7 @@ export class CSSParsedDeclaration { textTransform: ReturnType; transform: ReturnType; transformOrigin: ReturnType; - transitionDuration: ReturnType; + transitionDuration: ReturnType; visibility: ReturnType; webkitTextStrokeColor: Color; webkitTextStrokeWidth: ReturnType; diff --git a/src/css/property-descriptors/duration.ts b/src/css/property-descriptors/duration.ts index 2fa785aef..db9b5677e 100644 --- a/src/css/property-descriptors/duration.ts +++ b/src/css/property-descriptors/duration.ts @@ -1,9 +1,14 @@ -import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; +import {Context} from '../../core/context'; +import {CSSValue, isDimensionToken} from '../syntax/parser'; +import {time} from '../types/time'; -export const duration: IPropertyTypeValueDescriptor = { +export const duration: IPropertyListDescriptor = { name: 'duration', initialValue: '0s', prefix: false, - type: PropertyDescriptorParsingType.TYPE_VALUE, - format: 'time' + type: PropertyDescriptorParsingType.LIST, + parse: (context: Context, tokens: CSSValue[]) => { + return tokens.filter(isDimensionToken).map((token) => time.parse(context, token)); + } }; diff --git a/src/dom/element-container.ts b/src/dom/element-container.ts index 522cf2b95..d284287ec 100644 --- a/src/dom/element-container.ts +++ b/src/dom/element-container.ts @@ -23,10 +23,10 @@ export class ElementContainer { this.elements = []; if (isHTMLElementNode(element)) { - if (this.styles.animationDuration > 0) { + if (this.styles.animationDuration.some((duration) => duration > 0)) { element.style.animationDuration = '0s'; } - if (this.styles.transitionDuration > 0) { + if (this.styles.transitionDuration.some((duration) => duration > 0)) { element.style.transitionDuration = '0s'; } diff --git a/tests/reftests/animation.html b/tests/reftests/animation.html index 6986ffc66..552abc432 100644 --- a/tests/reftests/animation.html +++ b/tests/reftests/animation.html @@ -40,7 +40,7 @@ .animated.working p { animation-name: rotate0; - animation-duration: 1ms; + animation-duration: 1ms, 1ms; animation-play-state: paused; } @@ -51,7 +51,7 @@ } .transitioned p { - transition: 1ms; + transition: 1ms, 1ms; transform: rotate(45deg) } From b4827259946d64a470056ec899359c42f7a39852 Mon Sep 17 00:00:00 2001 From: CI Date: Sat, 14 Aug 2021 06:06:09 +0000 Subject: [PATCH 351/377] chore(release): 1.3.1 --- CHANGELOG.md | 9 +++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a2cdb210..b6f9c25ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.3.1](https://github.com/niklasvh/html2canvas/compare/v1.3.0...v1.3.1) (2021-08-14) + + +### fix + +* multi arg transition/animation duration (#2657) ([1b55ed5](https://github.com/niklasvh/html2canvas/commit/1b55ed5668dcbbe1c6d8d7e94736d8f2da2d31c5)), closes [#2657](https://github.com/niklasvh/html2canvas/issues/2657) + + + # [1.3.0](https://github.com/niklasvh/html2canvas/compare/v1.2.2...v1.3.0) (2021-08-13) diff --git a/package-lock.json b/package-lock.json index d14bc073a..ba5ab550b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.3.0", + "version": "1.3.1", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 6548b11b2..21e44d812 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.3.0", + "version": "1.3.1", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From cd0d7258c3a93f2989d5d9ec0244ba2763ea2d23 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 14 Aug 2021 15:01:41 +0800 Subject: [PATCH 352/377] feat: add support for data-html2canvas-debug property for debugging (#2658) --- src/core/debugger.ts | 29 ++++++++++++++++++++++++++++ src/dom/document-cloner.ts | 4 ++++ src/dom/element-container.ts | 20 ++++++++++++------- src/render/canvas/canvas-renderer.ts | 9 ++++++++- 4 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 src/core/debugger.ts diff --git a/src/core/debugger.ts b/src/core/debugger.ts new file mode 100644 index 000000000..4d4f12724 --- /dev/null +++ b/src/core/debugger.ts @@ -0,0 +1,29 @@ +const elementDebuggerAttribute = 'data-html2canvas-debug'; +export const enum DebuggerType { + NONE, + ALL, + CLONE, + PARSE, + RENDER +} + +const getElementDebugType = (element: Element): DebuggerType => { + const attribute = element.getAttribute(elementDebuggerAttribute); + switch (attribute) { + case 'all': + return DebuggerType.ALL; + case 'clone': + return DebuggerType.CLONE; + case 'parse': + return DebuggerType.PARSE; + case 'render': + return DebuggerType.RENDER; + default: + return DebuggerType.NONE; + } +}; + +export const isDebugging = (element: Element, type: Omit): boolean => { + const elementType = getElementDebugType(element); + return elementType === DebuggerType.ALL || type === elementType; +}; diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 0bb7b1807..e6c25884c 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -20,6 +20,7 @@ import {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-s import {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index'; import {getQuote} from '../css/property-descriptors/quotes'; import {Context} from '../core/context'; +import {DebuggerType, isDebugging} from '../core/debugger'; export interface CloneOptions { ignoreElements?: (element: Element) => boolean; @@ -136,6 +137,9 @@ export class DocumentCloner { } createElementClone(node: T): HTMLElement | SVGElement { + if (isDebugging(node, DebuggerType.CLONE)) { + debugger; + } if (isCanvasElement(node)) { return this.createCanvasClone(node); } diff --git a/src/dom/element-container.ts b/src/dom/element-container.ts index d284287ec..01f50183b 100644 --- a/src/dom/element-container.ts +++ b/src/dom/element-container.ts @@ -3,24 +3,27 @@ import {TextContainer} from './text-container'; import {Bounds, parseBounds} from '../css/layout/bounds'; import {isHTMLElementNode} from './node-parser'; import {Context} from '../core/context'; +import {DebuggerType, isDebugging} from '../core/debugger'; export const enum FLAGS { CREATES_STACKING_CONTEXT = 1 << 1, CREATES_REAL_STACKING_CONTEXT = 1 << 2, - IS_LIST_OWNER = 1 << 3 + IS_LIST_OWNER = 1 << 3, + DEBUG_RENDER = 1 << 4 } export class ElementContainer { readonly styles: CSSParsedDeclaration; - readonly textNodes: TextContainer[]; - readonly elements: ElementContainer[]; + readonly textNodes: TextContainer[] = []; + readonly elements: ElementContainer[] = []; bounds: Bounds; - flags: number; + flags = 0; constructor(protected readonly context: Context, element: Element) { + if (isDebugging(element, DebuggerType.PARSE)) { + debugger; + } this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); - this.textNodes = []; - this.elements = []; if (isHTMLElementNode(element)) { if (this.styles.animationDuration.some((duration) => duration > 0)) { @@ -37,6 +40,9 @@ export class ElementContainer { } this.bounds = parseBounds(this.context, element); - this.flags = 0; + + if (isDebugging(element, DebuggerType.RENDER)) { + this.flags |= FLAGS.DEBUG_RENDER; + } } } diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index ccbd5a3bf..8ecedb531 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -1,6 +1,6 @@ import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context'; import {asString, Color, isTransparent} from '../../css/types/color'; -import {ElementContainer} from '../../dom/element-container'; +import {ElementContainer, FLAGS} from '../../dom/element-container'; import {BORDER_STYLE} from '../../css/property-descriptors/border-style'; import {CSSParsedDeclaration} from '../../css/index'; import {TextContainer} from '../../dom/text-container'; @@ -135,6 +135,10 @@ export class CanvasRenderer extends Renderer { } async renderNode(paint: ElementPaint): Promise { + if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) { + debugger; + } + if (paint.container.styles.isVisible()) { await this.renderNodeBackgroundAndBorders(paint); await this.renderNodeContent(paint); @@ -468,6 +472,9 @@ export class CanvasRenderer extends Renderer { } async renderStackContent(stack: StackingContext): Promise { + if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) { + debugger; + } // https://www.w3.org/TR/css-position-3/#painting-order // 1. the background and borders of the element forming the stacking context. await this.renderNodeBackgroundAndBorders(stack.element); From f1431665513e0a4636fb167a241f4a0571ba728a Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 14 Aug 2021 16:22:36 +0800 Subject: [PATCH 353/377] fix: disable transition properties (#2659) --- src/css/index.ts | 2 -- src/dom/document-cloner.ts | 1 + src/dom/element-container.ts | 4 +--- tests/reftests/animation.html | 9 +++++++++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/css/index.ts b/src/css/index.ts index 272c6acce..b338871ec 100644 --- a/src/css/index.ts +++ b/src/css/index.ts @@ -143,7 +143,6 @@ export class CSSParsedDeclaration { textTransform: ReturnType; transform: ReturnType; transformOrigin: ReturnType; - transitionDuration: ReturnType; visibility: ReturnType; webkitTextStrokeColor: Color; webkitTextStrokeWidth: ReturnType; @@ -221,7 +220,6 @@ export class CSSParsedDeclaration { this.textTransform = parse(context, textTransform, declaration.textTransform); this.transform = parse(context, transform, declaration.transform); this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); - this.transitionDuration = parse(context, duration, declaration.transitionDuration); this.visibility = parse(context, visibility, declaration.visibility); this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index e6c25884c..07dedb2b0 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -233,6 +233,7 @@ export class DocumentCloner { if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) { const clone = this.createElementClone(node); + clone.style.transitionProperty = 'none'; const style = window.getComputedStyle(node); const styleBefore = window.getComputedStyle(node, ':before'); diff --git a/src/dom/element-container.ts b/src/dom/element-container.ts index 01f50183b..151e0cd8f 100644 --- a/src/dom/element-container.ts +++ b/src/dom/element-container.ts @@ -23,15 +23,13 @@ export class ElementContainer { if (isDebugging(element, DebuggerType.PARSE)) { debugger; } + this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); if (isHTMLElementNode(element)) { if (this.styles.animationDuration.some((duration) => duration > 0)) { element.style.animationDuration = '0s'; } - if (this.styles.transitionDuration.some((duration) => duration > 0)) { - element.style.transitionDuration = '0s'; - } if (this.styles.transform !== null) { // getBoundingClientRect takes transforms into account diff --git a/tests/reftests/animation.html b/tests/reftests/animation.html index 552abc432..f7e9693c5 100644 --- a/tests/reftests/animation.html +++ b/tests/reftests/animation.html @@ -55,6 +55,11 @@ transform: rotate(45deg) } + .transition-delay { + transition: 1ms; + transition-delay: 50ms; + transform: rotate(45deg) + } div { float: left; @@ -84,5 +89,9 @@

        Hello

        + +
        +

        Hello

        +
        From 58ff0003f77d825ac027eeec95fa80c0123eaf8f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 14 Aug 2021 16:48:22 +0800 Subject: [PATCH 354/377] docs: include src files on www (#2660) --- www/package.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/www/package.json b/www/package.json index 45c4e4d82..85153d671 100644 --- a/www/package.json +++ b/www/package.json @@ -32,8 +32,10 @@ "license": "MIT", "main": "n/a", "scripts": { - "copybuild": "mkdirp public/dist && cpy ../dist/*.js public/dist", - "build": "npm run copybuild && gatsby build", + "copy:build": "mkdirp public/dist && cpy ../dist/*.js public/dist", + "copy:src": "mkdirp public/src && cpy ../src/**/*.ts public/src --parents", + "copy": "npm run copy:build && npm run copy:src", + "build": "npm run copy && gatsby build", "start": "gatsby develop", "test": "echo \"Error: no test specified\" && exit 1" } From 01ed87907ad9c7688880e2c5cb8ebc22ef73a4d8 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 14 Aug 2021 17:18:30 +0800 Subject: [PATCH 355/377] docs: add warning for webgl cloning with preserveDrawingBuffer=false (#2661) --- src/dom/document-cloner.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 07dedb2b0..796e5579f 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -194,7 +194,7 @@ export class DocumentCloner { img.src = canvas.toDataURL(); return img; } catch (e) { - this.context.logger.info(`Unable to clone canvas contents, canvas is tainted`); + this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas); } } @@ -209,12 +209,23 @@ export class DocumentCloner { if (!this.options.allowTaint && ctx) { clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0); } else { + const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl'); + if (gl) { + const attribs = gl.getContextAttributes(); + if (attribs?.preserveDrawingBuffer === false) { + this.context.logger.warn( + 'Unable to clone WebGL context as it has preserveDrawingBuffer=false', + canvas + ); + } + } + clonedCtx.drawImage(canvas, 0, 0); } } return clonedCanvas; } catch (e) { - this.context.logger.info(`Unable to clone canvas as it is tainted`); + this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas); } return clonedCanvas; From 38c682955a9299ca7785af71d8f251df799405b0 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 15 Aug 2021 19:41:57 +0800 Subject: [PATCH 356/377] fix: overflows with absolutely positioned content (#2663) --- src/css/property-descriptors/overflow.ts | 5 +- src/render/canvas/canvas-renderer.ts | 10 ++-- src/render/effects.ts | 23 ++------- src/render/stacking-context.ts | 62 +++++++++++++++--------- tests/reftests/overflow/overflow.html | 19 ++++++++ 5 files changed, 70 insertions(+), 49 deletions(-) diff --git a/src/css/property-descriptors/overflow.ts b/src/css/property-descriptors/overflow.ts index 19ac5444c..ccb13a823 100644 --- a/src/css/property-descriptors/overflow.ts +++ b/src/css/property-descriptors/overflow.ts @@ -5,7 +5,8 @@ export enum OVERFLOW { VISIBLE = 0, HIDDEN = 1, SCROLL = 2, - AUTO = 3 + CLIP = 3, + AUTO = 4 } export const overflow: IPropertyListDescriptor = { @@ -20,6 +21,8 @@ export const overflow: IPropertyListDescriptor = { return OVERFLOW.HIDDEN; case 'scroll': return OVERFLOW.SCROLL; + case 'clip': + return OVERFLOW.CLIP; case 'auto': return OVERFLOW.AUTO; case 'visible': diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 8ecedb531..48e731524 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -87,12 +87,12 @@ export class CanvasRenderer extends Renderer { ); } - applyEffects(effects: IElementEffect[], target: EffectTarget): void { + applyEffects(effects: IElementEffect[]): void { while (this._activeEffects.length) { this.popEffect(); } - effects.filter((effect) => contains(effect.target, target)).forEach((effect) => this.applyEffect(effect)); + effects.forEach((effect) => this.applyEffect(effect)); } applyEffect(effect: IElementEffect): void { @@ -293,7 +293,7 @@ export class CanvasRenderer extends Renderer { } async renderNodeContent(paint: ElementPaint): Promise { - this.applyEffects(paint.effects, EffectTarget.CONTENT); + this.applyEffects(paint.getEffects(EffectTarget.CONTENT)); const container = paint.container; const curves = paint.curves; const styles = container.styles; @@ -692,7 +692,7 @@ export class CanvasRenderer extends Renderer { } async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise { - this.applyEffects(paint.effects, EffectTarget.BACKGROUND_BORDERS); + this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS)); const styles = paint.container.styles; const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length; @@ -906,7 +906,7 @@ export class CanvasRenderer extends Renderer { const stack = parseStackingContexts(element); await this.renderStack(stack); - this.applyEffects([], EffectTarget.BACKGROUND_BORDERS); + this.applyEffects([]); return this.canvas; } } diff --git a/src/render/effects.ts b/src/render/effects.ts index 1bb428349..d7d1b9504 100644 --- a/src/render/effects.ts +++ b/src/render/effects.ts @@ -20,36 +20,21 @@ export interface IElementEffect { export class TransformEffect implements IElementEffect { readonly type: EffectType = EffectType.TRANSFORM; readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT; - readonly offsetX: number; - readonly offsetY: number; - readonly matrix: Matrix; - - constructor(offsetX: number, offsetY: number, matrix: Matrix) { - this.offsetX = offsetX; - this.offsetY = offsetY; - this.matrix = matrix; - } + + constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {} } export class ClipEffect implements IElementEffect { readonly type: EffectType = EffectType.CLIP; - readonly target: number; - readonly path: Path[]; - constructor(path: Path[], target: EffectTarget) { - this.target = target; - this.path = path; - } + constructor(readonly path: Path[], readonly target: EffectTarget) {} } export class OpacityEffect implements IElementEffect { readonly type: EffectType = EffectType.OPACITY; readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT; - readonly opacity: number; - constructor(opacity: number) { - this.opacity = opacity; - } + constructor(readonly opacity: number) {} } export const isTransformEffect = (effect: IElementEffect): effect is TransformEffect => diff --git a/src/render/stacking-context.ts b/src/render/stacking-context.ts index 9da970c9c..c5ac088b0 100644 --- a/src/render/stacking-context.ts +++ b/src/render/stacking-context.ts @@ -1,13 +1,14 @@ import {ElementContainer, FLAGS} from '../dom/element-container'; import {contains} from '../core/bitwise'; import {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves'; -import {ClipEffect, EffectTarget, IElementEffect, OpacityEffect, TransformEffect} from './effects'; +import {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects'; import {OVERFLOW} from '../css/property-descriptors/overflow'; import {equalPath} from './path'; import {DISPLAY} from '../css/property-descriptors/display'; import {OLElementContainer} from '../dom/elements/ol-element-container'; import {LIElementContainer} from '../dom/elements/li-element-container'; import {createCounterText} from '../css/types/functions/counter'; +import {POSITION} from '../css/property-descriptors/position'; export class StackingContext { element: ElementPaint; @@ -32,27 +33,24 @@ export class StackingContext { } export class ElementPaint { - container: ElementContainer; - effects: IElementEffect[]; - curves: BoundCurves; + readonly effects: IElementEffect[] = []; + readonly curves: BoundCurves; listValue?: string; - constructor(element: ElementContainer, parentStack: IElementEffect[]) { - this.container = element; - this.effects = parentStack.slice(0); - this.curves = new BoundCurves(element); - if (element.styles.opacity < 1) { - this.effects.push(new OpacityEffect(element.styles.opacity)); + constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) { + this.curves = new BoundCurves(this.container); + if (this.container.styles.opacity < 1) { + this.effects.push(new OpacityEffect(this.container.styles.opacity)); } - if (element.styles.transform !== null) { - const offsetX = element.bounds.left + element.styles.transformOrigin[0].number; - const offsetY = element.bounds.top + element.styles.transformOrigin[1].number; - const matrix = element.styles.transform; + if (this.container.styles.transform !== null) { + const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number; + const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number; + const matrix = this.container.styles.transform; this.effects.push(new TransformEffect(offsetX, offsetY, matrix)); } - if (element.styles.overflowX !== OVERFLOW.VISIBLE) { + if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) { const borderBox = calculateBorderBoxPath(this.curves); const paddingBox = calculatePaddingBoxPath(this.curves); @@ -65,16 +63,32 @@ export class ElementPaint { } } - getParentEffects(): IElementEffect[] { + getEffects(target: EffectTarget): IElementEffect[] { + let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1; + let parent = this.parent; const effects = this.effects.slice(0); - if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) { - const borderBox = calculateBorderBoxPath(this.curves); - const paddingBox = calculatePaddingBoxPath(this.curves); - if (!equalPath(borderBox, paddingBox)) { - effects.push(new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)); + while (parent) { + const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect)); + if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) { + effects.unshift(...croplessEffects); + inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1; + if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) { + const borderBox = calculateBorderBoxPath(parent.curves); + const paddingBox = calculatePaddingBoxPath(parent.curves); + if (!equalPath(borderBox, paddingBox)) { + effects.unshift( + new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT) + ); + } + } + } else { + effects.unshift(...croplessEffects); } + + parent = parent.parent; } - return effects; + + return effects.filter((effect) => contains(effect.target, target)); } } @@ -87,7 +101,7 @@ const parseStackTree = ( parent.container.elements.forEach((child) => { const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT); const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT); - const paintContainer = new ElementPaint(child, parent.getParentEffects()); + const paintContainer = new ElementPaint(child, parent); if (contains(child.styles.display, DISPLAY.LIST_ITEM)) { listItems.push(paintContainer); } @@ -182,7 +196,7 @@ const processListItems = (owner: ElementContainer, elements: ElementPaint[]) => }; export const parseStackingContexts = (container: ElementContainer): StackingContext => { - const paintContainer = new ElementPaint(container, []); + const paintContainer = new ElementPaint(container, null); const root = new StackingContext(paintContainer); const listItems: ElementPaint[] = []; parseStackTree(paintContainer, root, root, listItems); diff --git a/tests/reftests/overflow/overflow.html b/tests/reftests/overflow/overflow.html index 6a9f0e9a6..b9d1ea3e6 100644 --- a/tests/reftests/overflow/overflow.html +++ b/tests/reftests/overflow/overflow.html @@ -51,6 +51,9 @@ .scroll { overflow: scroll; } + .clip { + overflow: clip; + } .auto { overflow: auto; } @@ -70,6 +73,10 @@ scroll

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.

        +
        + clip +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.

        +
        auto

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec luctus pretium facilisis. Praesent rutrum eget nisl in tristique. Sed tincidunt nisl et tellus vulputate, nec rhoncus orci pretium.

        @@ -129,5 +136,17 @@

        Overflow: hidden

        + + + + From 0b1f0a7e90bb601061827e350942f38d5302f458 Mon Sep 17 00:00:00 2001 From: CI Date: Sun, 15 Aug 2021 12:54:26 +0000 Subject: [PATCH 357/377] chore(release): 1.3.2 --- CHANGELOG.md | 19 +++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6f9c25ff..63bf7a277 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.3.2](https://github.com/niklasvh/html2canvas/compare/v1.3.1...v1.3.2) (2021-08-15) + + +### docs + +* add warning for webgl cloning with preserveDrawingBuffer=false (#2661) ([01ed879](https://github.com/niklasvh/html2canvas/commit/01ed87907ad9c7688880e2c5cb8ebc22ef73a4d8)), closes [#2661](https://github.com/niklasvh/html2canvas/issues/2661) +* include src files on www (#2660) ([58ff000](https://github.com/niklasvh/html2canvas/commit/58ff0003f77d825ac027eeec95fa80c0123eaf8f)), closes [#2660](https://github.com/niklasvh/html2canvas/issues/2660) + +### feat + +* add support for data-html2canvas-debug property for debugging (#2658) ([cd0d725](https://github.com/niklasvh/html2canvas/commit/cd0d7258c3a93f2989d5d9ec0244ba2763ea2d23)), closes [#2658](https://github.com/niklasvh/html2canvas/issues/2658) + +### fix + +* disable transition properties (#2659) ([f143166](https://github.com/niklasvh/html2canvas/commit/f1431665513e0a4636fb167a241f4a0571ba728a)), closes [#2659](https://github.com/niklasvh/html2canvas/issues/2659) +* overflows with absolutely positioned content (#2663) ([38c6829](https://github.com/niklasvh/html2canvas/commit/38c682955a9299ca7785af71d8f251df799405b0)), closes [#2663](https://github.com/niklasvh/html2canvas/issues/2663) + + + ## [1.3.1](https://github.com/niklasvh/html2canvas/compare/v1.3.0...v1.3.1) (2021-08-14) diff --git a/package-lock.json b/package-lock.json index ba5ab550b..0f86d81b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.3.1", + "version": "1.3.2", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 21e44d812..02a4d3141 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.3.1", + "version": "1.3.2", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From eeda86bd5e81fb4e97675fe9bee3d4d15899997f Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Mon, 16 Aug 2021 19:30:33 +0800 Subject: [PATCH 358/377] fix: const enums (#2651) --- src/css/property-descriptors/background-clip.ts | 2 +- src/css/property-descriptors/background-repeat.ts | 2 +- src/css/property-descriptors/border-style.ts | 2 +- src/css/property-descriptors/float.ts | 2 +- src/css/property-descriptors/font-style.ts | 2 +- src/css/property-descriptors/list-style-position.ts | 2 +- src/css/property-descriptors/list-style-type.ts | 2 +- src/css/property-descriptors/overflow.ts | 2 +- src/css/property-descriptors/paint-order.ts | 2 +- src/css/property-descriptors/position.ts | 2 +- src/css/property-descriptors/text-align.ts | 2 +- src/css/property-descriptors/text-transform.ts | 2 +- src/css/property-descriptors/visibility.ts | 2 +- src/css/types/image.ts | 6 +++--- src/render/path.ts | 2 +- 15 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/css/property-descriptors/background-clip.ts b/src/css/property-descriptors/background-clip.ts index 022676dac..fb04e8059 100644 --- a/src/css/property-descriptors/background-clip.ts +++ b/src/css/property-descriptors/background-clip.ts @@ -1,7 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; import {Context} from '../../core/context'; -export enum BACKGROUND_CLIP { +export const enum BACKGROUND_CLIP { BORDER_BOX = 0, PADDING_BOX = 1, CONTENT_BOX = 2 diff --git a/src/css/property-descriptors/background-repeat.ts b/src/css/property-descriptors/background-repeat.ts index e02dcb1cc..f6ace6f57 100644 --- a/src/css/property-descriptors/background-repeat.ts +++ b/src/css/property-descriptors/background-repeat.ts @@ -3,7 +3,7 @@ import {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser'; import {Context} from '../../core/context'; export type BackgroundRepeat = BACKGROUND_REPEAT[]; -export enum BACKGROUND_REPEAT { +export const enum BACKGROUND_REPEAT { REPEAT = 0, NO_REPEAT = 1, REPEAT_X = 2, diff --git a/src/css/property-descriptors/border-style.ts b/src/css/property-descriptors/border-style.ts index 4302f66a5..8561b9ac3 100644 --- a/src/css/property-descriptors/border-style.ts +++ b/src/css/property-descriptors/border-style.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum BORDER_STYLE { +export const enum BORDER_STYLE { NONE = 0, SOLID = 1, DASHED = 2, diff --git a/src/css/property-descriptors/float.ts b/src/css/property-descriptors/float.ts index 134785e49..2280cb87a 100644 --- a/src/css/property-descriptors/float.ts +++ b/src/css/property-descriptors/float.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum FLOAT { +export const enum FLOAT { NONE = 0, LEFT = 1, RIGHT = 2, diff --git a/src/css/property-descriptors/font-style.ts b/src/css/property-descriptors/font-style.ts index 9a9c40ecd..09e221fb0 100644 --- a/src/css/property-descriptors/font-style.ts +++ b/src/css/property-descriptors/font-style.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum FONT_STYLE { +export const enum FONT_STYLE { NORMAL = 'normal', ITALIC = 'italic', OBLIQUE = 'oblique' diff --git a/src/css/property-descriptors/list-style-position.ts b/src/css/property-descriptors/list-style-position.ts index d4fbf744b..ef308fd0f 100644 --- a/src/css/property-descriptors/list-style-position.ts +++ b/src/css/property-descriptors/list-style-position.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum LIST_STYLE_POSITION { +export const enum LIST_STYLE_POSITION { INSIDE = 0, OUTSIDE = 1 } diff --git a/src/css/property-descriptors/list-style-type.ts b/src/css/property-descriptors/list-style-type.ts index 8655001a7..a808eef08 100644 --- a/src/css/property-descriptors/list-style-type.ts +++ b/src/css/property-descriptors/list-style-type.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum LIST_STYLE_TYPE { +export const enum LIST_STYLE_TYPE { NONE = -1, DISC = 0, CIRCLE = 1, diff --git a/src/css/property-descriptors/overflow.ts b/src/css/property-descriptors/overflow.ts index ccb13a823..36d7f5ca6 100644 --- a/src/css/property-descriptors/overflow.ts +++ b/src/css/property-descriptors/overflow.ts @@ -1,7 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; import {Context} from '../../core/context'; -export enum OVERFLOW { +export const enum OVERFLOW { VISIBLE = 0, HIDDEN = 1, SCROLL = 2, diff --git a/src/css/property-descriptors/paint-order.ts b/src/css/property-descriptors/paint-order.ts index 83fade4ee..44f025b7e 100644 --- a/src/css/property-descriptors/paint-order.ts +++ b/src/css/property-descriptors/paint-order.ts @@ -1,7 +1,7 @@ import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {CSSValue, isIdentToken} from '../syntax/parser'; import {Context} from '../../core/context'; -export enum PAINT_ORDER_LAYER { +export const enum PAINT_ORDER_LAYER { FILL, STROKE, MARKERS diff --git a/src/css/property-descriptors/position.ts b/src/css/property-descriptors/position.ts index 8ff8944cb..aeb07db40 100644 --- a/src/css/property-descriptors/position.ts +++ b/src/css/property-descriptors/position.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum POSITION { +export const enum POSITION { STATIC = 0, RELATIVE = 1, ABSOLUTE = 2, diff --git a/src/css/property-descriptors/text-align.ts b/src/css/property-descriptors/text-align.ts index 6fb4d1791..3cee2dbb0 100644 --- a/src/css/property-descriptors/text-align.ts +++ b/src/css/property-descriptors/text-align.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum TEXT_ALIGN { +export const enum TEXT_ALIGN { LEFT = 0, CENTER = 1, RIGHT = 2 diff --git a/src/css/property-descriptors/text-transform.ts b/src/css/property-descriptors/text-transform.ts index fd879beb1..110a2585a 100644 --- a/src/css/property-descriptors/text-transform.ts +++ b/src/css/property-descriptors/text-transform.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum TEXT_TRANSFORM { +export const enum TEXT_TRANSFORM { NONE = 0, LOWERCASE = 1, UPPERCASE = 2, diff --git a/src/css/property-descriptors/visibility.ts b/src/css/property-descriptors/visibility.ts index ede4df1a8..6fa3f8f97 100644 --- a/src/css/property-descriptors/visibility.ts +++ b/src/css/property-descriptors/visibility.ts @@ -1,6 +1,6 @@ import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor'; import {Context} from '../../core/context'; -export enum VISIBILITY { +export const enum VISIBILITY { VISIBLE = 0, HIDDEN = 1, COLLAPSE = 2 diff --git a/src/css/types/image.ts b/src/css/types/image.ts index ffb3a7e83..94ddf26dc 100644 --- a/src/css/types/image.ts +++ b/src/css/types/image.ts @@ -10,7 +10,7 @@ import {radialGradient} from './functions/radial-gradient'; import {prefixRadialGradient} from './functions/-prefix-radial-gradient'; import {Context} from '../../core/context'; -export enum CSSImageType { +export const enum CSSImageType { URL, LINEAR_GRADIENT, RADIAL_GRADIENT @@ -56,12 +56,12 @@ export interface CSSLinearGradientImage extends ICSSGradientImage { type: CSSImageType.LINEAR_GRADIENT; } -export enum CSSRadialShape { +export const enum CSSRadialShape { CIRCLE, ELLIPSE } -export enum CSSRadialExtent { +export const enum CSSRadialExtent { CLOSEST_SIDE, FARTHEST_SIDE, CLOSEST_CORNER, diff --git a/src/render/path.ts b/src/render/path.ts index 9174078d6..71d2c5629 100644 --- a/src/render/path.ts +++ b/src/render/path.ts @@ -1,6 +1,6 @@ import {BezierCurve} from './bezier-curve'; import {Vector} from './vector'; -export enum PathType { +export const enum PathType { VECTOR = 0, BEZIER_CURVE = 1 } From ed577815949b6a565df54f2101cf6f0fb731c290 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 23 Nov 2021 17:17:51 +0800 Subject: [PATCH 359/377] ci: fix macos action runners (#2757) --- .github/workflows/ci.yml | 12 ++++++------ karma.conf.js | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e5126ffd..86aa8393b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,22 +101,22 @@ jobs: - os: macos-latest name: OSX Safari Stable targetBrowser: Safari_Stable - - os: macos-latest + - os: macos-10.15 name: iOS Simulator Safari 12 targetBrowser: Safari_IOS_12 xcode: /Applications/Xcode_10.3.app - - os: macos-latest + - os: macos-10.15 name: iOS Simulator Safari 13 targetBrowser: Safari_IOS_13 - xcode: /Applications/Xcode_11.6_beta.app - - os: macos-latest + xcode: /Applications/Xcode_11.7.app + - os: macos-10.15 name: iOS Simulator Safari 14 targetBrowser: Safari_IOS_14 - xcode: /Applications/Xcode_12_beta.app + xcode: /Applications/Xcode_12.4.app - os: macos-11 name: iOS Simulator Safari 15 targetBrowser: Safari_IOS_15 - xcode: /Applications/Xcode_13.0.app + xcode: /Applications/Xcode_13.2.app - os: windows-latest name: Windows Internet Explorer 9 (Emulated) targetBrowser: IE_9 diff --git a/karma.conf.js b/karma.conf.js index 4c2d17604..f1fd674d2 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -34,19 +34,19 @@ module.exports = function(config) { base: 'MobileSafari', name: 'iPhone 8', platform: 'iOS', - sdk: '13.6' + sdk: '13.7' }, Safari_IOS_14: { base: 'MobileSafari', name: 'iPhone 8', platform: 'iOS', - sdk: '14.0' + sdk: '14.4' }, Safari_IOS_15: { base: 'MobileSafari', name: 'iPhone 8', platform: 'iOS', - sdk: '15.0' + sdk: '15.2' }, SauceLabs_IE9: { base: 'SauceLabs', From fd22a01a3c9e39293f47caaed0c0e13d2dc8170c Mon Sep 17 00:00:00 2001 From: Daniel Santos Date: Tue, 23 Nov 2021 06:32:41 -0300 Subject: [PATCH 360/377] fix: "offsets" text when font is big --- src/render/font-metrics.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/render/font-metrics.ts b/src/render/font-metrics.ts index 3355ed10a..f40555cf6 100644 --- a/src/render/font-metrics.ts +++ b/src/render/font-metrics.ts @@ -27,6 +27,7 @@ export class FontMetrics { container.style.fontSize = fontSize; container.style.margin = '0'; container.style.padding = '0'; + container.style.whiteSpace = 'nowrap'; body.appendChild(container); From ddffaecf6dbb9131e4c89d4b76cdde5494105ad0 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Tue, 23 Nov 2021 17:47:45 +0800 Subject: [PATCH 361/377] add missing changelog entries for 1.0.0 (#2758) --- CHANGELOG.md | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63bf7a277..e4a04be37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -211,9 +211,14 @@ All notable changes to this project will be documented in this file. See [standa * update www deps (#2525) ([2a013e2](https://github.com/niklasvh/html2canvas/commit/2a013e20c814b7dbaea98f54f0bde8f553eb79a2)), closes [#2525](https://github.com/niklasvh/html2canvas/issues/2525) +### feat + +* add support for border-style dashed, dotted, double (#2531) ([72cd528](https://github.com/niklasvh/html2canvas/commit/72cd5284296e4cdb3fe88f2982ec7528604b6618)) + ### fix * opacity with overflow hidden (#2450) ([82b7da5](https://github.com/niklasvh/html2canvas/commit/82b7da558c342e7f53d298bb1d843a5db86c3b21)), closes [#2450](https://github.com/niklasvh/html2canvas/issues/2450) +* top right border radius (#2522) ([ba17267](https://github.com/niklasvh/html2canvas/commit/ba172678f07f962e9f54b398df087e86217d7a13)) ### test @@ -361,16 +366,16 @@ All notable changes to this project will be documented in this file. See [standa * Fix white space appearing on element rendering (Fix #1438) * Reset canvas transform on finish (Fix #1494) -# v1.0.0-alpha.11 - 1.4.2018 - * Fix IE11 member not found error +# v1.0.0-alpha.11 - 1.4.2018 + * Fix IE11 member not found error * Support blob image resources in non-foreignObjectRendering mode -# v1.0.0-alpha.10 - 15.2.2018 +# v1.0.0-alpha.10 - 15.2.2018 * Re-introduce `onclone` option (Fix #1434) * Add `ignoreElements` predicate function option * Fix version console logging -# v1.0.0-alpha.9 - 7.1.2018 +# v1.0.0-alpha.9 - 7.1.2018 * Fix dynamic style sheets * Fix > 50% border-radius values @@ -382,7 +387,7 @@ All notable changes to this project will be documented in this file. See [standa * Fix form input rendering (#1338) * Improve word line breaking algorithm -# v1.0.0-alpha.6 - 28.12.2017 +# v1.0.0-alpha.6 - 28.12.2017 * Fix list-style: none (#1340) * Extend supported values for pseudo element content @@ -392,7 +397,7 @@ All notable changes to this project will be documented in this file. See [standa * Fix overflow: auto * Added support for rendering list-style - v1.0.0-alpha.4 - 12.12.2017 + v1.0.0-alpha.4 - 12.12.2017 * Fix rendering with multiple fonts defined (Fix #796) * Add support for radial-gradients * Fix logging option (#1302) @@ -414,8 +419,8 @@ All notable changes to this project will be documented in this file. See [standa ##### Breaking Changes ##### * Remove deprecated onrendered callback, calling `html2canvas` returns a `Promise` * Removed option `type`, same results can be achieved by assigning `x`, `y`, `scrollX`, `scrollY`, `width` and `height` properties. - - ## New featues / fixes + + ## New featues / fixes * Add support for scaling canvas (defaults to device pixel ratio) * Add support for multiple text-shadows * Add support for multiple text-decorations @@ -424,7 +429,7 @@ All notable changes to this project will be documented in this file. See [standa * Correctly handle px and percentage values in linear-gradients * Correctly support all angle types for linear-gradients * Add support for multiple values for background-repeat, background-position and background-size - + # v0.5.0-beta4 - 23.1.2016 * Fix logger requiring access to window object * Derequire browserify build @@ -444,11 +449,11 @@ All notable changes to this project will be documented in this file. See [standa * Fix transparent colors breaking gradients * Preserve scrolling positions on render -# v0.5.0-alpha2 - 3.2.2015 +# v0.5.0-alpha2 - 3.2.2015 * Switch to using browserify for building * Fix (#517) Chrome stretches background images with 'auto' or single attributes -# v0.5.0-alpha - 19.1.2015 +# v0.5.0-alpha - 19.1.2015 * Complete rewrite of library * Switched interface to return Promise * Uses hidden iframe window to perform rendering, allowing async rendering and doesn't force the viewport to be scrolled to the top anymore. @@ -459,14 +464,14 @@ All notable changes to this project will be documented in this file. See [standa * Changed format for proxy requests, permitting binary responses with CORS headers as well * Fixed many layering issues (see z-index tests) -# v0.4.1 - 7.9.2013 +# v0.4.1 - 7.9.2013 * Added support for bower * Improved z-index ordering * Basic implementation for CSS transformations * Fixed inline text in top element * Basic implementation for text-shadow -# v0.4.0 - 30.1.2013 +# v0.4.0 - 30.1.2013 * Added rendering tests with webdriver * Switched to using grunt for building * Removed support for IE<9, including any FlashCanvas bits @@ -476,7 +481,7 @@ All notable changes to this project will be documented in this file. See [standa * Support for placeholder rendering * Reformatted all tests to small units to test specific features -# v0.3.4 - 26.6.2012 +# v0.3.4 - 26.6.2012 * Removed (last?) jQuery dependencies (niklasvh) * SVG-powered rendering (niklasvh) From 101c32ed718bdf60874231128a5535230b83c61e Mon Sep 17 00:00:00 2001 From: CI Date: Tue, 23 Nov 2021 10:09:40 +0000 Subject: [PATCH 362/377] chore(release): 1.3.3 --- CHANGELOG.md | 14 ++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4a04be37..5d83c478d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.3.3](https://github.com/niklasvh/html2canvas/compare/v1.3.2...v1.3.3) (2021-11-23) + + +### ci + +* fix macos action runners (#2757) ([ed57781](https://github.com/niklasvh/html2canvas/commit/ed577815949b6a565df54f2101cf6f0fb731c290)), closes [#2757](https://github.com/niklasvh/html2canvas/issues/2757) + +### fix + +* "offsets" text when font is big ([fd22a01](https://github.com/niklasvh/html2canvas/commit/fd22a01a3c9e39293f47caaed0c0e13d2dc8170c)) +* const enums (#2651) ([eeda86b](https://github.com/niklasvh/html2canvas/commit/eeda86bd5e81fb4e97675fe9bee3d4d15899997f)), closes [#2651](https://github.com/niklasvh/html2canvas/issues/2651) + + + ## [1.3.2](https://github.com/niklasvh/html2canvas/compare/v1.3.1...v1.3.2) (2021-08-15) diff --git a/package-lock.json b/package-lock.json index 0f86d81b0..8448519ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.3.2", + "version": "1.3.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 02a4d3141..d540ccac9 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.3.2", + "version": "1.3.3", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From d9222075daaed08884491b0563fc899ee0ced731 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 29 Dec 2021 21:02:16 +0800 Subject: [PATCH 363/377] ci: add ios 15.0 testing (#2780) --- .github/workflows/ci.yml | 4 ++++ karma.conf.js | 8 +++++++- www/.gitignore | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86aa8393b..dac4e3ee3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,6 +113,10 @@ jobs: name: iOS Simulator Safari 14 targetBrowser: Safari_IOS_14 xcode: /Applications/Xcode_12.4.app + - os: macos-11 + name: iOS Simulator Safari 15.0 + targetBrowser: Safari_IOS_15_0 + xcode: /Applications/Xcode_13.0.app - os: macos-11 name: iOS Simulator Safari 15 targetBrowser: Safari_IOS_15 diff --git a/karma.conf.js b/karma.conf.js index f1fd674d2..526deacdc 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -42,9 +42,15 @@ module.exports = function(config) { platform: 'iOS', sdk: '14.4' }, + Safari_IOS_15_0: { + base: 'MobileSafari', + name: 'iPhone 13', + platform: 'iOS', + sdk: '15.0' + }, Safari_IOS_15: { base: 'MobileSafari', - name: 'iPhone 8', + name: 'iPhone 13', platform: 'iOS', sdk: '15.2' }, diff --git a/www/.gitignore b/www/.gitignore index e78c00766..fe89f879d 100644 --- a/www/.gitignore +++ b/www/.gitignore @@ -9,3 +9,5 @@ yarn-error.log src/results.json static/tests/preview.js src/preview.js +.docusaurus +build/ From ba2b1cd8e9a9d7932675d7abffce1526a609e769 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Wed, 29 Dec 2021 22:09:32 +0800 Subject: [PATCH 364/377] fix: ios 15 font rendering crash (#2645) --- src/render/canvas/canvas-renderer.ts | 11 ++++++++++- tests/reftests/text/lang/chinese.html | 9 +++++++++ tests/reftests/text/text.html | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 48e731524..077ddd086 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -162,7 +162,7 @@ export class CanvasRenderer extends Renderer { const fontVariant = styles.fontVariant .filter((variant) => variant === 'normal' || variant === 'small-caps') .join(''); - const fontFamily = styles.fontFamily.join(', '); + const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', '); const fontSize = isDimensionToken(styles.fontSize) ? `${styles.fontSize.number}${styles.fontSize.unit}` : `${styles.fontSize.number}px`; @@ -947,3 +947,12 @@ const canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => { return 'left'; } }; + +// see https://github.com/niklasvh/html2canvas/pull/2645 +const iOSBrokenFonts = ['-apple-system', 'system-ui']; + +const fixIOSSystemFonts = (fontFamilies: string[]): string[] => { + return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) + ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1) + : fontFamilies; +}; diff --git a/tests/reftests/text/lang/chinese.html b/tests/reftests/text/lang/chinese.html index da5c696cb..9aed4d29a 100644 --- a/tests/reftests/text/lang/chinese.html +++ b/tests/reftests/text/lang/chinese.html @@ -11,6 +11,13 @@ float: left; } + .apple-system { + font-family: -apple-system, Arial; + } + + .system-ui { + font-family: system-ui, Arial; + } @@ -32,5 +39,7 @@

            〔13〕 法捷耶夫(一九○一——一九五六),苏联名作家。他所作的小说《毁灭》于一九二七年出版,内容是描写苏联国内战争时期由苏联远东滨海边区工人、农民和革命知识分子所组成的一支游击队同国内反革命白卫军以及日本武装干涉军进行斗争的故事。这部小说曾由鲁迅译为汉文。

            〔14〕 见鲁迅《集外集·自嘲》(《鲁迅全集》第7卷,人民文学出版社1981年版,第147页)。

        +
        中文
        +
        中文
        diff --git a/tests/reftests/text/text.html b/tests/reftests/text/text.html index ae1f46f5a..66e402123 100644 --- a/tests/reftests/text/text.html +++ b/tests/reftests/text/text.html @@ -149,6 +149,6 @@

        <h3> misc text alignments

        [AB / CD]
        Emojis 🤷🏾‍♂️👨‍👩‍👧‍👦 :)
        -
        Emojis with letter-spacing 🤷🏾‍♂️👨‍👩‍👧‍👦 :)
        +
        Emojis with letter-spacing 🤷🏾‍♂️👨‍👩‍👧‍👦 :) ❤️❤️❤️👨‍❤️‍💋‍👨👨‍❤️‍👨
        From 04787ee88a1a380a57de21fff67d64702571f9c6 Mon Sep 17 00:00:00 2001 From: CI Date: Wed, 29 Dec 2021 14:11:55 +0000 Subject: [PATCH 365/377] chore(release): 1.3.4 --- CHANGELOG.md | 13 +++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d83c478d..fd0e1e50b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.3.4](https://github.com/niklasvh/html2canvas/compare/v1.3.3...v1.3.4) (2021-12-29) + + +### ci + +* add ios 15.0 testing (#2780) ([d922207](https://github.com/niklasvh/html2canvas/commit/d9222075daaed08884491b0563fc899ee0ced731)), closes [#2780](https://github.com/niklasvh/html2canvas/issues/2780) + +### fix + +* ios 15 font rendering crash (#2645) ([ba2b1cd](https://github.com/niklasvh/html2canvas/commit/ba2b1cd8e9a9d7932675d7abffce1526a609e769)), closes [#2645](https://github.com/niklasvh/html2canvas/issues/2645) + + + ## [1.3.3](https://github.com/niklasvh/html2canvas/compare/v1.3.2...v1.3.3) (2021-11-23) diff --git a/package-lock.json b/package-lock.json index 8448519ec..e29689945 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.3.3", + "version": "1.3.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index d540ccac9..f2fd9735b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.3.3", + "version": "1.3.4", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 1cc853a3186853eaca00af060f651697dc3497a9 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Fri, 31 Dec 2021 15:30:18 +0800 Subject: [PATCH 366/377] fix: reduce SLICE_STACK_SIZE to 50k (#2784) --- src/css/syntax/tokenizer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/syntax/tokenizer.ts b/src/css/syntax/tokenizer.ts index e05084740..11bbb03fd 100644 --- a/src/css/syntax/tokenizer.ts +++ b/src/css/syntax/tokenizer.ts @@ -657,7 +657,7 @@ export class Tokenizer { } private consumeStringSlice(count: number): string { - const SLICE_STACK_SIZE = 60000; + const SLICE_STACK_SIZE = 50000; let value = ''; while (count > 0) { const amount = Math.min(SLICE_STACK_SIZE, count); From 74696faf47c07b48b9c9587db0b999da1c08a8be Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 1 Jan 2022 01:57:17 +0800 Subject: [PATCH 367/377] fix: adopted stylesheets (#2785) --- src/dom/document-cloner.ts | 59 +++++++++++++++---- src/dom/node-parser.ts | 2 + .../autonomous-custom-element.js | 4 ++ .../reftests/webcomponents/webcomponents.html | 7 ++- 4 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/dom/document-cloner.ts b/src/dom/document-cloner.ts index 796e5579f..d2fd930b8 100644 --- a/src/dom/document-cloner.ts +++ b/src/dom/document-cloner.ts @@ -2,12 +2,14 @@ import {Bounds} from '../css/layout/bounds'; import { isBodyElement, isCanvasElement, + isCustomElement, isElementNode, isHTMLElementNode, isIFrameElement, isImageElement, isScriptElement, isSelectElement, + isSlotElement, isStyleElement, isSVGElementNode, isTextareaElement, @@ -63,7 +65,7 @@ export class DocumentCloner { throw new Error('Cloned element does not have an owner document'); } - this.documentElement = this.cloneNode(element.ownerDocument.documentElement) as HTMLElement; + this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement; } toIFrame(ownerDocument: Document, windowSize: Bounds): Promise { @@ -160,6 +162,17 @@ export class DocumentCloner { } } + if (isCustomElement(clone)) { + return this.createCustomElementClone(clone); + } + + return clone; + } + + createCustomElementClone(node: HTMLElement): HTMLElement { + const clone = document.createElement('html2canvascustomelement'); + copyCSSStyles(node.style, clone); + return clone; } @@ -231,7 +244,20 @@ export class DocumentCloner { return clonedCanvas; } - cloneNode(node: Node): Node { + appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void { + if ( + !isElementNode(child) || + (!isScriptElement(child) && + !child.hasAttribute(IGNORE_ATTRIBUTE) && + (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child))) + ) { + if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) { + clone.appendChild(this.cloneNode(child, copyStyles)); + } + } + } + + cloneNode(node: Node, copyStyles: boolean): Node { if (isTextNode(node)) { return document.createTextNode(node.data); } @@ -260,16 +286,22 @@ export class DocumentCloner { const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE); - for (let child = node.firstChild; child; child = child.nextSibling) { - if ( - !isElementNode(child) || - (!isScriptElement(child) && - !child.hasAttribute(IGNORE_ATTRIBUTE) && - (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child))) - ) { - if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) { - clone.appendChild(this.cloneNode(child)); + if (isCustomElement(node)) { + copyStyles = true; + } + + for ( + let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; + child; + child = child.nextSibling + ) { + if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') { + const assignedNodes = child.assignedNodes() as ChildNode[]; + if (assignedNodes.length) { + assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles)); } + } else { + this.appendChildNode(clone, child, copyStyles); } } @@ -284,7 +316,10 @@ export class DocumentCloner { this.counters.pop(counters); - if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) { + if ( + (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) || + copyStyles + ) { copyCSSStyles(style, clone); } diff --git a/src/dom/node-parser.ts b/src/dom/node-parser.ts index 260974e2d..0bae31310 100644 --- a/src/dom/node-parser.ts +++ b/src/dom/node-parser.ts @@ -131,3 +131,5 @@ export const isScriptElement = (node: Element): node is HTMLScriptElement => nod export const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA'; export const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT'; export const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT'; +// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name +export const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0; diff --git a/tests/reftests/webcomponents/autonomous-custom-element.js b/tests/reftests/webcomponents/autonomous-custom-element.js index 659cb568a..80608f920 100644 --- a/tests/reftests/webcomponents/autonomous-custom-element.js +++ b/tests/reftests/webcomponents/autonomous-custom-element.js @@ -40,6 +40,10 @@ class AutonomousCustomElement extends HTMLElement { wrapper.appendChild(img); wrapper.appendChild(info); } + + connectedCallback() { + this.shadowRoot.adoptedStyleSheets = [sheet]; + } } customElements.define('autonomous-custom-element', AutonomousCustomElement); diff --git a/tests/reftests/webcomponents/webcomponents.html b/tests/reftests/webcomponents/webcomponents.html index cfa59f110..c4245f568 100644 --- a/tests/reftests/webcomponents/webcomponents.html +++ b/tests/reftests/webcomponents/webcomponents.html @@ -3,10 +3,11 @@ Web components tests + -
        From 0476d065158c33d2020a9f602b3043e5e2f90c75 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 1 Jan 2022 13:07:52 +0800 Subject: [PATCH 368/377] fix: ios text wrapping with 0 width rect (#2786) --- src/css/layout/bounds.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/layout/bounds.ts b/src/css/layout/bounds.ts index 43d1bea1c..2f1c15009 100644 --- a/src/css/layout/bounds.ts +++ b/src/css/layout/bounds.ts @@ -17,7 +17,7 @@ export class Bounds { } static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds { - const domRect = domRectList[0]; + const domRect = Array.from(domRectList).find(rect => rect.width !== 0); return domRect ? new Bounds( domRect.x + context.windowBounds.left, From 6521a487d78172f7179f7c973c1a3af40eb92009 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sat, 1 Jan 2022 21:22:31 +0800 Subject: [PATCH 369/377] feat: use native text segmenter where available (#2782) --- src/core/features.ts | 7 ++++ src/css/layout/bounds.ts | 2 +- src/css/layout/text.ts | 51 ++++++++++++++++++++++------ src/render/canvas/canvas-renderer.ts | 9 +++-- 4 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/core/features.ts b/src/core/features.ts index 78514bdd9..64e8aeab9 100644 --- a/src/core/features.ts +++ b/src/core/features.ts @@ -211,5 +211,12 @@ export const FEATURES = { const value = 'withCredentials' in new XMLHttpRequest(); Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value}); return value; + }, + get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean { + 'use strict'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter); + Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value}); + return value; } }; diff --git a/src/css/layout/bounds.ts b/src/css/layout/bounds.ts index 2f1c15009..59da655f5 100644 --- a/src/css/layout/bounds.ts +++ b/src/css/layout/bounds.ts @@ -17,7 +17,7 @@ export class Bounds { } static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds { - const domRect = Array.from(domRectList).find(rect => rect.width !== 0); + const domRect = Array.from(domRectList).find((rect) => rect.width !== 0); return domRect ? new Bounds( domRect.x + context.windowBounds.left, diff --git a/src/css/layout/text.ts b/src/css/layout/text.ts index 59f0bde27..0c6801932 100644 --- a/src/css/layout/text.ts +++ b/src/css/layout/text.ts @@ -28,15 +28,24 @@ export const parseTextBounds = ( textList.forEach((text) => { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { - if (!FEATURES.SUPPORT_WORD_BREAKING) { - textBounds.push( - new TextBounds( - text, - Bounds.fromDOMRectList(context, createRange(node, offset, text.length).getClientRects()) - ) - ); + const clientRects = createRange(node, offset, text.length).getClientRects(); + if (clientRects.length > 1) { + const subSegments = segmentGraphemes(text); + let subOffset = 0; + subSegments.forEach((subSegment) => { + textBounds.push( + new TextBounds( + subSegment, + Bounds.fromDOMRectList( + context, + createRange(node, subOffset + offset, subSegment.length).getClientRects() + ) + ) + ); + subOffset += subSegment.length; + }); } else { - textBounds.push(new TextBounds(text, getRangeBounds(context, node, offset, text.length))); + textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects))); } } else { const replacementNode = node.splitText(text.length); @@ -82,12 +91,32 @@ const createRange = (node: Text, offset: number, length: number): Range => { return range; }; -const getRangeBounds = (context: Context, node: Text, offset: number, length: number): Bounds => { - return Bounds.fromClientRect(context, createRange(node, offset, length).getBoundingClientRect()); +export const segmentGraphemes = (value: string): string[] => { + if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'}); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment); + } + + return splitGraphemes(value); +}; + +const segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => { + if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const segmenter = new (Intl as any).Segmenter(void 0, { + granularity: 'word' + }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment); + } + + return breakWords(value, styles); }; const breakText = (value: string, styles: CSSParsedDeclaration): string[] => { - return styles.letterSpacing !== 0 ? splitGraphemes(value) : breakWords(value, styles); + return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles); }; // https://drafts.csswg.org/css-text/#word-separator diff --git a/src/render/canvas/canvas-renderer.ts b/src/render/canvas/canvas-renderer.ts index 077ddd086..6efb648bf 100644 --- a/src/render/canvas/canvas-renderer.ts +++ b/src/render/canvas/canvas-renderer.ts @@ -2,7 +2,7 @@ import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking- import {asString, Color, isTransparent} from '../../css/types/color'; import {ElementContainer, FLAGS} from '../../dom/element-container'; import {BORDER_STYLE} from '../../css/property-descriptors/border-style'; -import {CSSParsedDeclaration} from '../../css/index'; +import {CSSParsedDeclaration} from '../../css'; import {TextContainer} from '../../dom/text-container'; import {Path, transformPath} from '../path'; import {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip'; @@ -18,12 +18,12 @@ import { } from '../border'; import {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background'; import {isDimensionToken} from '../../css/syntax/parser'; -import {TextBounds} from '../../css/layout/text'; +import {segmentGraphemes, TextBounds} from '../../css/layout/text'; import {ImageElementContainer} from '../../dom/replaced-elements/image-element-container'; import {contentBox} from '../box-sizing'; import {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container'; import {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container'; -import {ReplacedElementContainer} from '../../dom/replaced-elements/index'; +import {ReplacedElementContainer} from '../../dom/replaced-elements'; import {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects'; import {contains} from '../../core/bitwise'; import {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient'; @@ -44,7 +44,6 @@ import {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order'; import {Renderer} from '../renderer'; import {Context} from '../../core/context'; import {DIRECTION} from '../../css/property-descriptors/direction'; -import {splitGraphemes} from 'text-segmentation'; export type RenderConfigurations = RenderOptions & { backgroundColor: Color | null; @@ -149,7 +148,7 @@ export class CanvasRenderer extends Renderer { if (letterSpacing === 0) { this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { - const letters = splitGraphemes(text.text); + const letters = segmentGraphemes(text.text); letters.reduce((left, letter) => { this.ctx.fillText(letter, left, text.bounds.top + baseline); From 9fda3e1ede55639bfafd0657d6ead72f68f32395 Mon Sep 17 00:00:00 2001 From: CI Date: Sat, 1 Jan 2022 15:08:48 +0000 Subject: [PATCH 370/377] chore(release): 1.4.0 --- CHANGELOG.md | 15 +++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd0e1e50b..b15c3a457 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.4.0](https://github.com/niklasvh/html2canvas/compare/v1.3.4...v1.4.0) (2022-01-01) + + +### feat + +* use native text segmenter where available (#2782) ([6521a48](https://github.com/niklasvh/html2canvas/commit/6521a487d78172f7179f7c973c1a3af40eb92009)), closes [#2782](https://github.com/niklasvh/html2canvas/issues/2782) + +### fix + +* adopted stylesheets (#2785) ([74696fa](https://github.com/niklasvh/html2canvas/commit/74696faf47c07b48b9c9587db0b999da1c08a8be)), closes [#2785](https://github.com/niklasvh/html2canvas/issues/2785) +* ios text wrapping with 0 width rect (#2786) ([0476d06](https://github.com/niklasvh/html2canvas/commit/0476d065158c33d2020a9f602b3043e5e2f90c75)), closes [#2786](https://github.com/niklasvh/html2canvas/issues/2786) +* reduce SLICE_STACK_SIZE to 50k (#2784) ([1cc853a](https://github.com/niklasvh/html2canvas/commit/1cc853a3186853eaca00af060f651697dc3497a9)), closes [#2784](https://github.com/niklasvh/html2canvas/issues/2784) + + + ## [1.3.4](https://github.com/niklasvh/html2canvas/compare/v1.3.3...v1.3.4) (2021-12-29) diff --git a/package-lock.json b/package-lock.json index e29689945..ab3a5e0bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "html2canvas", - "version": "1.3.4", + "version": "1.4.0", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index f2fd9735b..09fea9d28 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "module": "dist/html2canvas.esm.js", "typings": "dist/types/index.d.ts", "browser": "dist/html2canvas.js", - "version": "1.3.4", + "version": "1.4.0", "author": { "name": "Niklas von Hertzen", "email": "niklasvh@gmail.com", From 46db86755f064828559a4b0b37310f3ae94f5494 Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 2 Jan 2022 16:08:10 +0800 Subject: [PATCH 371/377] fix: source maps (#2787) --- rollup.config.ts | 2 +- tests/server.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rollup.config.ts b/rollup.config.ts index 1f85df452..13bf9a6d5 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -30,7 +30,7 @@ export default { // Allow json resolution json(), // Compile TypeScript files - typescript(), + typescript({ sourceMap: true, inlineSources: true }), // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) commonjs({ include: 'node_modules/**' diff --git a/tests/server.ts b/tests/server.ts index b9f6ca6c0..7ed90e30b 100644 --- a/tests/server.ts +++ b/tests/server.ts @@ -12,7 +12,7 @@ const mkdirp = require('mkdirp'); export const app = express(); app.use('/', serveIndex(path.resolve(__dirname, '../'), {icons: true})); -app.use('/', express.static(path.resolve(__dirname, '../'))); +app.use([/^\/src($|\/)/, '/'], express.static(path.resolve(__dirname, '../'))); export const corsApp = express(); corsApp.use('/proxy', proxy()); From 181d1b1103910d6e1b5277d5c007fc5e3006c6bf Mon Sep 17 00:00:00 2001 From: Niklas von Hertzen Date: Sun, 2 Jan 2022 16:14:27 +0800 Subject: [PATCH 372/377] feat: add support for